Skip to content

Commit d4904b7

Browse files
committed
fix security issues
1 parent a194908 commit d4904b7

File tree

1 file changed

+43
-4
lines changed

1 file changed

+43
-4
lines changed

.github/workflows/assign-xls-number.yml

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,54 @@
11
name: Assign XLS Number
22

33
on:
4-
pull_request_review:
5-
types: [submitted]
4+
pull_request_target:
5+
types: [opened, synchronize, reopened, ready_for_review]
66

77
jobs:
8+
check-approval:
9+
runs-on: ubuntu-latest
10+
name: Check for Write+ Approval
11+
outputs:
12+
has_write_approval: ${{ steps.check-approval.outputs.has_write_approval }}
13+
steps:
14+
- name: Check for write+ approval
15+
id: check-approval
16+
uses: actions/github-script@v7
17+
with:
18+
script: |
19+
const { data: reviews } = await github.rest.pulls.listReviews({
20+
owner: context.repo.owner,
21+
repo: context.repo.repo,
22+
pull_number: context.payload.pull_request.number
23+
});
24+
25+
// Get only approved reviews
26+
const approvals = reviews.filter(review => review.state === 'APPROVED');
27+
28+
// Check each approver's permission level
29+
for (const approval of approvals) {
30+
const { data: permissionLevel } = await github.rest.repos.getCollaboratorPermissionLevel({
31+
owner: context.repo.owner,
32+
repo: context.repo.repo,
33+
username: approval.user.login
34+
});
35+
36+
const permission = permissionLevel.permission;
37+
if (['write', 'admin', 'maintain'].includes(permission)) {
38+
console.log(`Found write+ approval from ${approval.user.login} (${permission})`);
39+
core.setOutput('has_write_approval', 'true');
40+
return;
41+
}
42+
}
43+
44+
console.log('No write+ approval found');
45+
core.setOutput('has_write_approval', 'false');
46+
847
assign-xls-number:
948
runs-on: ubuntu-latest
1049
name: Assign XLS Number to Draft
11-
# Only run when the review is an approval
12-
if: github.event.review.state == 'approved'
50+
needs: check-approval
51+
if: needs.check-approval.outputs.has_write_approval == 'true'
1352
permissions:
1453
pull-requests: write
1554
issues: write

0 commit comments

Comments
 (0)