Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: rename allow-permissions #48

Merged
merged 2 commits into from
Jan 26, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions README.en-US.md
Original file line number Diff line number Diff line change
Expand Up @@ -400,15 +400,16 @@ jobs:
| labels | Replace the labels of the issue | string | ✖ |
| contents | Add [reaction](#reactions-types) for this comment | 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 `?`
- `labels`: Highest priority
- `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`
- If the team member sets the read permission, it is read
- If the external Collaborator is set to read permission, it is read
- Ordinary users have read permission
- `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 external Collaborator is set to `read` permission, it is `read`
- Ordinary users have `read` permission
- When set `write`, `admin` and `write` meet the conditions

⏫ [Back to list](#List)

Expand Down
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -400,15 +400,16 @@ jobs:
| labels | 替换该 issue 的 labels | string | ✖ |
| contents | 为该评论的增加 [reaction](#reactions-types) | string | ✖ |
| close-issue | 是否同时关闭该 issue | string | ✖ |
| allow-permissions | 允许操作的权限 | string | ✖ |
| require-permission | 要求权限 | string | ✖ |

- `duplicate-command`:当设置简洁命令时,同时仍支持原有 `Duplicate of`。屏蔽内容包含 `?`
- `labels`:优先级最高
- `close-issue`:`true` 或 `'true'` 均可生效
- `allow-permissions`:当不输时,即无限制。任何人评论都会触发。可选值有 `admin`,`write`,`read`,`none`
- 团队成员若设置 read 权限,则为 read
- 外部 Collaborator 若设置 read 权限,则为 read
- 普通用户为 read 权限
- `require-permission`:当不输时,即无限制,任何人评论都会触发。可选值有 `admin`,`write`,`read`,`none`
- 团队成员若设置 `read` 权限,则为 `read`
- 外部 Collaborator 若设置 `read` 权限,则为 `read`
- 普通用户为 `read` 权限
- 当设置 `write` 后,`admin` 和 `write` 满足条件

⏫ [返回列表](#列-表)

Expand Down
2 changes: 1 addition & 1 deletion action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ inputs:
description: 'For mark-duplicate'
duplicate-labels:
description: 'For mark-duplicate add labels'
allow-permissions:
require-permission:
description: 'Only the allow can do. Possible admin, write, read, and none.'
remove-labels:
description: 'For remove labels'
Expand Down
26 changes: 22 additions & 4 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7871,7 +7871,12 @@ const ALLREACTIONS = ['+1', '-1', 'laugh', 'confused', 'heart', 'hooray', 'rocke

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');
Expand Down Expand Up @@ -8009,7 +8014,7 @@ async function doMarkDuplicate(owner, repo, labels) {
const duplicateLabels = core.getInput('duplicate-labels');
const removeLables = core.getInput('remove-labels');
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 commentBody = context.payload.comment.body;
Expand All @@ -8018,14 +8023,14 @@ async function doMarkDuplicate(owner, repo, labels) {

const ifCommandInput = !!duplicateCommand;

if (allowPermissions) {
if (requirePermission) {
const res = await octokit.repos.getCollaboratorPermissionLevel({
owner,
repo,
username: commentUser,
});
const { permission } = res.data;
if (!allowPermissions.includes(permission)) {
if (!checkPermission(requirePermission, permission)) {
core.info(`The user ${commentUser} is not allow!`);
return false;
}
Expand Down Expand Up @@ -8706,12 +8711,25 @@ function getPreMonth(m) {
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 = {
dealStringToArr,
dealRandomAssignees,
getPreMonth,
matchKeyword,
testDuplicate,
checkPermission,
};


Expand Down
11 changes: 6 additions & 5 deletions docs/base.en-US.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,15 +264,16 @@ jobs:
| labels | Replace the labels of the issue | 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 | ✖ |
| 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 `?`
- `labels`: Highest priority
- `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`
- If the team member sets the read permission, it is read
- If the external Collaborator is set to read permission, it is read
- Ordinary users have read permission
- `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 external Collaborator is set to `read` permission, it is `read`
- Ordinary users have `read` permission
- When set `write`, `admin` and `write` meet the conditions

<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.
Expand Down
11 changes: 6 additions & 5 deletions docs/base.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,15 +264,16 @@ jobs:
| labels | 替换该 issue 的 labels | string | ✖ |
| contents | 为该评论的增加 [reaction](/guide/ref#-reactions-类型) | string | ✖ |
| close-issue | 是否同时关闭该 issue | string | ✖ |
| allow-permissions | 允许操作的权限 | string | ✖ |
| require-permission | 要求权限 | string | ✖ |

- `duplicate-command`:当设置简洁命令时,同时仍支持原有 `Duplicate of`。屏蔽内容包含 `?`
- `labels`:优先级最高
- `close-issue`:`true` 或 `'true'` 均可生效
- `allow-permissions`:当不输时,即无限制。任何人评论都会触发。可选值有 `admin`,`write`,`read`,`none`
- 团队成员若设置 read 权限,则为 read
- 外部 Collaborator 若设置 read 权限,则为 read
- 普通用户为 read 权限
- `require-permission`:当不输时,即无限制,任何人评论都会触发。可选值有 `admin`,`write`,`read`,`none`
- 团队成员若设置 `read` 权限,则为 `read`
- 外部 Collaborator 若设置 `read` 权限,则为 `read`
- 普通用户为 `read` 权限
- 当设置 `write` 后,`admin` 和 `write` 满足条件

<Alert>
注意:使用简洁命令创建的 Duplicate 不显示下图红框内容。但其实这个没有任何影响的。
Expand Down
13 changes: 9 additions & 4 deletions src/base.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@ const ALLREACTIONS = ['+1', '-1', 'laugh', 'confused', 'heart', 'hooray', 'rocke

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');
Expand Down Expand Up @@ -146,7 +151,7 @@ async function doMarkDuplicate(owner, repo, labels) {
const duplicateLabels = core.getInput('duplicate-labels');
const removeLables = core.getInput('remove-labels');
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 commentBody = context.payload.comment.body;
Expand All @@ -155,14 +160,14 @@ async function doMarkDuplicate(owner, repo, labels) {

const ifCommandInput = !!duplicateCommand;

if (allowPermissions) {
if (requirePermission) {
const res = await octokit.repos.getCollaboratorPermissionLevel({
owner,
repo,
username: commentUser,
});
const { permission } = res.data;
if (!allowPermissions.includes(permission)) {
if (!checkPermission(requirePermission, permission)) {
core.info(`The user ${commentUser} is not allow!`);
return false;
}
Expand Down
13 changes: 13 additions & 0 deletions src/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,23 @@ function getPreMonth(m) {
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 = {
dealStringToArr,
dealRandomAssignees,
getPreMonth,
matchKeyword,
testDuplicate,
checkPermission,
};