-
Notifications
You must be signed in to change notification settings - Fork 9
/
user_storage.go
132 lines (106 loc) · 3.83 KB
/
user_storage.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package mem
import (
"github.com/madappgang/identifo/model"
"github.com/pallinder/go-randomdata"
)
// NewUserStorage creates and inits in-memory user storage.
// Use it only for test purposes and in CI, all data is wiped on exit.
func NewUserStorage() (model.UserStorage, error) {
return &UserStorage{}, nil
}
// UserStorage is an in-memory user storage .
type UserStorage struct{}
// UserByID returns randomly generated user.
func (us *UserStorage) UserByID(id string) (model.User, error) {
return randUser(), nil
}
// UserByEmail returns randomly generated user.
func (us *UserStorage) UserByEmail(email string) (model.User, error) {
return randUser(), nil
}
// UserBySocialID returns randomly generated user.
func (us *UserStorage) UserBySocialID(id string) (model.User, error) {
return randUser(), nil
}
// UserByPhone returns randomly generated user.
func (us *UserStorage) UserByPhone(phone string) (model.User, error) {
return randUser(), nil
}
// UserExists always returns true.
func (us *UserStorage) UserExists(name string) bool {
return true
}
// AttachDeviceToken does nothing here.
func (us *UserStorage) AttachDeviceToken(id, token string) error {
return nil
}
// DetachDeviceToken does nothing here.
func (us *UserStorage) DetachDeviceToken(token string) error {
return nil
}
// RequestScopes always returns requested scopes.
func (us *UserStorage) RequestScopes(userID string, scopes []string) ([]string, error) {
return scopes, nil
}
// Scopes returns supported scopes, could be static data of database.
func (us *UserStorage) Scopes() []string {
// we allow all scopes for embedded database, you could implement your own logic in external service
return []string{"offline", "user"}
}
// UserByNamePassword returns randomly generated user.
func (us *UserStorage) UserByNamePassword(name, password string) (model.User, error) {
return randUser(), nil
}
// AddUserByNameAndPassword returns randomly generated user.
func (us *UserStorage) AddUserByNameAndPassword(username, password, role string, isAnonymous bool) (model.User, error) {
return randUser(), nil
}
// AddUserByPhone returns randomly generated user.
func (us *UserStorage) AddUserByPhone(phone, role string) (model.User, error) {
return randUser(), nil
}
// UserByFederatedID returns randomly generated user.
func (us *UserStorage) UserByFederatedID(provider model.FederatedIdentityProvider, id string) (model.User, error) {
return randUser(), nil
}
// AddUserWithFederatedID returns randomly generated user.
func (us *UserStorage) AddUserWithFederatedID(provider model.FederatedIdentityProvider, id, role string) (model.User, error) {
return randUser(), nil
}
// UpdateUser returns what it receives.
func (us *UserStorage) UpdateUser(userID string, newUser model.User) (model.User, error) {
return newUser, nil
}
// ResetPassword does nothing here.
func (us *UserStorage) ResetPassword(id, password string) error {
return nil
}
// IDByName returns random id.
func (us *UserStorage) IDByName(name string) (string, error) {
return randomdata.StringNumber(2, "-"), nil
}
// DeleteUser does nothing here.
func (us *UserStorage) DeleteUser(id string) error {
return nil
}
// UpdateLoginMetadata does nothing here.
func (us *UserStorage) UpdateLoginMetadata(userID string) {}
// FetchUsers returns randomly generated user enclosed in slice.
func (us *UserStorage) FetchUsers(filterString string, skip, limit int) ([]model.User, int, error) {
return []model.User{randUser()}, 1, nil
}
// ImportJSON imports data from JSON.
func (us *UserStorage) ImportJSON(data []byte) error {
return nil
}
// Close does nothing here.
func (us *UserStorage) Close() {}
func randUser() model.User {
return model.User{
ID: randomdata.StringNumber(2, "-"),
Username: randomdata.SillyName(),
Email: randomdata.Email(),
Pswd: randomdata.StringNumber(2, "-"),
Active: randomdata.Boolean(),
}
}