-
Notifications
You must be signed in to change notification settings - Fork 601
Expand file tree
/
Copy pathchange_user_password.go
More file actions
82 lines (67 loc) · 2.1 KB
/
Copy pathchange_user_password.go
File metadata and controls
82 lines (67 loc) · 2.1 KB
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
package controller
import (
"context"
"log/slog"
"github.com/golang-jwt/jwt/v5"
oapimw "github.com/nhost/nhost/internal/lib/oapi/middleware"
"github.com/nhost/nhost/services/auth/go/api"
)
func (ctrl *Controller) postUserPasswordAuthenticated( //nolint:ireturn
ctx context.Context,
request api.ChangeUserPasswordRequestObject,
jwtToken *jwt.Token,
logger *slog.Logger,
) (api.ChangeUserPasswordResponseObject, error) {
logger.DebugContext(ctx, "authenticated request")
userID, err := ctrl.wf.jwtGetter.GetUserID(jwtToken)
if err != nil {
logger.ErrorContext(ctx, "error getting user id from jwt token", logError(err))
return ctrl.sendError(ErrInvalidRequest), nil
}
if _, apiErr := ctrl.wf.GetUser(ctx, userID, logger); apiErr != nil {
return ctrl.sendError(apiErr), nil
}
if apiErr := ctrl.wf.ChangePassword(
ctx,
userID,
request.Body.NewPassword,
logger,
); apiErr != nil {
return ctrl.sendError(apiErr), nil
}
return api.ChangeUserPassword200JSONResponse(api.OK), nil
}
func (ctrl *Controller) postUserPasswordUnauthenticated( //nolint:ireturn
ctx context.Context,
request api.ChangeUserPasswordRequestObject,
logger *slog.Logger,
) (api.ChangeUserPasswordResponseObject, error) {
logger.DebugContext(ctx, "unauthenticated request")
if request.Body.Ticket == nil {
return ctrl.sendError(ErrInvalidRequest), nil
}
user, apiErr := ctrl.wf.GetUserByTicket(ctx, *request.Body.Ticket, logger)
if apiErr != nil {
return ctrl.sendError(apiErr), nil
}
if apiErr := ctrl.wf.ChangePassword(
ctx,
user.ID,
request.Body.NewPassword,
logger,
); apiErr != nil {
return ctrl.sendError(apiErr), nil
}
return api.ChangeUserPassword200JSONResponse(api.OK), nil
}
func (ctrl *Controller) ChangeUserPassword( //nolint:ireturn
ctx context.Context,
request api.ChangeUserPasswordRequestObject,
) (api.ChangeUserPasswordResponseObject, error) {
logger := oapimw.LoggerFromContext(ctx)
jwtToken, ok := ctrl.wf.jwtGetter.FromContext(ctx)
if ok {
return ctrl.postUserPasswordAuthenticated(ctx, request, jwtToken, logger)
}
return ctrl.postUserPasswordUnauthenticated(ctx, request, logger)
}