Skip to content

Commit 62b789d

Browse files
authored
Merge pull request #2877 from actiontech/fix_workflow_permission
Fix workflow permission
2 parents 6ac4e12 + 4e6d28d commit 62b789d

File tree

6 files changed

+20
-27
lines changed

6 files changed

+20
-27
lines changed

sqle/api/controller/v1/project_permission.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func CheckCurrentUserCanOperateWorkflow(c echo.Context, projectUid string, workf
2727
}
2828

2929
s := model.GetStorage()
30-
access, err := s.UserCanAccessWorkflow(userId, workflow)
30+
access, err := s.UserCanAccessWorkflow(userId, workflow.WorkflowId)
3131
if err != nil {
3232
return err
3333
}
@@ -57,7 +57,7 @@ func CheckCurrentUserCanViewWorkflow(c echo.Context, projectUid string, workflow
5757
}
5858

5959
s := model.GetStorage()
60-
access, err := s.UserCanAccessWorkflow(userId, workflow)
60+
access, err := s.UserCanAccessWorkflow(userId, workflow.WorkflowId)
6161
if err != nil {
6262
return err
6363
}
@@ -88,7 +88,7 @@ func CheckCurrentUserCanOperateTasks(c echo.Context, projectUid string, workflow
8888

8989
s := model.GetStorage()
9090

91-
access, err := s.UserCanAccessWorkflow(userId, workflow)
91+
access, err := s.UserCanAccessWorkflow(userId, workflow.WorkflowId)
9292
if err != nil {
9393
return err
9494
}
@@ -139,14 +139,15 @@ func checkCurrentUserCanViewTask(c echo.Context, task *model.Task, ops []dmsV1.O
139139
}
140140

141141
s := model.GetStorage()
142-
workflow, exist, err := s.GetWorkflowByTaskId(task.ID)
142+
workflowId, exist, err := s.GetWorkflowIdByTaskId(task.ID)
143143
if err != nil {
144144
return err
145145
}
146146
if !exist {
147147
return errors.NewTaskNoExistOrNoAccessErr()
148148
}
149-
access, err := s.UserCanAccessWorkflow(userId, workflow)
149+
150+
access, err := s.UserCanAccessWorkflow(userId, workflowId)
150151
if err != nil {
151152
return err
152153
}
@@ -179,14 +180,15 @@ func checkCurrentUserCanOpTask(c echo.Context, task *model.Task, ops []dmsV1.OpP
179180
}
180181

181182
s := model.GetStorage()
182-
workflow, exist, err := s.GetWorkflowByTaskId(task.ID)
183+
workflowId, exist, err := s.GetWorkflowIdByTaskId(task.ID)
183184
if err != nil {
184185
return err
185186
}
186187
if !exist {
187188
return errors.NewTaskNoExistOrNoAccessErr()
188189
}
189-
access, err := s.UserCanAccessWorkflow(userId, workflow)
190+
191+
access, err := s.UserCanAccessWorkflow(userId, workflowId)
190192
if err != nil {
191193
return err
192194
}

sqle/api/controller/v1/task.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ func GetTaskSQLs(c echo.Context) error {
529529
return controller.JSONBaseErrorReq(c, err)
530530
}
531531

532-
err = CheckCurrentUserCanViewTaskDMS(c, task)
532+
err = CheckCurrentUserCanViewTask(c, task)
533533
if err != nil {
534534
return controller.JSONBaseErrorReq(c, err)
535535
}
@@ -793,15 +793,6 @@ func CheckCurrentUserCanOpTask(c echo.Context, task *model.Task) (err error) {
793793
return checkCurrentUserCanOpTask(c, task, []dmsV1.OpPermissionType{dmsV1.OpPermissionTypeViewOthersWorkflow})
794794
}
795795

796-
// TODO 使用DMS的权限校验
797-
func CheckCurrentUserCanViewTaskDMS(c echo.Context, task *model.Task) error {
798-
_, err := controller.GetCurrentUser(c, dms.GetUser)
799-
if err != nil {
800-
return err
801-
}
802-
return nil
803-
}
804-
805796
type SQLExplain struct {
806797
SQL string `json:"sql"`
807798
Message string `json:"message"`

sqle/log/logger.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ func (h *gormLogWrapper) LogMode(level gormLog.LogLevel) gormLog.Interface {
7878
}
7979

8080
func (h *gormLogWrapper) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) {
81-
if h.logLevel <= gormLog.Silent {
81+
if h.logLevel != gormLog.Info {
8282
return
8383
}
8484
sql, rowsAffected := fc()
85-
h.logger.Trace(fmt.Sprintf("trace: sql: %v; rowsAffected: %v; err: %v", sql, rowsAffected, err))
85+
h.logger.Debugf(fmt.Sprintf("trace: sql: %v; rowsAffected: %v; err: %v", sql, rowsAffected, err))
8686
}
8787

8888
func (h *gormLogWrapper) Error(ctx context.Context, format string, a ...interface{}) {

sqle/model/project_permission.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ import "github.com/actiontech/sqle/sqle/errors"
337337
// LEFT JOIN workflow_step_user AS op_wst_re_user ON op_ws.id = op_wst_re_user.workflow_step_id
338338
// */
339339

340-
func (s *Storage) UserCanAccessWorkflow(userId string, workflow *Workflow) (bool, error) {
340+
func (s *Storage) UserCanAccessWorkflow(userId string, workflowId string) (bool, error) {
341341
query := `SELECT count(w.id) FROM workflows AS w
342342
JOIN workflow_records AS wr ON w.workflow_record_id = wr.id AND w.workflow_id = ?
343343
LEFT JOIN workflow_steps AS cur_ws ON wr.current_workflow_step_id = cur_ws.id
@@ -348,7 +348,7 @@ where w.deleted_at IS NULL
348348
AND (w.create_user_id = ? OR cur_ws.assignees REGEXP ? OR op_ws.assignees REGEXP ?)
349349
`
350350
var count int64
351-
err := s.db.Raw(query, workflow.WorkflowId, userId, userId, userId).Count(&count).Error
351+
err := s.db.Raw(query, workflowId, userId, userId, userId).Count(&count).Error
352352
if err != nil {
353353
return false, errors.New(errors.ConnectStorageError, err)
354354
}

sqle/model/workflow.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,9 +1062,9 @@ func (s *Storage) GetWorkflowRecordCountByTaskIds(ids []uint) (int64, error) {
10621062
return count, nil
10631063
}
10641064

1065-
func (s *Storage) GetWorkflowByTaskId(id uint) (*Workflow, bool, error) {
1065+
func (s *Storage) GetWorkflowIdByTaskId(id uint) (string, bool, error) {
10661066
workflow := &Workflow{}
1067-
err := s.db.Model(&Workflow{}).Select("workflows.id").
1067+
err := s.db.Model(&Workflow{}).Select("workflows.workflow_id").
10681068
Joins("LEFT JOIN workflow_records AS wr ON "+
10691069
"workflows.workflow_record_id = wr.id").
10701070
Joins("LEFT JOIN workflow_record_history ON "+
@@ -1078,12 +1078,12 @@ func (s *Storage) GetWorkflowByTaskId(id uint) (*Workflow, bool, error) {
10781078
Where("wir.task_id = ? OR h_wir.task_id = ? AND workflows.id IS NOT NULL", id, id).
10791079
Limit(1).Group("workflows.id").First(workflow).Error
10801080
if err == gorm.ErrRecordNotFound {
1081-
return nil, false, nil
1081+
return "", false, nil
10821082
}
10831083
if err != nil {
1084-
return nil, false, errors.New(errors.ConnectStorageError, err)
1084+
return "", false, errors.New(errors.ConnectStorageError, err)
10851085
}
1086-
return workflow, true, nil
1086+
return workflow.WorkflowId, true, nil
10871087
}
10881088

10891089
func (s *Storage) GetLastWorkflow() (*Workflow, bool, error) {

sqle/server/workflow_schedule.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ func CheckCurrentUserCanOperateWorkflowByUser(user *model.User, projectUid strin
354354
return nil
355355
}
356356

357-
access, err := s.UserCanAccessWorkflow(user.GetIDStr(), workflow)
357+
access, err := s.UserCanAccessWorkflow(user.GetIDStr(), workflow.WorkflowId)
358358
if err != nil {
359359
return err
360360
}

0 commit comments

Comments
 (0)