mirror of
https://github.com/sysadminsmedia/homebox.git
synced 2025-12-31 01:57:26 +01:00
50 lines
1.6 KiB
YAML
50 lines
1.6 KiB
YAML
name: Issue Gatekeeper
|
|
|
|
permissions:
|
|
issues: write
|
|
|
|
on:
|
|
issues:
|
|
types: [ opened ]
|
|
|
|
jobs:
|
|
check-permissions:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Verify Internal Template Use
|
|
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
|
|
with:
|
|
script: |
|
|
const { owner, repo } = context.repo;
|
|
const issue_number = context.issue.number;
|
|
const actor = context.payload.sender.login;
|
|
|
|
// 1. Get user permission level
|
|
const { data: perms } = await github.rest.repos.getCollaboratorPermissionLevel({
|
|
owner,
|
|
repo,
|
|
username: actor
|
|
});
|
|
|
|
const isMember = ['admin', 'write'].includes(perms.permission);
|
|
const body = context.payload.issue.body || "";
|
|
|
|
// 2. Check if they used the internal template (or if the issue is blank)
|
|
// We detect this by checking for our specific template string or the 'internal' label
|
|
const usedInternal = context.payload.issue.labels.some(l => l.name === 'internal');
|
|
|
|
if (usedInternal && !isMember) {
|
|
await github.rest.issues.createComment({
|
|
owner,
|
|
repo,
|
|
issue_number,
|
|
body: `@${actor}, the "Internal" template is restricted to project members. Please use one of the standard bug or feature templates for this repository.`
|
|
});
|
|
|
|
await github.rest.issues.update({
|
|
owner,
|
|
repo,
|
|
issue_number,
|
|
state: 'closed'
|
|
});
|
|
} |