Files
atom/modules/auth/controller/permission.go
2023-02-07 11:45:23 +08:00

39 lines
676 B
Go
Executable File

package controller
import (
"atom/providers/jwt"
"atom/providers/rbac"
"github.com/gin-gonic/gin"
)
type PermissionController interface {
Get(ctx *gin.Context) (string, error)
}
type permissionControllerImpl struct {
jwt *jwt.JWT
rbac rbac.IRbac
}
func NewPermissionController(
jwt *jwt.JWT,
rbac rbac.IRbac,
) PermissionController {
return &permissionControllerImpl{rbac: rbac, jwt: jwt}
}
func (c *permissionControllerImpl) Get(ctx *gin.Context) (string, error) {
claims, err := c.jwt.GetClaims(ctx)
if err != nil {
return "", err
}
perm, err := c.rbac.JsonPermissionsForUser(claims.Username)
if err != nil {
return "", err
}
return perm, nil
}