Skip to content

Commit dd712b7

Browse files
authored
Refactor admin user filter query parameters (#18965)
Only pass `status_filter` on admin page Use a more general method to pass query parameters, remove hard-coded keys
1 parent a14b6f3 commit dd712b7

File tree

4 files changed

+14
-11
lines changed

4 files changed

+14
-11
lines changed

models/user/search.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
// SearchUserOptions contains the options for searching
2121
type SearchUserOptions struct {
2222
db.ListOptions
23+
2324
Keyword string
2425
Type UserType
2526
UID int64
@@ -33,6 +34,8 @@ type SearchUserOptions struct {
3334
IsRestricted util.OptionalBool
3435
IsTwoFactorEnabled util.OptionalBool
3536
IsProhibitLogin util.OptionalBool
37+
38+
ExtraParamStrings map[string]string
3639
}
3740

3841
func (opts *SearchUserOptions) toSearchQueryBase() *xorm.Session {

modules/context/pagination.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,3 @@ func (p *Pagination) SetDefaultParams(ctx *Context) {
5555
p.AddParam(ctx, "tab", "TabName")
5656
p.AddParam(ctx, "t", "queryType")
5757
}
58-
59-
// SetUserFilterParams sets common pagination params for user filtering, e.g. the admin userlist
60-
func (p *Pagination) SetUserFilterParams(ctx *Context) {
61-
p.AddParamString("status_filter[is_active]", ctx.FormString("status_filter[is_active]"))
62-
p.AddParamString("status_filter[is_admin]", ctx.FormString("status_filter[is_admin]"))
63-
p.AddParamString("status_filter[is_restricted]", ctx.FormString("status_filter[is_restricted]"))
64-
p.AddParamString("status_filter[is_2fa_enabled]", ctx.FormString("status_filter[is_2fa_enabled]"))
65-
p.AddParamString("status_filter[is_prohibit_login]", ctx.FormString("status_filter[is_prohibit_login]"))
66-
}

routers/web/admin/users.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,16 @@ func Users(ctx *context.Context) {
4141
ctx.Data["PageIsAdmin"] = true
4242
ctx.Data["PageIsAdminUsers"] = true
4343

44+
extraParamStrings := map[string]string{}
4445
statusFilterKeys := []string{"is_active", "is_admin", "is_restricted", "is_2fa_enabled", "is_prohibit_login"}
4546
statusFilterMap := map[string]string{}
4647
for _, filterKey := range statusFilterKeys {
47-
statusFilterMap[filterKey] = ctx.FormString("status_filter[" + filterKey + "]")
48+
paramKey := "status_filter[" + filterKey + "]"
49+
paramVal := ctx.FormString(paramKey)
50+
statusFilterMap[filterKey] = paramVal
51+
if paramVal != "" {
52+
extraParamStrings[paramKey] = paramVal
53+
}
4854
}
4955

5056
sortType := ctx.FormString("sort")
@@ -68,6 +74,7 @@ func Users(ctx *context.Context) {
6874
IsRestricted: util.OptionalBoolParse(statusFilterMap["is_restricted"]),
6975
IsTwoFactorEnabled: util.OptionalBoolParse(statusFilterMap["is_2fa_enabled"]),
7076
IsProhibitLogin: util.OptionalBoolParse(statusFilterMap["is_prohibit_login"]),
77+
ExtraParamStrings: extraParamStrings,
7178
}, tplUsers)
7279
}
7380

routers/web/explore/user.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,9 @@ func RenderUserSearch(ctx *context.Context, opts *user_model.SearchUserOptions,
8282

8383
pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5)
8484
pager.SetDefaultParams(ctx)
85-
pager.SetUserFilterParams(ctx)
85+
for paramKey, paramVal := range opts.ExtraParamStrings {
86+
pager.AddParamString(paramKey, paramVal)
87+
}
8688
ctx.Data["Page"] = pager
8789

8890
ctx.HTML(http.StatusOK, tplName)

0 commit comments

Comments
 (0)