reprogl

Форк
0
/
user.go 
75 строк · 1.3 Кб
1
package models
2

3
import (
4
	"database/sql"
5
	"strings"
6
	"time"
7

8
	"xelbot.com/reprogl/utils/hashid"
9
)
10

11
type LoggedUser struct {
12
	ID           int
13
	Username     string
14
	PasswordHash string
15
	Salt         string
16
	Role         string
17
}
18

19
type User struct {
20
	ID            int
21
	Username      string
22
	Email         string
23
	Role          string
24
	DisplayName   sql.NullString
25
	Gender        int
26
	AvatarVariant int
27
	CreatedAt     time.Time
28
}
29

30
func (u *User) Avatar(size int) string {
31
	options := hashid.User
32
	if u.Gender == 1 {
33
		options |= hashid.Male
34
	} else {
35
		options |= hashid.Female
36
	}
37

38
	if u.AvatarVariant > 0 {
39
		options += hashid.Option(u.AvatarVariant << 4)
40
	}
41

42
	return AvatarLink(u.ID, options, size)
43
}
44

45
func (u *User) Nickname() string {
46
	if u.DisplayName.Valid && len(u.DisplayName.String) > 0 {
47
		return u.DisplayName.String
48
	}
49

50
	return u.Username
51
}
52

53
func (u *User) HasDisplayName() bool {
54
	return u.DisplayName.Valid && len(u.DisplayName.String) > 0
55
}
56

57
func (u *User) DisplayNameValue() (name string) {
58
	if u.DisplayName.Valid && len(u.DisplayName.String) > 0 {
59
		name = u.DisplayName.String
60
	}
61

62
	return
63
}
64

65
func (u *User) IsMale() bool {
66
	return u.Gender == 1
67
}
68

69
func (u *User) NeedToCheckGravatar() bool {
70
	return !strings.Contains(u.Email, "@xelbot.fake")
71
}
72

73
func (u *User) GetEmail() string {
74
	return u.Email
75
}
76

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.