mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 02:35:49 +08:00
Refactor getPermissionsAndRolesByUser() related code
This commit is contained in:
parent
111d1a5786
commit
687830697e
@ -226,7 +226,7 @@ func GetGroupUserCount(groupId string, field, value string) (int64, error) {
|
|||||||
} else {
|
} else {
|
||||||
return ormer.Engine.Table("user").
|
return ormer.Engine.Table("user").
|
||||||
Where("owner = ?", owner).In("name", names).
|
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()
|
Count()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -247,7 +247,7 @@ func GetPaginationGroupUsers(groupId string, offset, limit int, field, value, so
|
|||||||
}
|
}
|
||||||
|
|
||||||
if field != "" && value != "" {
|
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 == "" {
|
if sortField == "" || sortOrder == "" {
|
||||||
|
@ -258,9 +258,18 @@ func DeletePermission(permission *Permission) (bool, error) {
|
|||||||
return affected != 0, nil
|
return affected != 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPermissionsAndRolesByUser(userId string) ([]*Permission, []*Role, error) {
|
func getPermissionsByUser(userId string) ([]*Permission, error) {
|
||||||
permissions := []*Permission{}
|
permissions := []*Permission{}
|
||||||
err := ormer.Engine.Where("users like ?", "%"+userId+"\"%").Find(&permissions)
|
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 {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
@ -277,14 +286,13 @@ func GetPermissionsAndRolesByUser(userId string) ([]*Permission, []*Role, error)
|
|||||||
|
|
||||||
permFromRoles := []*Permission{}
|
permFromRoles := []*Permission{}
|
||||||
|
|
||||||
roles, err := GetRolesByUser(userId)
|
roles, err := getRolesByUser(userId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, role := range roles {
|
for _, role := range roles {
|
||||||
perms := []*Permission{}
|
perms, err := GetPermissionsByRole(role.GetId())
|
||||||
err := ormer.Engine.Where("roles like ?", "%"+role.GetId()+"\"%").Find(&perms)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -258,7 +258,7 @@ func BatchEnforce(permission *Permission, requests *[]CasbinRequest, permissionI
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) []string {
|
func getAllValues(userId string, fn func(enforcer *casbin.Enforcer) []string) []string {
|
||||||
permissions, _, err := GetPermissionsAndRolesByUser(userId)
|
permissions, _, err := getPermissionsAndRolesByUser(userId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@ -293,7 +293,7 @@ func GetAllActions(userId string) []string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetAllRoles(userId string) []string {
|
func GetAllRoles(userId string) []string {
|
||||||
roles, err := GetRolesByUser(userId)
|
roles, err := getRolesByUser(userId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -252,15 +252,23 @@ func (role *Role) GetId() string {
|
|||||||
return fmt.Sprintf("%s/%s", role.Owner, role.Name)
|
return fmt.Sprintf("%s/%s", role.Owner, role.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetRolesByUser(userId string) ([]*Role, error) {
|
func getRolesByUserInternal(userId string) ([]*Role, error) {
|
||||||
roles := []*Role{}
|
roles := []*Role{}
|
||||||
err := ormer.Engine.Where("users like ?", "%"+userId+"\"%").Find(&roles)
|
err := ormer.Engine.Where("users like ?", "%"+userId+"\"%").Find(&roles)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return roles, err
|
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 {
|
for _, role := range roles {
|
||||||
allRolesIds = append(allRolesIds, role.GetId())
|
allRolesIds = append(allRolesIds, role.GetId())
|
||||||
}
|
}
|
||||||
@ -336,16 +344,6 @@ func GetMaskedRoles(roles []*Role) []*Role {
|
|||||||
return roles
|
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
|
// GetAncestorRoles returns a list of roles that contain the given roleIds
|
||||||
func GetAncestorRoles(roleIds ...string) ([]*Role, error) {
|
func GetAncestorRoles(roleIds ...string) ([]*Role, error) {
|
||||||
var (
|
var (
|
||||||
|
@ -796,7 +796,7 @@ func ExtendUserWithRolesAndPermissions(user *User) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
user.Permissions, user.Roles, err = GetPermissionsAndRolesByUser(user.GetId())
|
user.Permissions, user.Roles, err = getPermissionsAndRolesByUser(user.GetId())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user