aboutsummaryrefslogtreecommitdiff
path: root/web_src
diff options
context:
space:
mode:
authorJason Song2023-02-24 15:58:49 +0800
committerGitHub2023-02-24 15:58:49 +0800
commitedf98a2dc30956c8e04b778bb7f1ce55c14ba963 (patch)
tree2d8b7708f76a36c27700ab128082bdb976a0753e /web_src
parenta6175b01d92a75dcbadbbfc6782a486636fd62a2 (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.vue20
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%);
};
}