From 6048d4eeb8c16c6293f1cc7bc78151a672a28d2b Mon Sep 17 00:00:00 2001 From: Marvin Zhang Date: Thu, 27 Feb 2025 13:33:48 +0800 Subject: [PATCH] fix: missing routes in get me api https://github.com/crawlab-team/crawlab/issues/1550 --- core/controllers/user.go | 30 ++++++++++++++++++++++++++- core/models/models/base.go | 1 - core/models/models/role_permission.go | 12 ----------- 3 files changed, 29 insertions(+), 14 deletions(-) delete mode 100644 core/models/models/role_permission.go diff --git a/core/controllers/user.go b/core/controllers/user.go index 663886e0..2449b26b 100644 --- a/core/controllers/user.go +++ b/core/controllers/user.go @@ -240,7 +240,7 @@ func DeleteUserList(c *gin.Context) { func GetUserMe(c *gin.Context) { u := GetUserFromContext(c) - getUserById(u.Id, c) + getUserByIdWithRoutes(u.Id, c) } func PutUserMe(c *gin.Context) { @@ -277,6 +277,34 @@ func getUserById(userId primitive.ObjectID, c *gin.Context) { HandleSuccessWithData(c, user) } +func getUserByIdWithRoutes(userId primitive.ObjectID, c *gin.Context) { + if !utils.IsPro() { + getUserById(userId, c) + return + } + + // get user + user, err := service.NewModelService[models.User]().GetById(userId) + if err != nil { + HandleErrorInternalServerError(c, err) + return + } + + // get role + if !user.RoleId.IsZero() { + role, err := service.NewModelService[models.Role]().GetById(user.RoleId) + if err != nil { + HandleErrorInternalServerError(c, err) + return + } + user.Role = role.Name + user.RootAdminRole = role.RootAdmin + user.Routes = role.Routes + } + + HandleSuccessWithData(c, user) +} + func putUser(userId primitive.ObjectID, c *gin.Context) { // get payload var user models.User diff --git a/core/models/models/base.go b/core/models/models/base.go index 22ba2bda..1bdb06a6 100644 --- a/core/models/models/base.go +++ b/core/models/models/base.go @@ -86,7 +86,6 @@ func GetModelInstances() []any { *new(NotificationSetting), *new(Permission), *new(Project), - *new(RolePermission), *new(Role), *new(Schedule), *new(Setting), diff --git a/core/models/models/role_permission.go b/core/models/models/role_permission.go deleted file mode 100644 index bab01418..00000000 --- a/core/models/models/role_permission.go +++ /dev/null @@ -1,12 +0,0 @@ -package models - -import ( - "go.mongodb.org/mongo-driver/bson/primitive" -) - -type RolePermission struct { - any `collection:"role_permissions"` - BaseModel[RolePermission] `bson:",inline"` - RoleId primitive.ObjectID `json:"role_id" bson:"role_id"` - PermissionId primitive.ObjectID `json:"permission_id" bson:"permission_id"` -}