aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwxiaoguang2022-03-02 23:30:14 +0800
committerGitHub2022-03-02 16:30:14 +0100
commitdd712b77f7ccc0e3c3f1872c96dc120c20af0b08 (patch)
tree6b96634aa6fed42ee7d5ab2862a3f48b8ddafd64
parenta14b6f3aae196b2506e07f1dcfcd38d338b91e68 (diff)
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
-rw-r--r--models/user/search.go3
-rw-r--r--modules/context/pagination.go9
-rw-r--r--routers/web/admin/users.go9
-rw-r--r--routers/web/explore/user.go4
4 files changed, 14 insertions, 11 deletions
diff --git a/models/user/search.go b/models/user/search.go
index fac180529..a81cee1c2 100644
--- a/models/user/search.go
+++ b/models/user/search.go
@@ -20,6 +20,7 @@ import (
// SearchUserOptions contains the options for searching
type SearchUserOptions struct {
db.ListOptions
+
Keyword string
Type UserType
UID int64
@@ -33,6 +34,8 @@ type SearchUserOptions struct {
IsRestricted util.OptionalBool
IsTwoFactorEnabled util.OptionalBool
IsProhibitLogin util.OptionalBool
+
+ ExtraParamStrings map[string]string
}
func (opts *SearchUserOptions) toSearchQueryBase() *xorm.Session {
diff --git a/modules/context/pagination.go b/modules/context/pagination.go
index 140b67678..107cbf618 100644
--- a/modules/context/pagination.go
+++ b/modules/context/pagination.go
@@ -55,12 +55,3 @@ func (p *Pagination) SetDefaultParams(ctx *Context) {
p.AddParam(ctx, "tab", "TabName")
p.AddParam(ctx, "t", "queryType")
}
-
-// SetUserFilterParams sets common pagination params for user filtering, e.g. the admin userlist
-func (p *Pagination) SetUserFilterParams(ctx *Context) {
- p.AddParamString("status_filter[is_active]", ctx.FormString("status_filter[is_active]"))
- p.AddParamString("status_filter[is_admin]", ctx.FormString("status_filter[is_admin]"))
- p.AddParamString("status_filter[is_restricted]", ctx.FormString("status_filter[is_restricted]"))
- p.AddParamString("status_filter[is_2fa_enabled]", ctx.FormString("status_filter[is_2fa_enabled]"))
- p.AddParamString("status_filter[is_prohibit_login]", ctx.FormString("status_filter[is_prohibit_login]"))
-}
diff --git a/routers/web/admin/users.go b/routers/web/admin/users.go
index 4358db89b..1f304297c 100644
--- a/routers/web/admin/users.go
+++ b/routers/web/admin/users.go
@@ -41,10 +41,16 @@ func Users(ctx *context.Context) {
ctx.Data["PageIsAdmin"] = true
ctx.Data["PageIsAdminUsers"] = true
+ extraParamStrings := map[string]string{}
statusFilterKeys := []string{"is_active", "is_admin", "is_restricted", "is_2fa_enabled", "is_prohibit_login"}
statusFilterMap := map[string]string{}
for _, filterKey := range statusFilterKeys {
- statusFilterMap[filterKey] = ctx.FormString("status_filter[" + filterKey + "]")
+ paramKey := "status_filter[" + filterKey + "]"
+ paramVal := ctx.FormString(paramKey)
+ statusFilterMap[filterKey] = paramVal
+ if paramVal != "" {
+ extraParamStrings[paramKey] = paramVal
+ }
}
sortType := ctx.FormString("sort")
@@ -68,6 +74,7 @@ func Users(ctx *context.Context) {
IsRestricted: util.OptionalBoolParse(statusFilterMap["is_restricted"]),
IsTwoFactorEnabled: util.OptionalBoolParse(statusFilterMap["is_2fa_enabled"]),
IsProhibitLogin: util.OptionalBoolParse(statusFilterMap["is_prohibit_login"]),
+ ExtraParamStrings: extraParamStrings,
}, tplUsers)
}
diff --git a/routers/web/explore/user.go b/routers/web/explore/user.go
index c3aa89e8e..98788f543 100644
--- a/routers/web/explore/user.go
+++ b/routers/web/explore/user.go
@@ -82,7 +82,9 @@ func RenderUserSearch(ctx *context.Context, opts *user_model.SearchUserOptions,
pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5)
pager.SetDefaultParams(ctx)
- pager.SetUserFilterParams(ctx)
+ for paramKey, paramVal := range opts.ExtraParamStrings {
+ pager.AddParamString(paramKey, paramVal)
+ }
ctx.Data["Page"] = pager
ctx.HTML(http.StatusOK, tplName)