|
50 | 50 |
|
51 | 51 | return { exists: true, reaction: null }
|
52 | 52 |
|
| 53 | + - name: Check User Permissions |
| 54 | + uses: actions/github-script@v7 |
| 55 | + id: check-permissions |
| 56 | + with: |
| 57 | + script: | |
| 58 | + const user = context.payload.sender.login |
| 59 | + console.log(`Validate user: ${user}`) |
| 60 | +
|
| 61 | + let hasTriagePermission = false |
| 62 | + try { |
| 63 | + const { data } = await github.rest.repos.getCollaboratorPermissionLevel({ |
| 64 | + owner: context.repo.owner, |
| 65 | + repo: context.repo.repo, |
| 66 | + username: user, |
| 67 | + }); |
| 68 | + hasTriagePermission = ['triage', 'write', 'admin'].some(p => data.user.permissions[p]); |
| 69 | + } catch (e) { |
| 70 | + console.warn(e) |
| 71 | + } |
| 72 | +
|
| 73 | + if (allowed) { |
| 74 | + console.log('User is allowed. Adding +1 reaction.') |
| 75 | + await github.rest.reactions.createForIssueComment({ |
| 76 | + owner: context.repo.owner, |
| 77 | + repo: context.repo.repo, |
| 78 | + comment_id: context.payload.comment.id, |
| 79 | + content: '+1', |
| 80 | + }) |
| 81 | + } else { |
| 82 | + console.log('User is not allowed. Adding -1 reaction.') |
| 83 | + await github.rest.reactions.createForIssueComment({ |
| 84 | + owner: context.repo.owner, |
| 85 | + repo: context.repo.repo, |
| 86 | + comment_id: context.payload.comment.id, |
| 87 | + content: '-1', |
| 88 | + }) |
| 89 | + throw new Error('User does not have the necessary permissions.') |
| 90 | + } |
| 91 | +
|
53 | 92 | - name: Generate Token
|
54 | 93 | id: generate-token
|
55 | 94 | uses: tibdex/github-app-token@v2
|
@@ -143,45 +182,6 @@ jobs:
|
143 | 182 | console.log('Removed "rocket" reaction.')
|
144 | 183 | }
|
145 | 184 |
|
146 |
| - - name: Check User Permissions |
147 |
| - uses: actions/github-script@v7 |
148 |
| - id: check-permissions |
149 |
| - with: |
150 |
| - script: | |
151 |
| - const user = context.payload.sender.login |
152 |
| - console.log(`Validate user: ${user}`) |
153 |
| -
|
154 |
| - let hasTriagePermission = false |
155 |
| - try { |
156 |
| - const { data } = await github.rest.repos.getCollaboratorPermissionLevel({ |
157 |
| - owner: context.repo.owner, |
158 |
| - repo: context.repo.repo, |
159 |
| - username: user, |
160 |
| - }); |
161 |
| - hasTriagePermission = ['triage', 'write', 'admin'].some(p => data.user.permissions[p]); |
162 |
| - } catch (e) { |
163 |
| - console.warn(e) |
164 |
| - } |
165 |
| -
|
166 |
| - if (allowed) { |
167 |
| - console.log('User is allowed. Adding +1 reaction.') |
168 |
| - await github.rest.reactions.createForIssueComment({ |
169 |
| - owner: context.repo.owner, |
170 |
| - repo: context.repo.repo, |
171 |
| - comment_id: context.payload.comment.id, |
172 |
| - content: '+1', |
173 |
| - }) |
174 |
| - } else { |
175 |
| - console.log('User is not allowed. Adding -1 reaction.') |
176 |
| - await github.rest.reactions.createForIssueComment({ |
177 |
| - owner: context.repo.owner, |
178 |
| - repo: context.repo.repo, |
179 |
| - comment_id: context.payload.comment.id, |
180 |
| - content: '-1', |
181 |
| - }) |
182 |
| - throw new Error('User does not have the necessary permissions.') |
183 |
| - } |
184 |
| -
|
185 | 185 | - name: Trigger Downstream Workflow
|
186 | 186 | uses: actions/github-script@v7
|
187 | 187 | id: trigger
|
|
0 commit comments