From 5d6d025c9b8d2abca9ec2bfdc795d1f0c1c6592d Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Sat, 5 Oct 2024 02:45:06 +0900 Subject: Add support for searching users by email (#30908) Fix #30898 we have an option `SearchByEmail`, so enable it, then we can search user by email. Also added a test for it. --- models/user/search.go | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'models/user/search.go') diff --git a/models/user/search.go b/models/user/search.go index 45b051187e..382b6fac2b 100644 --- a/models/user/search.go +++ b/models/user/search.go @@ -65,7 +65,19 @@ func (opts *SearchUserOptions) toSearchQueryBase(ctx context.Context) *xorm.Sess builder.Like{"LOWER(full_name)", lowerKeyword}, ) if opts.SearchByEmail { - keywordCond = keywordCond.Or(builder.Like{"LOWER(email)", lowerKeyword}) + var emailCond builder.Cond + emailCond = builder.Like{"LOWER(email)", lowerKeyword} + if opts.Actor == nil { + emailCond = emailCond.And(builder.Eq{"keep_email_private": false}) + } else if !opts.Actor.IsAdmin { + emailCond = emailCond.And( + builder.Or( + builder.Eq{"keep_email_private": false}, + builder.Eq{"id": opts.Actor.ID}, + ), + ) + } + keywordCond = keywordCond.Or(emailCond) } cond = cond.And(keywordCond) -- cgit v1.2.3