-
Notifications
You must be signed in to change notification settings - Fork 0
/
identity.go
50 lines (43 loc) · 1.1 KB
/
identity.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
package xo
type UserID string
type RegistrationForm struct {
email string
username string
password string
agreeToTOS bool
}
type AccountSettings struct {
email string
username string
password string
mobile string
mfaEnabled bool
emailVerified bool
}
type ProfileSettings struct {
name string
bio string
isPublic bool
websiteURL string
profilePicURL string
bannerPicURL string
}
type AppPreferences struct {
notificationsEnabled bool
}
type UserSettings struct {
account AccountSettings
profile ProfileSettings
preferences AppPreferences
}
type IdentityService interface {
RequestEmailVerification(email string) error
RequestPasswordReset(usernameOrEmail string) error
ResetPassword(code string, newPassword string) error
VerifyCode(code, scope string) (bool, error)
Register(form RegistrationForm) (UserID, error)
CheckUsernameUniqueness(username string) (bool, error)
// authenticated methods
GetSettings(userID UserID) (UserSettings, error)
ChangePassword(userID UserID, oldPswd string, newPswd string) error
}