-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
user.go
90 lines (67 loc) · 2.08 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
package resolver
import (
"github.com/graph-gophers/graphql-go"
"github.com/smartcontractkit/chainlink/core/sessions"
)
type clearSessionsError struct{}
func (e clearSessionsError) Error() string {
return "failed to clear non current user sessions"
}
type failedPasswordUpdateError struct{}
func (e failedPasswordUpdateError) Error() string {
return "failed to update current user password"
}
// UserResolver resolves the User type
type UserResolver struct {
user *sessions.User
}
func NewUser(user *sessions.User) *UserResolver {
return &UserResolver{user: user}
}
// Email resolves the user's email
func (r *UserResolver) Email() string {
return r.user.Email
}
// CreatedAt resolves the user's creation date
func (r *UserResolver) CreatedAt() graphql.Time {
return graphql.Time{Time: r.user.CreatedAt}
}
// -- UpdatePassword Mutation --
type UpdatePasswordInput struct {
OldPassword string
NewPassword string
}
// UpdatePasswordPayloadResolver resolves the payload type
type UpdatePasswordPayloadResolver struct {
user *sessions.User
// inputErrors maps an input path to a string
inputErrs map[string]string
}
func NewUpdatePasswordPayload(user *sessions.User, inputErrs map[string]string) *UpdatePasswordPayloadResolver {
return &UpdatePasswordPayloadResolver{user: user, inputErrs: inputErrs}
}
func (r *UpdatePasswordPayloadResolver) ToUpdatePasswordSuccess() (*UpdatePasswordSuccessResolver, bool) {
if r.user == nil {
return nil, false
}
return NewUpdatePasswordSuccess(r.user), true
}
func (r *UpdatePasswordPayloadResolver) ToInputErrors() (*InputErrorsResolver, bool) {
if r.inputErrs != nil {
var errs []*InputErrorResolver
for path, message := range r.inputErrs {
errs = append(errs, NewInputError(path, message))
}
return NewInputErrors(errs), true
}
return nil, false
}
type UpdatePasswordSuccessResolver struct {
user *sessions.User
}
func NewUpdatePasswordSuccess(user *sessions.User) *UpdatePasswordSuccessResolver {
return &UpdatePasswordSuccessResolver{user: user}
}
func (r *UpdatePasswordSuccessResolver) User() *UserResolver {
return NewUser(r.user)
}