Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pkg/microservice/user/core/handler/user/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ func OpenAPIListUsersBrief(c *gin.Context) {
Account: args.Account,
Name: args.Name,
Roles: args.Roles,
Project: args.Project,
IdentityType: args.IdentityType,
}

Expand Down
12 changes: 6 additions & 6 deletions pkg/microservice/user/core/repository/orm/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,14 +117,14 @@ func ListUsersByLoginTime(page int, perPage int, name string, order setting.List
return users, nil
}

// ListUsersByNameAndRole gets a list of users based on paging constraints, the name of the user, and the roles of the user
func ListUsersByNameAndRole(page int, perPage int, name string, roles []string, db *gorm.DB) ([]models.User, error) {
// ListUsersByNameAndRole gets a list of users based on paging constraints, the name of the user, the roles, and namespace
func ListUsersByNameAndRole(page int, perPage int, name string, roles []string, namespace string, db *gorm.DB) ([]models.User, error) {
var (
users []models.User
err error
)

err = db.Where("user.name LIKE ? AND role.name IN ?", "%"+name+"%", roles).
err = db.Where("user.name LIKE ? AND role.name IN ? AND role.namespace = ?", "%"+name+"%", roles, namespace).
Joins("INNER JOIN role_binding on role_binding.uid = user.uid").
Joins("INNER JOIN role on role_binding.role_id = role.id").Order("account ASC").Offset((page - 1) * perPage).
Group("user.uid").
Expand Down Expand Up @@ -223,15 +223,15 @@ func GetUsersCount(name string) (int64, error) {
return count, nil
}

// GetUsersCount gets user count
func GetUsersCountByRoles(name string, roles []string) (int64, error) {
// GetUsersCountByRoles gets user count filtered by roles and namespace
func GetUsersCountByRoles(name string, roles []string, namespace string) (int64, error) {
var (
users []models.User
err error
count int64
)

err = repository.DB.Where("user.name LIKE ? AND role.name IN ?", "%"+name+"%", roles).
err = repository.DB.Where("user.name LIKE ? AND role.name IN ? AND role.namespace = ?", "%"+name+"%", roles, namespace).
Joins("INNER JOIN role_binding on role_binding.uid = user.uid").
Joins("INNER JOIN role on role_binding.role_id = role.id").
Group("user.uid").
Expand Down
11 changes: 9 additions & 2 deletions pkg/microservice/user/core/service/permission/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ type OpenAPIQueryArgs struct {
IdentityType string `json:"identity_type,omitempty" form:"identity_type"`
Name string `json:"name,omitempty" form:"name"`
Roles []string `json:"roles,omitempty" form:"roles"`
Project string `json:"projectName,omitempty" form:"projectName"`
}

type QueryArgs struct {
Expand All @@ -81,6 +82,7 @@ type QueryArgs struct {
PerPage int `json:"per_page,omitempty" form:"perPage"`
Page int `json:"page,omitempty" form:"page"`
Roles []string `json:"roles,omitempty" form:"roles"`
Project string `json:"projectName,omitempty" form:"projectName"`
OrderBy setting.ListUserOrderBy `json:"order_by,omitempty" form:"order_by"`
Order setting.ListUserOrder `json:"order,omitempty" form:"order"`
}
Expand Down Expand Up @@ -333,6 +335,11 @@ func SearchUserByAccount(args *QueryArgs, logger *zap.SugaredLogger) (*types.Use
}

func SearchUsers(args *QueryArgs, logger *zap.SugaredLogger) (*types.UsersResp, error) {
namespace := args.Project
if namespace == "" {
namespace = "*"
}

var count int64
var err error
if len(args.Roles) == 0 {
Expand All @@ -342,7 +349,7 @@ func SearchUsers(args *QueryArgs, logger *zap.SugaredLogger) (*types.UsersResp,
return nil, err
}
} else {
count, err = orm.GetUsersCountByRoles(args.Name, args.Roles)
count, err = orm.GetUsersCountByRoles(args.Name, args.Roles, namespace)
if err != nil {
logger.Errorf("SeachUsers GetUsersCount By name:%s error, error msg:%s", args.Name, err.Error())
return nil, err
Expand All @@ -369,7 +376,7 @@ func SearchUsers(args *QueryArgs, logger *zap.SugaredLogger) (*types.UsersResp,
return nil, err
}
} else {
us, err = orm.ListUsersByNameAndRole(args.Page, args.PerPage, args.Name, args.Roles, repository.DB)
us, err = orm.ListUsersByNameAndRole(args.Page, args.PerPage, args.Name, args.Roles, namespace, repository.DB)
if err != nil {
logger.Errorf("SeachUsers SeachUsers By name:%s error, error msg:%s", args.Name, err.Error())
return nil, err
Expand Down