mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
feat: Workspace filters case insensitive (#2646)
This commit is contained in:
@ -289,7 +289,9 @@ func (q *fakeQuerier) GetUsers(_ context.Context, params database.GetUsersParams
|
||||
if len(params.Status) > 0 {
|
||||
usersFilteredByStatus := make([]database.User, 0, len(users))
|
||||
for i, user := range users {
|
||||
if slice.Contains(params.Status, user.Status) {
|
||||
if slice.ContainsCompare(params.Status, user.Status, func(a, b database.UserStatus) bool {
|
||||
return strings.EqualFold(string(a), string(b))
|
||||
}) {
|
||||
usersFilteredByStatus = append(usersFilteredByStatus, users[i])
|
||||
}
|
||||
}
|
||||
@ -299,7 +301,7 @@ func (q *fakeQuerier) GetUsers(_ context.Context, params database.GetUsersParams
|
||||
if len(params.RbacRole) > 0 && !slice.Contains(params.RbacRole, rbac.RoleMember()) {
|
||||
usersFilteredByRole := make([]database.User, 0, len(users))
|
||||
for i, user := range users {
|
||||
if slice.Overlap(params.RbacRole, user.RBACRoles) {
|
||||
if slice.OverlapCompare(params.RbacRole, user.RBACRoles, strings.EqualFold) {
|
||||
usersFilteredByRole = append(usersFilteredByRole, users[i])
|
||||
}
|
||||
}
|
||||
@ -385,25 +387,21 @@ func (q *fakeQuerier) GetWorkspaces(_ context.Context, arg database.GetWorkspace
|
||||
}
|
||||
if arg.OwnerUsername != "" {
|
||||
owner, err := q.GetUserByID(context.Background(), workspace.OwnerID)
|
||||
if err == nil && arg.OwnerUsername != owner.Username {
|
||||
if err == nil && !strings.EqualFold(arg.OwnerUsername, owner.Username) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if arg.TemplateName != "" {
|
||||
templates, err := q.GetTemplatesWithFilter(context.Background(), database.GetTemplatesWithFilterParams{
|
||||
ExactName: arg.TemplateName,
|
||||
})
|
||||
// Add to later param
|
||||
if err == nil {
|
||||
for _, t := range templates {
|
||||
arg.TemplateIds = append(arg.TemplateIds, t.ID)
|
||||
}
|
||||
template, err := q.GetTemplateByID(context.Background(), workspace.TemplateID)
|
||||
if err == nil && !strings.EqualFold(arg.TemplateName, template.Name) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
if !arg.Deleted && workspace.Deleted {
|
||||
continue
|
||||
}
|
||||
if arg.Name != "" && !strings.Contains(workspace.Name, arg.Name) {
|
||||
|
||||
if arg.Name != "" && !strings.Contains(strings.ToLower(workspace.Name), strings.ToLower(arg.Name)) {
|
||||
continue
|
||||
}
|
||||
if len(arg.TemplateIds) > 0 {
|
||||
|
@ -4094,7 +4094,7 @@ WHERE
|
||||
-- Filter by owner_name
|
||||
AND CASE
|
||||
WHEN $3 :: text != '' THEN
|
||||
owner_id = (SELECT id FROM users WHERE username = $3)
|
||||
owner_id = (SELECT id FROM users WHERE lower(username) = lower($3))
|
||||
ELSE true
|
||||
END
|
||||
-- Filter by template_name
|
||||
@ -4102,7 +4102,7 @@ WHERE
|
||||
-- Use the organization filter to restrict to 1 org if needed.
|
||||
AND CASE
|
||||
WHEN $4 :: text != '' THEN
|
||||
template_id = ANY(SELECT id FROM templates WHERE name = $4)
|
||||
template_id = ANY(SELECT id FROM templates WHERE lower(name) = lower($4))
|
||||
ELSE true
|
||||
END
|
||||
-- Filter by template_ids
|
||||
@ -4114,7 +4114,7 @@ WHERE
|
||||
-- Filter by name, matching on substring
|
||||
AND CASE
|
||||
WHEN $6 :: text != '' THEN
|
||||
LOWER(name) LIKE '%' || LOWER($6) || '%'
|
||||
name ILIKE '%' || $6 || '%'
|
||||
ELSE true
|
||||
END
|
||||
`
|
||||
|
@ -25,7 +25,7 @@ WHERE
|
||||
-- Filter by owner_name
|
||||
AND CASE
|
||||
WHEN @owner_username :: text != '' THEN
|
||||
owner_id = (SELECT id FROM users WHERE username = @owner_username)
|
||||
owner_id = (SELECT id FROM users WHERE lower(username) = lower(@owner_username))
|
||||
ELSE true
|
||||
END
|
||||
-- Filter by template_name
|
||||
@ -33,7 +33,7 @@ WHERE
|
||||
-- Use the organization filter to restrict to 1 org if needed.
|
||||
AND CASE
|
||||
WHEN @template_name :: text != '' THEN
|
||||
template_id = ANY(SELECT id FROM templates WHERE name = @template_name)
|
||||
template_id = ANY(SELECT id FROM templates WHERE lower(name) = lower(@template_name))
|
||||
ELSE true
|
||||
END
|
||||
-- Filter by template_ids
|
||||
@ -45,7 +45,7 @@ WHERE
|
||||
-- Filter by name, matching on substring
|
||||
AND CASE
|
||||
WHEN @name :: text != '' THEN
|
||||
LOWER(name) LIKE '%' || LOWER(@name) || '%'
|
||||
name ILIKE '%' || @name || '%'
|
||||
ELSE true
|
||||
END
|
||||
;
|
||||
|
Reference in New Issue
Block a user