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
This commit is contained in:
		
							parent
							
								
									a14b6f3aae
								
							
						
					
					
						commit
						dd712b77f7
					
				|  | @ -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 { | ||||
|  |  | |||
|  | @ -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]")) | ||||
| } | ||||
|  |  | |||
|  | @ -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) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue