| 1234567891011121314151617181920212223242526272829303132 |
- package middleware
- import (
- "fmt"
- "github.com/casbin/casbin/v2"
- "github.com/gin-gonic/gin"
- "log"
- )
- func CasbinACL(c *gin.Context) {
- roleId, _ := c.Get("role_id")
- sub := fmt.Sprintf("%s_%d", "role", int(roleId.(float64)))
- obj := c.Request.RequestURI
- act := c.Request.Method
- e, err := casbin.NewEnforcer("config/model.conf", "config/policy.csv")
- log.Println(sub, obj, act, err)
- ok, err := e.Enforce(sub, obj, act)
- if err != nil {
- c.JSON(200, gin.H{
- "code": 403,
- "msg": "没有权限:" + err.Error(),
- })
- c.Abort()
- }
- if !ok {
- c.JSON(200, gin.H{
- "code": 403,
- "msg": fmt.Sprintf("没有权限:%s,%s,%s", sub, obj, act),
- })
- c.Abort()
- }
- }
|