forked from NyaaPantsu/nyaa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
permission.go
53 lines (45 loc) · 1.31 KB
/
permission.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package userPermission
import (
"github.com/ewhal/nyaa/db"
"github.com/ewhal/nyaa/model"
"github.com/ewhal/nyaa/util/log"
)
// HasAdmin checks that user has an admin permission.
func HasAdmin(user *model.User) bool {
return user.Status == 2
}
// CurrentOrAdmin check that user has admin permission or user is the current user.
func CurrentOrAdmin(user *model.User, userID uint) bool {
log.Debugf("user.ID == userID %d %d %s", user.ID, userID, user.ID == userID)
return (HasAdmin(user) || user.ID == userID)
}
// CurrentUserIdentical check that userID is same as current user's ID.
// TODO: Inline this (won't go do this for us?)
func CurrentUserIdentical(user *model.User, userID uint) bool {
return user.ID == userID
}
func NeedsCaptcha(user *model.User) bool {
// Trusted members & Moderators don't
return !(user.Status == 1 || user.Status == 2)
}
func GetRole(user *model.User) string {
switch user.Status {
case -1:
return "Banned"
case 0:
return "Member"
case 1:
return "Trusted Member"
case 2:
return "Moderator"
}
return "Member"
}
func IsFollower(user *model.User, currentUser *model.User) bool {
var likingUserCount int
db.ORM.Model(&model.UserFollows{}).Where("user_id = ? and following = ?", user.ID, currentUser.ID).Count(&likingUserCount)
if likingUserCount != 0 {
return true
}
return false
}