| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package mycasbin
- import (
- "log"
- "github.com/casbin/casbin/v2"
- "github.com/casbin/casbin/v2/model"
- gormAdapter "github.com/casbin/gorm-adapter/v3"
- _ "github.com/go-sql-driver/mysql"
- "device-manage/common/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.NewAdapterByDBUsePrefix(global.Eloquent, "sys_")
- 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)
- }
- err = e.LoadPolicy()
- if err != nil {
- panic(err)
- }
- global.CasbinEnforcer = e
- }
- func Casbin() *casbin.SyncedEnforcer {
- return global.CasbinEnforcer
- }
- func LoadPolicy() (*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
- }
- }
|