-
Notifications
You must be signed in to change notification settings - Fork 1
/
user.go
101 lines (80 loc) · 2.63 KB
/
user.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package jump
import (
"github.com/gdbu/jump/users"
)
func (j *Jump) postUserCreateActions(userID string, groups []string) (apiKey string, err error) {
// Ensure first group is the user group
groups = append([]string{userID}, groups...)
// Add groups to user
if _, err = j.grps.AddGroups(userID, groups...); err != nil {
return
}
if apiKey, err = j.api.New(userID, "primary"); err != nil {
return
}
// Create a new resource key for the generated user ID
resourceKey := NewResourceKey("user", userID)
if err = j.SetPermission(resourceKey, userID, permRWD, permRWD); err != nil {
return
}
return
}
// setLastLoggedInAt sets user last logged in at on the user struct
func (j *Jump) setLastLoggedInAt(userID string, timestamp int64) (err error) {
_, err = j.usrs.UpdateLastLoggedInAt(userID, timestamp)
return
}
// CreateUser will create a user and assign it's basic groups
// Note: It is advised that this function is used when creating users rather than directly calling j.Users().New()
func (j *Jump) CreateUser(email, password string, groups ...string) (userID, apiKey string, err error) {
var u *users.User
if u, err = j.usrs.New(email, password); err != nil {
return
}
userID = u.ID
apiKey, err = j.postUserCreateActions(userID, groups)
return
}
// InsertUser will insert an existing user (no password hashing)
func (j *Jump) InsertUser(email, password string, groups ...string) (userID, apiKey string, err error) {
var u *users.User
if u, err = j.usrs.Insert(email, password); err != nil {
return
}
userID = u.ID
apiKey, err = j.postUserCreateActions(userID, groups)
return
}
// GetUser will get a user by ID
func (j *Jump) GetUser(userID string) (user *users.User, err error) {
return j.usrs.Get(userID)
}
// UpdateEmail will update a user's email address
func (j *Jump) UpdateEmail(userID, newEmail string) (updated *users.User, err error) {
return j.usrs.UpdateEmail(userID, newEmail)
}
// UpdatePassword is the update password handler
func (j *Jump) UpdatePassword(userID, newPassword string) (updated *users.User, err error) {
return j.usrs.UpdatePassword(userID, newPassword)
}
// EnableUser will enable a user
func (j *Jump) EnableUser(userID string) (err error) {
if err = j.usrs.UpdateDisabled(userID, false); err != nil {
return
}
return
}
// DisableUser will disable a user
func (j *Jump) DisableUser(userID string) (err error) {
if err = j.usrs.UpdateDisabled(userID, true); err != nil {
return
}
return j.sess.InvalidateUser(userID)
}
// VerifyUser will verify a user
func (j *Jump) VerifyUser(userID string) (err error) {
if err = j.usrs.UpdateVerified(userID, true); err != nil {
return
}
return
}