mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 05:25:15 +01:00 
			
		
		
		
	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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user