aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEthan Koenig <ethantkoenig@gmail.com>2017-11-26 00:40:38 -0800
committerLunny Xiao <xiaolunwen@gmail.com>2017-11-26 16:40:38 +0800
commit716ac1214f14309bf82d664ff8bea90f4b7a40ee (patch)
tree1b8131488a28097a4e596ed47c07baca621fd850
parent061c501d544002c48fee8b41b5640c0ea1583008 (diff)
downloadgitea-716ac1214f14309bf82d664ff8bea90f4b7a40ee.tar.gz
gitea-716ac1214f14309bf82d664ff8bea90f4b7a40ee.zip
Enable admin to search by email (#2888)
-rw-r--r--models/user.go21
-rw-r--r--routers/admin/users.go5
2 files changed, 16 insertions, 10 deletions
diff --git a/models/user.go b/models/user.go
index 4dd2ad8d89..f3a74f5e08 100644
--- a/models/user.go
+++ b/models/user.go
@@ -1271,22 +1271,27 @@ func GetUser(user *User) (bool, error) {
// SearchUserOptions contains the options for searching
type SearchUserOptions struct {
- Keyword string
- Type UserType
- OrderBy string
- Page int
- PageSize int // Can be smaller than or equal to setting.UI.ExplorePagingNum
- IsActive util.OptionalBool
+ Keyword string
+ Type UserType
+ OrderBy string
+ Page int
+ PageSize int // Can be smaller than or equal to setting.UI.ExplorePagingNum
+ IsActive util.OptionalBool
+ SearchByEmail bool // Search by email as well as username/full name
}
func (opts *SearchUserOptions) toConds() builder.Cond {
var cond builder.Cond = builder.Eq{"type": opts.Type}
if len(opts.Keyword) > 0 {
lowerKeyword := strings.ToLower(opts.Keyword)
- cond = cond.And(builder.Or(
+ keywordCond := builder.Or(
builder.Like{"lower_name", lowerKeyword},
builder.Like{"LOWER(full_name)", lowerKeyword},
- ))
+ )
+ if opts.SearchByEmail {
+ keywordCond = keywordCond.Or(builder.Like{"LOWER(email)", lowerKeyword})
+ }
+ cond = cond.And(keywordCond)
}
if !opts.IsActive.IsNone() {
diff --git a/routers/admin/users.go b/routers/admin/users.go
index c22accc202..1081f3092f 100644
--- a/routers/admin/users.go
+++ b/routers/admin/users.go
@@ -31,8 +31,9 @@ func Users(ctx *context.Context) {
ctx.Data["PageIsAdminUsers"] = true
routers.RenderUserSearch(ctx, &models.SearchUserOptions{
- Type: models.UserTypeIndividual,
- PageSize: setting.UI.Admin.UserPagingNum,
+ Type: models.UserTypeIndividual,
+ PageSize: setting.UI.Admin.UserPagingNum,
+ SearchByEmail: true,
}, tplUsers)
}