package casbinauth import ( "git.rosy.net.cn/jx-callback/business/authz" "github.com/casbin/casbin" ) type CasbinAuthz struct { enforcer *casbin.SyncedEnforcer } func New(modelFile string) (authObj authz.IAuthz, err error) { obj := &CasbinAuthz{} obj.enforcer, err = casbin.NewSyncedEnforcer(modelFile, NewAdapter()) return obj, err } func (c *CasbinAuthz) AddStoreRole4User(userID string, storeID int) (err error) { return c.AddRole4User(userID, authz.GenStoreRoleName(storeID)) } func (c *CasbinAuthz) DelStoreRole4User(userID string, storeID int) (err error) { return c.DelRole4User(userID, authz.GenStoreRoleName(storeID)) } func (c *CasbinAuthz) AddRole4User(userID, roleName string) (err error) { _, err = c.enforcer.AddRoleForUser(userID, roleName) return err } func (c *CasbinAuthz) DelRole4User(userID, roleName string) (err error) { _, err = c.enforcer.DeleteRoleForUser(userID, roleName) return err } func (c *CasbinAuthz) GetUserRoleList(userID string) (roleList []string, err error) { roleList, err = c.enforcer.GetRolesForUser(userID) return roleList, err } func (c *CasbinAuthz) GetRoleUserList(roleName string) (userIDList []string, err error) { userIDList, err = c.enforcer.GetUsersForRole(roleName) return userIDList, err }