Browse Source

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

tags/v1.21.12.1
Bo-Yi Wu Lunny Xiao 8 years ago
parent
commit
d7d094bd8a
3 changed files with 62 additions and 2 deletions
  1. +34
    -1
      models/fixtures/user.yml
  2. +9
    -1
      models/user.go
  3. +19
    -0
      models/user_test.go

+ 34
- 1
models/fixtures/user.yml View File

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

+ 9
- 1
models/user.go View File

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


+ 19
- 0
models/user_test.go View File

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