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.NewSyncedEnforcer(m, Apter) if err != nil { panic(err) } global.CasbinEnforcer = e } func Casbin() (*casbin.SyncedEnforcer, 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 } }