summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
Diffstat (limited to 'routers')
-rw-r--r--routers/web/admin/users.go23
-rw-r--r--routers/web/explore/user.go21
2 files changed, 34 insertions, 10 deletions
diff --git a/routers/web/admin/users.go b/routers/web/admin/users.go
index ea666ab4d4..0041f3d07c 100644
--- a/routers/web/admin/users.go
+++ b/routers/web/admin/users.go
@@ -19,6 +19,7 @@ import (
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/password"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/util"
"code.gitea.io/gitea/modules/web"
"code.gitea.io/gitea/routers/web/explore"
router_user_setting "code.gitea.io/gitea/routers/web/user/setting"
@@ -38,13 +39,33 @@ func Users(ctx *context.Context) {
ctx.Data["PageIsAdmin"] = true
ctx.Data["PageIsAdminUsers"] = true
+ 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 + "]")
+ }
+
+ sortType := ctx.FormString("sort")
+ if sortType == "" {
+ sortType = explore.UserSearchDefaultSortType
+ }
+ ctx.PageData["adminUserListSearchForm"] = map[string]interface{}{
+ "StatusFilterMap": statusFilterMap,
+ "SortType": sortType,
+ }
+
explore.RenderUserSearch(ctx, &models.SearchUserOptions{
Actor: ctx.User,
Type: models.UserTypeIndividual,
ListOptions: db.ListOptions{
PageSize: setting.UI.Admin.UserPagingNum,
},
- SearchByEmail: true,
+ SearchByEmail: true,
+ IsActive: util.OptionalBoolParse(statusFilterMap["is_active"]),
+ IsAdmin: util.OptionalBoolParse(statusFilterMap["is_admin"]),
+ IsRestricted: util.OptionalBoolParse(statusFilterMap["is_restricted"]),
+ IsTwoFactorEnabled: util.OptionalBoolParse(statusFilterMap["is_2fa_enabled"]),
+ IsProhibitLogin: util.OptionalBoolParse(statusFilterMap["is_prohibit_login"]),
}, tplUsers)
}
diff --git a/routers/web/explore/user.go b/routers/web/explore/user.go
index 4ddb90132d..1fe45ed585 100644
--- a/routers/web/explore/user.go
+++ b/routers/web/explore/user.go
@@ -22,6 +22,9 @@ const (
tplExploreUsers base.TplName = "explore/users"
)
+// UserSearchDefaultSortType is the default sort type for user search
+const UserSearchDefaultSortType = "alphabetically"
+
var (
nullByte = []byte{0x00}
)
@@ -44,23 +47,23 @@ func RenderUserSearch(ctx *context.Context, opts *models.SearchUserOptions, tplN
orderBy models.SearchOrderBy
)
+ // we can not set orderBy to `models.SearchOrderByXxx`, because there may be a JOIN in the statement, different tables may have the same name columns
ctx.Data["SortType"] = ctx.FormString("sort")
switch ctx.FormString("sort") {
case "newest":
- orderBy = models.SearchOrderByIDReverse
+ orderBy = "`user`.id DESC"
case "oldest":
- orderBy = models.SearchOrderByID
+ orderBy = "`user`.id ASC"
case "recentupdate":
- orderBy = models.SearchOrderByRecentUpdated
+ orderBy = "`user`.updated_unix DESC"
case "leastupdate":
- orderBy = models.SearchOrderByLeastUpdated
+ orderBy = "`user`.updated_unix ASC"
case "reversealphabetically":
- orderBy = models.SearchOrderByAlphabeticallyReverse
- case "alphabetically":
- orderBy = models.SearchOrderByAlphabetically
+ orderBy = "`user`.name DESC"
+ case UserSearchDefaultSortType: // "alphabetically"
default:
- ctx.Data["SortType"] = "alphabetically"
- orderBy = models.SearchOrderByAlphabetically
+ orderBy = "`user`.name ASC"
+ ctx.Data["SortType"] = UserSearchDefaultSortType
}
opts.Keyword = ctx.FormTrim("q")