-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathstorgeReplace.go
86 lines (71 loc) · 1.89 KB
/
storgeReplace.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
package main
import (
"context"
"github.com/jinzhu/gorm"
"github.com/volatiletech/authboss"
)
// DBStorer stores users in memory
type DBStorer struct {
DB *gorm.DB
Users map[string]User
Tokens map[string][]string
}
// NewDBStorer constructor
func NewDBStorer() *DBStorer {
db := openDb()
initCreate()
return &DBStorer{
DB: db,
Users: make(map[string]User),
Tokens: make(map[string][]string),
}
}
// Save the user
func (m DBStorer) Save(ctx context.Context, user authboss.User) error {
u := user.(*User)
m.Users[u.Email] = *u
debugln("Saved user:", u.Name)
// 保存到数据库
if err := m.DB.Save(u).Error; err != nil {
return err
}
return nil
}
// Load the user
func (m DBStorer) Load(ctx context.Context, key string) (user authboss.User, err error) {
// 从数据库加载
var u User
if err := m.DB.Where(&User{Email: key}).First(&u).Error; err != nil {
return nil, authboss.ErrUserNotFound
}
return &u, nil
}
// New user creation
func (m DBStorer) New(ctx context.Context) authboss.User {
return &User{}
}
// Create the user
func (m DBStorer) Create(ctx context.Context, user authboss.User) error {
u := user.(*User)
db.Create(u)
debugln("Created new user:", u.Name)
return nil
}
// LoadByConfirmSelector looks a user up by confirmation token
func (m DBStorer) LoadByConfirmSelector(ctx context.Context, selector string) (user authboss.ConfirmableUser, err error) {
var u User
db.Where(&User{ConfirmSelector: selector}).First(&u)
if u.ConfirmSelector != "" {
return &u, nil
}
return nil, authboss.ErrUserNotFound
}
// LoadByRecoverSelector looks a user up by confirmation selector
func (m DBStorer) LoadByRecoverSelector(ctx context.Context, selector string) (user authboss.RecoverableUser, err error) {
var u User
db.Where(&User{RecoverSelector: selector}).First(&u)
if u.ConfirmSelector != "" {
return &u, nil
}
return nil, authboss.ErrUserNotFound
}