mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: support filtering users table by login type (#17238)
#15896 Mentions ability to add support for filtering by login type The issue mentions that backend API support exists but the backend did not seem to have the support for this filter. So I have added the ability to filter it. I also added a corresponding update to readme file to make sure the docs will correctly showcase this feature
This commit is contained in:
@@ -88,6 +88,7 @@ func Users(query string) (database.GetUsersParams, []codersdk.ValidationError) {
|
||||
CreatedAfter: parser.Time3339Nano(values, time.Time{}, "created_after"),
|
||||
CreatedBefore: parser.Time3339Nano(values, time.Time{}, "created_before"),
|
||||
GithubComUserID: parser.Int64(values, 0, "github_com_user_id"),
|
||||
LoginType: httpapi.ParseCustomList(parser, values, []database.LoginType{}, "login_type", httpapi.ParseEnum[database.LoginType]),
|
||||
}
|
||||
parser.ErrorExcessParams(values)
|
||||
return filter, parser.Errors
|
||||
|
||||
@@ -386,62 +386,69 @@ func TestSearchUsers(t *testing.T) {
|
||||
Name: "Empty",
|
||||
Query: "",
|
||||
Expected: database.GetUsersParams{
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
LoginType: []database.LoginType{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "Username",
|
||||
Query: "user-name",
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
LoginType: []database.LoginType{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "UsernameWithSpaces",
|
||||
Query: " user-name ",
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
LoginType: []database.LoginType{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "Username+Param",
|
||||
Query: "usEr-name stAtus:actiVe",
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{database.UserStatusActive},
|
||||
RbacRole: []string{},
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{database.UserStatusActive},
|
||||
RbacRole: []string{},
|
||||
LoginType: []database.LoginType{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "OnlyParams",
|
||||
Query: "status:acTIve sEArch:User-Name role:Owner",
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{database.UserStatusActive},
|
||||
RbacRole: []string{codersdk.RoleOwner},
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{database.UserStatusActive},
|
||||
RbacRole: []string{codersdk.RoleOwner},
|
||||
LoginType: []database.LoginType{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "QuotedParam",
|
||||
Query: `status:SuSpenDeD sEArch:"User Name" role:meMber`,
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "user name",
|
||||
Status: []database.UserStatus{database.UserStatusSuspended},
|
||||
RbacRole: []string{codersdk.RoleMember},
|
||||
Search: "user name",
|
||||
Status: []database.UserStatus{database.UserStatusSuspended},
|
||||
RbacRole: []string{codersdk.RoleMember},
|
||||
LoginType: []database.LoginType{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "QuotedKey",
|
||||
Query: `"status":acTIve "sEArch":User-Name "role":Owner`,
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{database.UserStatusActive},
|
||||
RbacRole: []string{codersdk.RoleOwner},
|
||||
Search: "user-name",
|
||||
Status: []database.UserStatus{database.UserStatusActive},
|
||||
RbacRole: []string{codersdk.RoleOwner},
|
||||
LoginType: []database.LoginType{},
|
||||
},
|
||||
},
|
||||
{
|
||||
@@ -449,9 +456,48 @@ func TestSearchUsers(t *testing.T) {
|
||||
Name: "QuotedSpecial",
|
||||
Query: `search:"user:name"`,
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "user:name",
|
||||
Search: "user:name",
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
LoginType: []database.LoginType{},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "LoginType",
|
||||
Query: "login_type:github",
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "",
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
LoginType: []database.LoginType{database.LoginTypeGithub},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "MultipleLoginTypesWithSpaces",
|
||||
Query: "login_type:github login_type:password",
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "",
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
LoginType: []database.LoginType{
|
||||
database.LoginTypeGithub,
|
||||
database.LoginTypePassword,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "MultipleLoginTypesWithCommas",
|
||||
Query: "login_type:github,password,none,oidc",
|
||||
Expected: database.GetUsersParams{
|
||||
Search: "",
|
||||
Status: []database.UserStatus{},
|
||||
RbacRole: []string{},
|
||||
LoginType: []database.LoginType{
|
||||
database.LoginTypeGithub,
|
||||
database.LoginTypePassword,
|
||||
database.LoginTypeNone,
|
||||
database.LoginTypeOIDC,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user