diff --git a/object/group.go b/object/group.go index 7aacba84..f0147243 100644 --- a/object/group.go +++ b/object/group.go @@ -226,7 +226,7 @@ func GetGroupUserCount(groupId string, field, value string) (int64, error) { } else { return ormer.Engine.Table("user"). Where("owner = ?", owner).In("name", names). - And(fmt.Sprintf("user.%s LIKE ?", util.CamelToSnakeCase(field)), "%"+value+"%"). + And(fmt.Sprintf("user.%s like ?", util.CamelToSnakeCase(field)), "%"+value+"%"). Count() } } @@ -247,7 +247,7 @@ func GetPaginationGroupUsers(groupId string, offset, limit int, field, value, so } if field != "" && value != "" { - session = session.And(fmt.Sprintf("user.%s LIKE ?", util.CamelToSnakeCase(field)), "%"+value+"%") + session = session.And(fmt.Sprintf("user.%s like ?", util.CamelToSnakeCase(field)), "%"+value+"%") } if sortField == "" || sortOrder == "" { diff --git a/object/permission.go b/object/permission.go index b7e366d1..f28d6eff 100644 --- a/object/permission.go +++ b/object/permission.go @@ -258,9 +258,18 @@ func DeletePermission(permission *Permission) (bool, error) { return affected != 0, nil } -func GetPermissionsAndRolesByUser(userId string) ([]*Permission, []*Role, error) { +func getPermissionsByUser(userId string) ([]*Permission, error) { permissions := []*Permission{} err := ormer.Engine.Where("users like ?", "%"+userId+"\"%").Find(&permissions) + if err != nil { + return permissions, err + } + + return permissions, nil +} + +func getPermissionsAndRolesByUser(userId string) ([]*Permission, []*Role, error) { + permissions, err := getPermissionsByUser(userId) if err != nil { return nil, nil, err } @@ -277,14 +286,13 @@ func GetPermissionsAndRolesByUser(userId string) ([]*Permission, []*Role, error) permFromRoles := []*Permission{} - roles, err := GetRolesByUser(userId) + roles, err := getRolesByUser(userId) if err != nil { return nil, nil, err } for _, role := range roles { - perms := []*Permission{} - err := ormer.Engine.Where("roles like ?", "%"+role.GetId()+"\"%").Find(&perms) + perms, err := GetPermissionsByRole(role.GetId()) if err != nil { return nil, nil, err } diff --git a/object/permission_enforcer.go b/object/permission_enforcer.go index e15ee5ce..23f63b48 100644 --- a/object/permission_enforcer.go +++ b/object/permission_enforcer.go @@ -258,7 +258,7 @@ func BatchEnforce(permission *Permission, requests *[]CasbinRequest, permissionI } func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) []string { - permissions, _, err := GetPermissionsAndRolesByUser(userId) + permissions, _, err := getPermissionsAndRolesByUser(userId) if err != nil { panic(err) } @@ -293,7 +293,7 @@ func GetAllActions(userId string) []string { } func GetAllRoles(userId string) []string { - roles, err := GetRolesByUser(userId) + roles, err := getRolesByUser(userId) if err != nil { panic(err) } diff --git a/object/role.go b/object/role.go index 9dccbcb2..1ca0b1aa 100644 --- a/object/role.go +++ b/object/role.go @@ -252,15 +252,23 @@ func (role *Role) GetId() string { return fmt.Sprintf("%s/%s", role.Owner, role.Name) } -func GetRolesByUser(userId string) ([]*Role, error) { +func getRolesByUserInternal(userId string) ([]*Role, error) { roles := []*Role{} err := ormer.Engine.Where("users like ?", "%"+userId+"\"%").Find(&roles) if err != nil { return roles, err } - allRolesIds := make([]string, 0, len(roles)) + return roles, nil +} +func getRolesByUser(userId string) ([]*Role, error) { + roles, err := getRolesByUserInternal(userId) + if err != nil { + return roles, err + } + + allRolesIds := []string{} for _, role := range roles { allRolesIds = append(allRolesIds, role.GetId()) } @@ -336,16 +344,6 @@ func GetMaskedRoles(roles []*Role) []*Role { return roles } -func GetRolesByNamePrefix(owner string, prefix string) ([]*Role, error) { - roles := []*Role{} - err := ormer.Engine.Where("owner=? and name like ?", owner, prefix+"%").Find(&roles) - if err != nil { - return roles, err - } - - return roles, nil -} - // GetAncestorRoles returns a list of roles that contain the given roleIds func GetAncestorRoles(roleIds ...string) ([]*Role, error) { var ( diff --git a/object/user.go b/object/user.go index e858e71c..17f02a24 100644 --- a/object/user.go +++ b/object/user.go @@ -796,7 +796,7 @@ func ExtendUserWithRolesAndPermissions(user *User) (err error) { return } - user.Permissions, user.Roles, err = GetPermissionsAndRolesByUser(user.GetId()) + user.Permissions, user.Roles, err = getPermissionsAndRolesByUser(user.GetId()) if err != nil { return err }