mirror of
https://github.com/kevin-DL/services.git
synced 2026-01-15 20:44:46 +00:00
User service: added reset password email endpoints (#272)
This commit is contained in:
@@ -245,3 +245,32 @@ func (s *User) SendVerificationEmail(ctx context.Context, req *pb.SendVerificati
|
||||
|
||||
return s.domain.SendEmail(req.FromName, req.Email, users[0].Username, req.Subject, req.TextContent, token, req.RedirectUrl, req.FailureRedirectUrl)
|
||||
}
|
||||
|
||||
func (s *User) SendPasswordResetEmail(ctx context.Context, req *pb.SendPasswordResetEmailRequest, rsp *pb.SendPasswordResetEmailResponse) error {
|
||||
users, err := s.domain.Search(ctx, "", req.Email)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return s.domain.SendPasswordResetEmail(ctx, users[0].Id, req.FromName, req.Email, users[0].Username, req.Subject, req.TextContent)
|
||||
}
|
||||
|
||||
func (s *User) ResetPassword(ctx context.Context, req *pb.ResetPasswordRequest, rsp *pb.ResetPasswordResponse) error {
|
||||
code, err := s.domain.ReadPasswordResetCode(ctx, req.Code)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// no error means it exists and not expired
|
||||
salt := random(16)
|
||||
h, err := bcrypt.GenerateFromPassword([]byte(x+salt+req.NewPassword), 10)
|
||||
if err != nil {
|
||||
return errors.InternalServerError("user.ResetPassword", err.Error())
|
||||
}
|
||||
pp := base64.StdEncoding.EncodeToString(h)
|
||||
|
||||
if err := s.domain.UpdatePassword(ctx, code.UserID, salt, pp); err != nil {
|
||||
return errors.InternalServerError("user.resetpassword", err.Error())
|
||||
}
|
||||
s.domain.DeletePasswordRestCode(ctx, req.Code)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user