fix: ignore email notifications if user is not active. (#820)

pull/419/merge
Bo-Yi Wu 8 years ago committed by Lunny Xiao
parent 2db0ffe69e
commit d7d094bd8a
  1. 35
      models/fixtures/user.yml
  2. 8
      models/user.go
  3. 19
      models/user_test.go

@ -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

@ -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,8 +1053,10 @@ func GetUserEmailsByNames(names []string) []string {
if err != nil {
continue
}
if u.IsMailable() {
mails = append(mails, u.Email)
}
}
return mails
}

@ -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"}))
}
Loading…
Cancel
Save