1212 type : string
1313
1414jobs :
15- check-permission :
15+ check :
1616 runs-on : ubuntu-latest
1717 steps :
1818 - name : Logging
@@ -25,33 +25,49 @@ jobs:
2525 echo "github.triggering_actor ${{ github.triggering_actor }}"
2626 echo "github.actor ${{ github.actor }}"
2727
28- - name : get user permission
29- id : checkAccess
28+ - run : |
29+ if [[ ! -z "${{ inputs.pr_user_login }}" ]]; then
30+ echo "USER=${{ inputs.pr_user_login }}" >> $GITHUB_ENV
31+ else
32+ echo "USER=${{ github.triggering_actor }}" >> $GITHUB_ENV
33+ fi
34+
35+ - name : get user (${{ env.USER }}) permission
36+ id : check_access
3037 uses : actions-cool/check-user-permission@v2
3138 with :
3239 require : write
33- username : ${{ github.triggering_actor }}
40+ username : ${{ env.USER }}
3441 env :
3542 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
3643
37- - name : check user permission (non-PR)
38- if : ${{ inputs.pr_user_login }} == '' && steps.checkAccess.outputs.require-result == 'false'
39- run : |
40- echo "${{ github.triggering_actor }} does not have permissions on this repo."
41- echo "Current permission level is ${{ steps.checkAccess.outputs.user-permission }}"
42- echo "Job originally triggered by ${{ github.actor }}"
43- exit 1
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 }}
4453
45- - name : check user permission
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.
4659 if : |
47- !(
48- (${{ inputs.pr_user_login }} == 'dependabot[bot]' && github.triggering_actor != 'dependabot[bot]') ||
49- (${{ inputs.pr_user_login }} == 'renovate[bot]' && github.triggering_actor != 'renovate[bot]')
50- )
51- &&
52- steps.checkAccess .outputs.require -result == 'false'
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'
5366 run : |
54- echo "${{ github.triggering_actor }} does not have permissions on this repo."
55- 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 }}"
5670 echo "Job originally triggered by ${{ github.actor }}"
71+ echo "Author association is ${{ github.event.pull_request.author_association }}"
5772 exit 1
73+
0 commit comments