fix(region): check user credential length when exec task (#20793)

This commit is contained in:
屈轩
2024-07-16 11:20:07 +08:00
committed by GitHub
parent 969ed95b60
commit 5e7ba9a55e
+11
View File
@@ -76,11 +76,17 @@ type STaskManager struct {
}
var TaskManager *STaskManager
var userCredWidthLimit = 0
func init() {
TaskManager = &STaskManager{
SResourceBaseManager: db.NewResourceBaseManager(STask{}, "tasks_tbl", "task", "tasks")}
TaskManager.SetVirtualObject(TaskManager)
if field, ok := reflect.TypeOf(&STask{}).Elem().FieldByName("UserCred"); ok {
if widthStr := field.Tag.Get(sqlchemy.TAG_WIDTH); len(widthStr) > 0 {
userCredWidthLimit, _ = strconv.Atoi(widthStr)
}
}
}
type STask struct {
@@ -278,6 +284,11 @@ func (manager *STaskManager) NewTask(
Params: data,
Stage: TASK_INIT_STAGE,
}
if userCredWidthLimit > 0 && len(userCred.String()) > userCredWidthLimit {
return nil, fmt.Errorf("Too many permissions for user %s", userCred.GetUserName())
}
task.SetModelManager(manager, task)
err := manager.TableSpec().Insert(ctx, task)
if err != nil {