add casbin permission verification middleware

This commit is contained in:
landaiqing
2024-08-24 18:04:13 +08:00
parent 9330935822
commit 974a96b6e0
4 changed files with 81 additions and 82 deletions

30
middleware/casbin.go Normal file
View File

@@ -0,0 +1,30 @@
package middleware
import (
"github.com/gin-gonic/gin"
"schisandra-cloud-album/global"
)
func CasbinMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
userId, ok := c.Get("userId")
if !ok {
global.LOG.Error("casbin middleware: userId not found")
c.Abort()
return
}
method := c.Request.Method
path := c.Request.URL.Path
ok, err := global.Casbin.Enforce(userId.(string), path, method)
if err != nil {
global.LOG.Error("casbin middleware: ", err)
c.Abort()
return
}
if !ok {
c.Abort()
return
}
c.Next()
}
}