Files
go-admin/pkg/casbin/mycasbin.go
T
2020-07-27 22:37:50 +08:00

51 lines
1.0 KiB
Go

package mycasbin
import (
"github.com/casbin/casbin/v2"
"github.com/casbin/casbin/v2/model"
gormAdapter "github.com/casbin/gorm-adapter/v2"
_ "github.com/go-sql-driver/mysql"
"log"
"go-admin/global"
)
// Initialize the model from a string.
var text = `
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = r.sub == p.sub && (keyMatch2(r.obj, p.obj) || keyMatch(r.obj, p.obj)) && (r.act == p.act || p.act == "*")
`
func Setup() {
Apter, err := gormAdapter.NewAdapterByDB(global.Eloquent)
if err != nil {
panic(err)
}
m, err := model.NewModelFromString(text)
if err != nil {
panic(err)
}
e, err := casbin.NewEnforcer(m, Apter)
if err != nil {
panic(err)
}
global.CasbinEnforcer = e
}
func Casbin() (*casbin.Enforcer, error) {
if err := global.CasbinEnforcer.LoadPolicy(); err == nil {
return global.CasbinEnforcer, err
} else {
log.Printf("casbin rbac_model or policy init error, message: %v \r\n", err.Error())
return nil, err
}
}