refactor: rename allow-permissions (#48)

* refactor: rename allow-permissions

* up
This commit is contained in:
xrkffgg
2021-01-26 21:50:10 +08:00
committed by GitHub
parent f777971d6d
commit 1425c335af
8 changed files with 69 additions and 29 deletions

View File

@@ -400,15 +400,16 @@ jobs:
| labels | Replace the labels of the issue | string | ✖ | | labels | Replace the labels of the issue | string | ✖ |
| contents | Add [reaction](#reactions-types) for this comment | string | ✖ | | contents | Add [reaction](#reactions-types) for this comment | string | ✖ |
| close-issue | Whether to close the issue at the same time | string | ✖ | | close-issue | Whether to close the issue at the same time | string | ✖ |
| allow-permissions | Permission to operate | string | ✖ | | require-permission | Permission required | string | ✖ |
- `duplicate-command`: When setting concise commands, while still supporting the original `Duplicate of`. Block content contains `?` - `duplicate-command`: When setting concise commands, while still supporting the original `Duplicate of`. Block content contains `?`
- `labels`: Highest priority - `labels`: Highest priority
- `close-issue`: Both `true` or `'true'` can take effect - `close-issue`: Both `true` or `'true'` can take effect
- `allow-permissions`: When you do not input, there is no limit. Anyone comment will trigger. Optional values are `admin`, `write`, `read`, `none` - `require-permission`: When you do not input, there is no limit. Anyone comment will trigger. Optional values are `admin`, `write`, `read`, `none`
- If the team member sets the read permission, it is read - If the team member sets the `read` permission, it is `read`
- If the external Collaborator is set to read permission, it is read - If the external Collaborator is set to `read` permission, it is `read`
- Ordinary users have read permission - Ordinary users have `read` permission
- When set `write`, `admin` and `write` meet the conditions
⏫ [Back to list](#List) ⏫ [Back to list](#List)

View File

@@ -400,15 +400,16 @@ jobs:
| labels | 替换该 issue 的 labels | string | ✖ | | labels | 替换该 issue 的 labels | string | ✖ |
| contents | 为该评论的增加 [reaction](#reactions-types) | string | ✖ | | contents | 为该评论的增加 [reaction](#reactions-types) | string | ✖ |
| close-issue | 是否同时关闭该 issue | string | ✖ | | close-issue | 是否同时关闭该 issue | string | ✖ |
| allow-permissions | 允许操作的权限 | string | ✖ | | require-permission | 要求权限 | string | ✖ |
- `duplicate-command`:当设置简洁命令时,同时仍支持原有 `Duplicate of`。屏蔽内容包含 `?` - `duplicate-command`:当设置简洁命令时,同时仍支持原有 `Duplicate of`。屏蔽内容包含 `?`
- `labels`:优先级最高 - `labels`:优先级最高
- `close-issue``true``'true'` 均可生效 - `close-issue``true``'true'` 均可生效
- `allow-permissions`:当不输时,即无限制任何人评论都会触发。可选值有 `admin``write``read``none` - `require-permission`:当不输时,即无限制任何人评论都会触发。可选值有 `admin``write``read``none`
- 团队成员若设置 read 权限,则为 read - 团队成员若设置 `read` 权限,则为 `read`
- 外部 Collaborator 若设置 read 权限,则为 read - 外部 Collaborator 若设置 `read` 权限,则为 `read`
- 普通用户为 read 权限 - 普通用户为 `read` 权限
- 当设置 `write` 后,`admin``write` 满足条件
⏫ [返回列表](#列-表) ⏫ [返回列表](#列-表)

View File

@@ -58,7 +58,7 @@ inputs:
description: 'For mark-duplicate' description: 'For mark-duplicate'
duplicate-labels: duplicate-labels:
description: 'For mark-duplicate add labels' description: 'For mark-duplicate add labels'
allow-permissions: require-permission:
description: 'Only the allow can do. Possible admin, write, read, and none.' description: 'Only the allow can do. Possible admin, write, read, and none.'
remove-labels: remove-labels:
description: 'For remove labels' description: 'For remove labels'

26
dist/index.js vendored
View File

@@ -7871,7 +7871,12 @@ const ALLREACTIONS = ['+1', '-1', 'laugh', 'confused', 'heart', 'hooray', 'rocke
const { doQueryIssues } = __webpack_require__(197); const { doQueryIssues } = __webpack_require__(197);
const { dealStringToArr, dealRandomAssignees, testDuplicate } = __webpack_require__(6254); const {
dealStringToArr,
dealRandomAssignees,
testDuplicate,
checkPermission,
} = __webpack_require__(6254);
// ************************************************************************** // **************************************************************************
const token = core.getInput('token'); const token = core.getInput('token');
@@ -8009,7 +8014,7 @@ async function doMarkDuplicate(owner, repo, labels) {
const duplicateLabels = core.getInput('duplicate-labels'); const duplicateLabels = core.getInput('duplicate-labels');
const removeLables = core.getInput('remove-labels'); const removeLables = core.getInput('remove-labels');
const closeIssue = core.getInput('close-issue'); const closeIssue = core.getInput('close-issue');
const allowPermissions = core.getInput('allow-permissions'); const requirePermission = core.getInput('require-permission');
const commentId = context.payload.comment.id; const commentId = context.payload.comment.id;
const commentBody = context.payload.comment.body; const commentBody = context.payload.comment.body;
@@ -8018,14 +8023,14 @@ async function doMarkDuplicate(owner, repo, labels) {
const ifCommandInput = !!duplicateCommand; const ifCommandInput = !!duplicateCommand;
if (allowPermissions) { if (requirePermission) {
const res = await octokit.repos.getCollaboratorPermissionLevel({ const res = await octokit.repos.getCollaboratorPermissionLevel({
owner, owner,
repo, repo,
username: commentUser, username: commentUser,
}); });
const { permission } = res.data; const { permission } = res.data;
if (!allowPermissions.includes(permission)) { if (!checkPermission(requirePermission, permission)) {
core.info(`The user ${commentUser} is not allow!`); core.info(`The user ${commentUser} is not allow!`);
return false; return false;
} }
@@ -8706,12 +8711,25 @@ function getPreMonth(m) {
return m == 1 ? 12 : m - 1; return m == 1 ? 12 : m - 1;
} }
function checkPermission(require, permission) {
/**
* 有权限返回 true
*/
const permissions = ['none', 'read', 'write', 'admin'];
const requireNo = permissions.indexOf(require);
const permissionNo = permissions.indexOf(permission);
return requireNo <= permissionNo;
}
// **********************************************************
module.exports = { module.exports = {
dealStringToArr, dealStringToArr,
dealRandomAssignees, dealRandomAssignees,
getPreMonth, getPreMonth,
matchKeyword, matchKeyword,
testDuplicate, testDuplicate,
checkPermission,
}; };

View File

@@ -264,15 +264,16 @@ jobs:
| labels | Replace the labels of the issue | string | ✖ | | labels | Replace the labels of the issue | string | ✖ |
| contents | Add [reaction](/en-US/guide/ref#-reactions-type) for this comment | string | ✖ | | contents | Add [reaction](/en-US/guide/ref#-reactions-type) for this comment | string | ✖ |
| close-issue | Whether to close the issue at the same time | string | ✖ | | close-issue | Whether to close the issue at the same time | string | ✖ |
| allow-permissions | Permission to operate | string | ✖ | | require-permission | Permission required | string | ✖ |
- `duplicate-command`: When setting concise commands, while still supporting the original `Duplicate of`. Block content contains `?` - `duplicate-command`: When setting concise commands, while still supporting the original `Duplicate of`. Block content contains `?`
- `labels`: Highest priority - `labels`: Highest priority
- `close-issue`: Both `true` or `'true'` can take effect - `close-issue`: Both `true` or `'true'` can take effect
- `allow-permissions`: When you do not input, there is no limit. Anyone comment will trigger. Optional values are `admin`, `write`, `read`, `none` - `require-permission`: When you do not input, there is no limit. Anyone comment will trigger. Optional values are `admin`, `write`, `read`, `none`
- If the team member sets the read permission, it is read - If the team member sets the `read` permission, it is `read`
- If the external Collaborator is set to read permission, it is read - If the external Collaborator is set to `read` permission, it is `read`
- Ordinary users have read permission - Ordinary users have `read` permission
- When set `write`, `admin` and `write` meet the conditions
<Alert> <Alert>
Note: Duplicate created with the concise command does not display the content of the red box in the figure below. But in fact this has no effect. Note: Duplicate created with the concise command does not display the content of the red box in the figure below. But in fact this has no effect.

View File

@@ -264,15 +264,16 @@ jobs:
| labels | 替换该 issue 的 labels | string | ✖ | | labels | 替换该 issue 的 labels | string | ✖ |
| contents | 为该评论的增加 [reaction](/guide/ref#-reactions-类型) | string | ✖ | | contents | 为该评论的增加 [reaction](/guide/ref#-reactions-类型) | string | ✖ |
| close-issue | 是否同时关闭该 issue | string | ✖ | | close-issue | 是否同时关闭该 issue | string | ✖ |
| allow-permissions | 允许操作的权限 | string | ✖ | | require-permission | 要求权限 | string | ✖ |
- `duplicate-command`:当设置简洁命令时,同时仍支持原有 `Duplicate of`。屏蔽内容包含 `?` - `duplicate-command`:当设置简洁命令时,同时仍支持原有 `Duplicate of`。屏蔽内容包含 `?`
- `labels`:优先级最高 - `labels`:优先级最高
- `close-issue``true``'true'` 均可生效 - `close-issue``true``'true'` 均可生效
- `allow-permissions`:当不输时,即无限制任何人评论都会触发。可选值有 `admin``write``read``none` - `require-permission`:当不输时,即无限制任何人评论都会触发。可选值有 `admin``write``read``none`
- 团队成员若设置 read 权限,则为 read - 团队成员若设置 `read` 权限,则为 `read`
- 外部 Collaborator 若设置 read 权限,则为 read - 外部 Collaborator 若设置 `read` 权限,则为 `read`
- 普通用户为 read 权限 - 普通用户为 `read` 权限
- 当设置 `write` 后,`admin``write` 满足条件
<Alert> <Alert>
注意:使用简洁命令创建的 Duplicate 不显示下图红框内容。但其实这个没有任何影响的。 注意:使用简洁命令创建的 Duplicate 不显示下图红框内容。但其实这个没有任何影响的。

View File

@@ -8,7 +8,12 @@ const ALLREACTIONS = ['+1', '-1', 'laugh', 'confused', 'heart', 'hooray', 'rocke
const { doQueryIssues } = require('./public.js'); const { doQueryIssues } = require('./public.js');
const { dealStringToArr, dealRandomAssignees, testDuplicate } = require('./util.js'); const {
dealStringToArr,
dealRandomAssignees,
testDuplicate,
checkPermission,
} = require('./util.js');
// ************************************************************************** // **************************************************************************
const token = core.getInput('token'); const token = core.getInput('token');
@@ -146,7 +151,7 @@ async function doMarkDuplicate(owner, repo, labels) {
const duplicateLabels = core.getInput('duplicate-labels'); const duplicateLabels = core.getInput('duplicate-labels');
const removeLables = core.getInput('remove-labels'); const removeLables = core.getInput('remove-labels');
const closeIssue = core.getInput('close-issue'); const closeIssue = core.getInput('close-issue');
const allowPermissions = core.getInput('allow-permissions'); const requirePermission = core.getInput('require-permission');
const commentId = context.payload.comment.id; const commentId = context.payload.comment.id;
const commentBody = context.payload.comment.body; const commentBody = context.payload.comment.body;
@@ -155,14 +160,14 @@ async function doMarkDuplicate(owner, repo, labels) {
const ifCommandInput = !!duplicateCommand; const ifCommandInput = !!duplicateCommand;
if (allowPermissions) { if (requirePermission) {
const res = await octokit.repos.getCollaboratorPermissionLevel({ const res = await octokit.repos.getCollaboratorPermissionLevel({
owner, owner,
repo, repo,
username: commentUser, username: commentUser,
}); });
const { permission } = res.data; const { permission } = res.data;
if (!allowPermissions.includes(permission)) { if (!checkPermission(requirePermission, permission)) {
core.info(`The user ${commentUser} is not allow!`); core.info(`The user ${commentUser} is not allow!`);
return false; return false;
} }

View File

@@ -46,10 +46,23 @@ function getPreMonth(m) {
return m == 1 ? 12 : m - 1; return m == 1 ? 12 : m - 1;
} }
function checkPermission(require, permission) {
/**
* 有权限返回 true
*/
const permissions = ['none', 'read', 'write', 'admin'];
const requireNo = permissions.indexOf(require);
const permissionNo = permissions.indexOf(permission);
return requireNo <= permissionNo;
}
// **********************************************************
module.exports = { module.exports = {
dealStringToArr, dealStringToArr,
dealRandomAssignees, dealRandomAssignees,
getPreMonth, getPreMonth,
matchKeyword, matchKeyword,
testDuplicate, testDuplicate,
checkPermission,
}; };