1212 type : string
1313
1414jobs :
15- check-permission :
15+ check :
1616 runs-on : ubuntu-latest
1717 steps :
1818 - name : Logging
@@ -32,20 +32,42 @@ jobs:
3232 echo "USER=${{ github.triggering_actor }}" >> $GITHUB_ENV
3333 fi
3434
35- - name : get user permission
36- id : checkAccess
35+ - name : get user (${{ env.USER }}) permission
36+ id : check_access
3737 uses : actions-cool/check-user-permission@v2
3838 with :
3939 require : write
4040 username : ${{ env.USER }}
4141 env :
4242 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
4343
44- - name : check user permission (non-PR)
45- if : env.USER != 'dependabot[bot]' && env.USER != 'renovate[bot]' && steps.checkAccess.outputs.require-result == 'false'
44+ - name : get whether triggering_actor (${{ github.triggering_actor }}) is a contributor
45+ id : check_triggering_actor
46+ uses : actions-cool/check-user-permission@v2
47+ with :
48+ require : write
49+ check-contributor : true
50+ username : ${{ github.triggering_actor }}
51+ env :
52+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
53+
54+ - name : Check permissions
55+ # If
56+ # - this is triggered by a PR (send by someone else than dependabot or renovate), and
57+ # - author association is neither 'COLLABORATOR' nor 'OWNER', and
58+ # - triggering actor is not a contributor, then exit with an error.
59+ if : |
60+ inputs.pr_user_login != '' &&
61+ inputs.pr_user_login != 'dependabot[bot]' &&
62+ inputs.pr_user_login != 'renovate[bot]' &&
63+ github.event.pull_request.author_association != 'COLLABORATOR' &&
64+ github.event.pull_request.author_association != 'OWNER' &&
65+ steps.check_triggering_actor.outputs.check-result == 'false'
4666 run : |
47- echo "${{ env.USER }} does not have permissions on this repo."
48- echo "require-resuilt is ${{ steps.checkAccess .outputs.require -result }}"
49- echo "Current permission level is ${{ steps.checkAccess .outputs.user-permission }}"
67+ echo "${{ inputs.pr_user_login }} does not have permissions on this repo."
68+ echo "Contributor check-result for triggering_actor: ${{ github.triggering_actor }} is ${{ steps.check_triggering_actor .outputs.check -result }}"
69+ echo "Current permission level is ${{ steps.check_access .outputs.user-permission }}"
5070 echo "Job originally triggered by ${{ github.actor }}"
71+ echo "Author association is ${{ github.event.pull_request.author_association }}"
5172 exit 1
73+
0 commit comments