1 Star 0 Fork 0

庞飞/multiapp

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
policy_middleware.go 962 Bytes
Copy Edit Raw Blame History
庞飞 authored 2023-10-03 10:28 +08:00 . 合并主框架
package policy
import (
"net/http"
"gitee.com/pangxianfei/multiapp/tmaic"
"github.com/gin-gonic/gin"
)
type UserNotPermitError struct{}
func (e UserNotPermitError) Error() string {
return "user has no permission"
}
func Middleware(policy Policier, action Action, c Context, params []gin.Param) {
// get route url param
routeParamMap := make(map[string]string)
for _, param := range params {
routeParamMap[param.Key] = param.Value
}
// get user
if err := c.ScanUser(); err != nil {
c.JSON(http.StatusUnprocessableEntity, tmaic.V{
"code": http.StatusUnprocessableEntity,
"message": err,
"data": nil,
})
c.Abort()
return
}
// validate policy
if !policyValidate(c.User(), policy, action, routeParamMap) {
forbid(c)
c.Abort()
return
}
c.Next()
}
func forbid(c Context) {
c.JSON(http.StatusForbidden, tmaic.V{
"code": http.StatusForbidden,
"message": UserNotPermitError{}.Error(),
"data": nil,
})
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/pangxianfei/multiapp.git
git@gitee.com:pangxianfei/multiapp.git
pangxianfei
multiapp
multiapp
v1.2.3

Search