aboutsummaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorBo-Yi Wu <appleboy.tw@gmail.com>2017-02-02 20:33:36 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2017-02-02 20:33:36 +0800
commitd7d094bd8a5520b758f34d3fb0439c6a1ddb39d3 (patch)
treef8ba37fee85af46ad98b815fa70574ad3dbec9f2 /models
parent2db0ffe69ef80def358b96ff2c3804c79c9174c3 (diff)
downloadgitea-d7d094bd8a5520b758f34d3fb0439c6a1ddb39d3.tar.gz
gitea-d7d094bd8a5520b758f34d3fb0439c6a1ddb39d3.zip
fix: ignore email notifications if user is not active. (#820)
Diffstat (limited to 'models')
-rw-r--r--models/fixtures/user.yml35
-rw-r--r--models/user.go10
-rw-r--r--models/user_test.go19
3 files changed, 62 insertions, 2 deletions
diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml
index aa1d80d6f0..e8f13b93bd 100644
--- a/models/fixtures/user.yml
+++ b/models/fixtures/user.yml
@@ -9,7 +9,7 @@
salt: salt
is_admin: true
avatar: avatar1
- avatar_email: user2@example.com
+ avatar_email: user1@example.com
num_repos: 0
-
@@ -69,6 +69,7 @@
avatar_email: user5@example.com
num_repos: 1
allow_create_organization: false
+ is_active: true
-
id: 6
@@ -99,3 +100,35 @@
avatar_email: user7@example.com
num_repos: 0
num_members: 1
+
+-
+ id: 8
+ lower_name: user8
+ name: user8
+ full_name: User Eight
+ email: user8@example.com
+ passwd: password
+ type: 0 # user
+ salt: salt
+ is_admin: false
+ avatar: avatar8
+ avatar_email: user8@example.com
+ num_repos: 0
+ num_members: 1
+ is_active: true
+
+-
+ id: 9
+ lower_name: user9
+ name: user9
+ full_name: User Nine
+ email: user9@example.com
+ passwd: password
+ type: 0 # user
+ salt: salt
+ is_admin: false
+ avatar: avatar9
+ avatar_email: user9@example.com
+ num_repos: 0
+ num_members: 1
+ is_active: false
diff --git a/models/user.go b/models/user.go
index 306b695bf3..7d4f536242 100644
--- a/models/user.go
+++ b/models/user.go
@@ -537,6 +537,12 @@ func (u *User) ShortName(length int) string {
return base.EllipsisString(u.Name, length)
}
+// IsMailable checks if a user is elegible
+// to receive emails.
+func (u *User) IsMailable() bool {
+ return u.IsActive
+}
+
// IsUserExist checks if given user name exist,
// the user name should be noncased unique.
// If uid is presented, then check will rule out that one,
@@ -1047,7 +1053,9 @@ func GetUserEmailsByNames(names []string) []string {
if err != nil {
continue
}
- mails = append(mails, u.Email)
+ if u.IsMailable() {
+ mails = append(mails, u.Email)
+ }
}
return mails
}
diff --git a/models/user_test.go b/models/user_test.go
new file mode 100644
index 0000000000..fb3c46d223
--- /dev/null
+++ b/models/user_test.go
@@ -0,0 +1,19 @@
+// Copyright 2017 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package models
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestGetUserEmailsByNames(t *testing.T) {
+ assert.NoError(t, PrepareTestDatabase())
+
+ // ignore none active user email
+ assert.Equal(t, []string{"user8@example.com"}, GetUserEmailsByNames([]string{"user8", "user9"}))
+ assert.Equal(t, []string{"user8@example.com", "user5@example.com"}, GetUserEmailsByNames([]string{"user8", "user5"}))
+}