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>
This commit is contained in:
parent
a6175b01d9
commit
edf98a2dc3
10 changed files with 154 additions and 16 deletions
|
@ -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%);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue