diff options
author | Jason Song | 2023-02-24 15:58:49 +0800 |
---|---|---|
committer | GitHub | 2023-02-24 15:58:49 +0800 |
commit | edf98a2dc30956c8e04b778bb7f1ce55c14ba963 (patch) | |
tree | 2d8b7708f76a36c27700ab128082bdb976a0753e /web_src | |
parent | a6175b01d92a75dcbadbbfc6782a486636fd62a2 (diff) |
Require approval to run actions for fork pull request (#22803)
Currently, Gitea will run actions automatically which are triggered by
fork pull request. It's a security risk, people can create a PR and
modify the workflow yamls to execute a malicious script.
So we should require approval for first-time contributors, which is the
default strategy of a public repo on GitHub, see [Approving workflow
runs from public
forks](https://docs.github.com/en/actions/managing-workflow-runs/approving-workflow-runs-from-public-forks).
Current strategy:
- don't need approval if it's not a fork PR;
- always need approval if the user is restricted;
- don't need approval if the user can write;
- don't need approval if the user has been approved before;
- otherwise, need approval.
https://user-images.githubusercontent.com/9418365/217207121-badf50a8-826c-4425-bef1-d82d1979bc81.mov
GitHub has an option for that, you can see that at
`/<owner>/<repo>/settings/actions`, and we can support that later.
<img width="835" alt="image"
src="https://user-images.githubusercontent.com/9418365/217199990-2967e68b-e693-4e59-8186-ab33a1314a16.png">
---------
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'web_src')
-rw-r--r-- | web_src/js/components/RepoActionView.vue | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/web_src/js/components/RepoActionView.vue b/web_src/js/components/RepoActionView.vue index e0ec48893..762067f52 100644 --- a/web_src/js/components/RepoActionView.vue +++ b/web_src/js/components/RepoActionView.vue @@ -3,7 +3,10 @@ <div class="action-view-header"> <div class="action-info-summary"> {{ run.title }} - <button class="run_cancel" @click="cancelRun()" v-if="run.canCancel"> + <button class="run_approve" @click="approveRun()" v-if="run.canApprove"> + <i class="play circle outline icon"/> + </button> + <button class="run_cancel" @click="cancelRun()" v-else-if="run.canCancel"> <i class="stop circle outline icon"/> </button> </div> @@ -97,6 +100,7 @@ const sfc = { link: '', title: '', canCancel: false, + canApprove: false, done: false, jobs: [ // { @@ -173,6 +177,10 @@ const sfc = { cancelRun() { this.fetchPost(`${this.run.link}/cancel`); }, + // approve a run + approveRun() { + this.fetchPost(`${this.run.link}/approve`); + }, createLogLine(line) { const div = document.createElement('div'); @@ -303,7 +311,15 @@ export function initRepositoryActionView() { cursor: pointer; transition:transform 0.2s; }; - .run_cancel:hover{ + .run_approve { + border: none; + color: var(--color-green); + background-color: transparent; + outline: none; + cursor: pointer; + transition:transform 0.2s; + }; + .run_cancel:hover, .run_approve:hover { transform:scale(130%); }; } |