rbac/middleware/rbac.go
zhangkun9038@dingtalk.com 6669be1923 up
2025-02-16 17:55:27 +08:00

25 lines
525 B
Go

package middleware
import (
"gitea.zjmud.xyz/phyer/rbac/repositories"
"github.com/gin-gonic/gin"
)
func RBACMiddleware(permission string) gin.HandlerFunc {
return func(c *gin.Context) {
userID := c.GetString("userID")
if userID == "" {
c.AbortWithStatusJSON(401, gin.H{"error": "Unauthorized"})
return
}
hasPermission, err := repositories.CheckUserPermission(userID, permission)
if err != nil || !hasPermission {
c.AbortWithStatusJSON(403, gin.H{"error": "Forbidden"})
return
}
c.Next()
}
}