From 4dca969c691d66665bc41510dac3b4dc88286be8 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Thu, 14 Oct 2021 11:55:42 +0800 Subject: [PATCH 1/2] fix-464 --- go.mod | 1 + models/cloudbrain.go | 25 ++++++++++++++++++++++++- routers/repo/cloudbrain.go | 3 ++- templates/repo/cloudbrain/index.tmpl | 4 ++-- 4 files changed, 29 insertions(+), 4 deletions(-) mode change 100644 => 100755 go.mod diff --git a/go.mod b/go.mod old mode 100644 new mode 100755 index c663ab2ff..9f93281c3 --- a/go.mod +++ b/go.mod @@ -52,6 +52,7 @@ require ( github.com/gogs/chardet v0.0.0-20191104214054-4b6791f73a28 github.com/gogs/cron v0.0.0-20171120032916-9f6c956d3e14 github.com/golang/protobuf v1.4.1 // indirect + github.com/gomodule/redigo v2.0.0+incompatible github.com/google/go-github/v24 v24.0.1 github.com/gorilla/context v1.1.1 github.com/hashicorp/go-retryablehttp v0.6.6 // indirect diff --git a/models/cloudbrain.go b/models/cloudbrain.go index 4f615ed00..b2c5eb874 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1,6 +1,7 @@ package models import ( + "code.gitea.io/gitea/modules/log" "encoding/json" "fmt" "strings" @@ -59,6 +60,7 @@ type Cloudbrain struct { UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` DeletedAt time.Time `xorm:"deleted"` CanDebug bool `xorm:"-"` + CanDel bool `xorm:"-"` Type int `xorm:"INDEX DEFAULT 0"` User *User `xorm:"-"` @@ -67,7 +69,7 @@ type Cloudbrain struct { type CloudbrainInfo struct { Cloudbrain `xorm:"extends"` - User `xorm:"extends"` + User `xorm:"extends"` } type CloudBrainLoginResult struct { @@ -669,3 +671,24 @@ func GetCloudbrainByName(jobName string) (*Cloudbrain, error) { cb := &Cloudbrain{JobName: jobName} return getRepoCloudBrain(cb) } + +func CanDelJob(isSigned bool, user *User, job *CloudbrainInfo) bool { + if !isSigned || job.Status != string(JobStopped) { + return false + } + repo, err := GetRepositoryByID(job.RepoID) + if err != nil { + log.Error("GetRepositoryByID failed:%v", err.Error()) + return false + } + permission, _ := GetUserRepoPermission(repo, user) + if err != nil { + log.Error("GetUserRepoPermission failed:%v", err.Error()) + return false + } + + if user.ID == job.UserID || user.IsAdmin || permission.AccessMode >= AccessModeAdmin { + return true + } + return false +} diff --git a/routers/repo/cloudbrain.go b/routers/repo/cloudbrain.go index ccd51a89f..c0295bd43 100755 --- a/routers/repo/cloudbrain.go +++ b/routers/repo/cloudbrain.go @@ -69,12 +69,13 @@ func CloudBrainIndex(ctx *context.Context) { timestamp := time.Now().Unix() for i, task := range ciTasks { - log.Info("", task.User.Name) if task.Status == string(models.JobRunning) && (timestamp-int64(task.Cloudbrain.CreatedUnix) > 10) { ciTasks[i].CanDebug = true } else { ciTasks[i].CanDebug = false } + + ciTasks[i].CanDel = models.CanDelJob(ctx.IsSigned, ctx.User, task) } pager := context.NewPagination(int(count), setting.UI.IssuePagingNum, page, 5) diff --git a/templates/repo/cloudbrain/index.tmpl b/templates/repo/cloudbrain/index.tmpl index b1afa7027..200f5e133 100755 --- a/templates/repo/cloudbrain/index.tmpl +++ b/templates/repo/cloudbrain/index.tmpl @@ -353,9 +353,9 @@ -
+ {{$.CsrfTokenHtml}} - + 删除
From efd3cae25f475728b1899724ef71d99084b92d68 Mon Sep 17 00:00:00 2001 From: lewis <747342561@qq.com> Date: Thu, 14 Oct 2021 14:17:25 +0800 Subject: [PATCH 2/2] format --- models/cloudbrain.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/cloudbrain.go b/models/cloudbrain.go index b2c5eb874..1ff4801f1 100755 --- a/models/cloudbrain.go +++ b/models/cloudbrain.go @@ -1,16 +1,16 @@ package models import ( - "code.gitea.io/gitea/modules/log" "encoding/json" "fmt" "strings" "time" + "xorm.io/builder" "xorm.io/xorm" + "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/timeutil" - "xorm.io/builder" ) type CloudbrainStatus string