From e387d608f62966de2e7ab5f64e4ec6f503e68525 Mon Sep 17 00:00:00 2001 From: Regulus0811 Date: Fri, 3 May 2024 02:22:05 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20Fix=20midd?= =?UTF-8?q?leware=20dependency=20on=20Roleid=20for=20managing=20user=20per?= =?UTF-8?q?missions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolved the dependency on Roleid in the middleware responsible for managing user permissions, ensuring a more flexible and robust solution. Related issue: #247 --- middlewares/authentication_middleware.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/middlewares/authentication_middleware.go b/middlewares/authentication_middleware.go index 617f4f3..9b76745 100644 --- a/middlewares/authentication_middleware.go +++ b/middlewares/authentication_middleware.go @@ -11,8 +11,8 @@ import ( ) const ( - AdminRoleID = 2 - AssistantRoleID = 3 + AdminRole = "ADMIN" + AssistantRole = "ASSISTANT" ) // getUserInfoFromPath はクエリパラメータからユーザー情報を取得します。 @@ -28,7 +28,7 @@ func getUserInfoFromPath(ctx *gin.Context) (uid uint, cid uint, err error) { } // ClassUserRoleMiddleware は指定された権限を持っているかどうかを確認するミドルウェアです。 -func ClassUserRoleMiddleware(roleService services.ClassUserService, requiredRoleID int) gin.HandlerFunc { +func ClassUserRoleMiddleware(roleService services.ClassUserService, requiredRoleName string) gin.HandlerFunc { return func(ctx *gin.Context) { uid, cid, err := getUserInfoFromPath(ctx) if err != nil { @@ -36,13 +36,13 @@ func ClassUserRoleMiddleware(roleService services.ClassUserService, requiredRole return } - roleID, err := roleService.GetRole(uid, cid) + roleName, err := roleService.GetRole(uid, cid) if err != nil { - ctx.AbortWithStatusJSON(constants.StatusUnauthorized, gin.H{"error": "Unauthorized: role ID check failed"}) + ctx.AbortWithStatusJSON(constants.StatusUnauthorized, gin.H{"error": "Unauthorized: role check failed"}) return } - if roleID != requiredRoleID { + if roleName != requiredRoleName { ctx.AbortWithStatusJSON(constants.StatusForbidden, gin.H{"error": "Forbidden: insufficient privileges"}) return } @@ -53,12 +53,12 @@ func ClassUserRoleMiddleware(roleService services.ClassUserService, requiredRole // AdminMiddleware は管理者権限を持っているかどうかを確認するミドルウェアです。 func AdminMiddleware(roleService services.ClassUserService) gin.HandlerFunc { - return ClassUserRoleMiddleware(roleService, AdminRoleID) + return ClassUserRoleMiddleware(roleService, AdminRole) } // AssistantMiddleware はアシスタント権限を持っているかどうかを確認するミドルウェアです。 func AssistantMiddleware(roleService services.ClassUserService) gin.HandlerFunc { - return ClassUserRoleMiddleware(roleService, AssistantRoleID) + return ClassUserRoleMiddleware(roleService, AssistantRole) } func AuthMiddleware(authenticate func(token string) bool) gin.HandlerFunc { From 249e8169f802a7d09cc319f20819d4445c6ace06 Mon Sep 17 00:00:00 2001 From: Regulus0811 Date: Fri, 3 May 2024 02:23:04 +0900 Subject: [PATCH 2/2] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20Remove=20u?= =?UTF-8?q?nused=20migration=20code=20for=20the=20role=20table=20in=20migr?= =?UTF-8?q?ation.go?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deleted the code attempting to migrate the role table, which was no longer needed or used within the project. Related issue: #247 --- migration/migration.go | 1 - 1 file changed, 1 deletion(-) diff --git a/migration/migration.go b/migration/migration.go index f29c3d7..1b16630 100644 --- a/migration/migration.go +++ b/migration/migration.go @@ -52,7 +52,6 @@ func Migrate(db *gorm.DB) { &models.ClassBoard{}, &models.ClassCode{}, &models.ClassSchedule{}, - &models.Role{}, &models.Attendance{}, ) if err != nil {