40 lines
783 B
Go
Executable File
40 lines
783 B
Go
Executable File
package controller
|
|
|
|
import (
|
|
"atom/providers/jwt"
|
|
"atom/providers/log"
|
|
"atom/providers/rbac"
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/rogeecn/gen"
|
|
)
|
|
|
|
type PermissionController struct {
|
|
jwt *jwt.JWT
|
|
rbac rbac.IRbac
|
|
}
|
|
|
|
func NewPermissionController(
|
|
jwt *jwt.JWT,
|
|
rbac rbac.IRbac,
|
|
) *PermissionController {
|
|
return &PermissionController{rbac: rbac, jwt: jwt}
|
|
}
|
|
|
|
func (c *PermissionController) Get(ctx *gin.Context) (string, error) {
|
|
claimsCtx, exists := ctx.Get(jwt.CtxKey)
|
|
if !exists {
|
|
return "", gen.NewBusError(http.StatusBadRequest, http.StatusBadRequest, "Token 获取失败")
|
|
}
|
|
claims := claimsCtx.(jwt.Claims)
|
|
log.Debug("claim: ", claims)
|
|
|
|
perm, err := c.rbac.JsonPermissionsForUser("Rogee")
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return perm, nil
|
|
}
|