package inject import ( "runtime" "github.com/casbin/casbin" "github.com/facebookgo/inject" "kpt.xdmy/pkg/setting" // "kpt.xdmy/service/bll" ) // Object 注入对象 type Object struct { // Common *bll.Common Enforcer *casbin.Enforcer } var Obj *Object // Init 初始化依赖注入 func Init() { g := new(inject.Graph) // 注入casbin osType := runtime.GOOS var path string if osType == "windows" { path = setting.CurrentPath + "conf\\rbac_model.conf" } else if osType == "linux" { path = setting.CurrentPath + "conf/rbac_model.conf" } enforcer := casbin.NewEnforcer(path, false) _ = g.Provide(&inject.Object{Value: enforcer}) // Common := new(bll.Common) // _ = g.Provide(&inject.Object{Value: Common}) if err := g.Populate(); err != nil { panic("初始化依赖注入发生错误:" + err.Error()) } Obj = &Object{ Enforcer: enforcer, // Common: Common, } return } //var instance *Object //var once sync.Once // //func GetInstance() *Object { // once.Do(func() { // instance = Init() // }) // return instance //} // // 加载casbin策略数据,包括角色权限数据、用户角色数据 // func LoadCasbinPolicyData() error { // // c := Obj.Common // err := c.RoleAPI.LoadAllPolicy() // if err != nil { // return err // } // err = c.UserAPI.LoadAllPolicy() // if err != nil { // return err // } // return nil // }