-
Notifications
You must be signed in to change notification settings - Fork 0
/
rpc_verify_email.go
45 lines (36 loc) · 1.25 KB
/
rpc_verify_email.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
package gapi
import (
"context"
db "github.com/LKarrie/learn-go-project/db/sqlc"
"github.com/LKarrie/learn-go-project/pb"
"github.com/LKarrie/learn-go-project/val"
"google.golang.org/genproto/googleapis/rpc/errdetails"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func (server *Server) VerifyEmail(ctx context.Context, req *pb.VerifyEmailRequest) (*pb.VerifyEmailResponse, error) {
violations := validateVerifyEmailRequest(req)
if violations != nil {
return nil, InvalidArgumentError(violations)
}
txResult, err := server.store.VerifyEmailTx(ctx, db.VerifyEmailTxParams{
EmailId: req.GetEmailId(),
SecretCode: req.GetSecretCode(),
})
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to verify email")
}
rsp := &pb.VerifyEmailResponse{
IsVerified: txResult.User.IsEmailVerified,
}
return rsp, nil
}
func validateVerifyEmailRequest(req *pb.VerifyEmailRequest) (violations []*errdetails.BadRequest_FieldViolation) {
if err := val.ValidateEamilId(req.GetEmailId()); err != nil {
violations = append(violations, fieldViolation("email_id", err))
}
if err := val.ValidateSecretCode(req.GetSecretCode()); err != nil {
violations = append(violations, fieldViolation("secret_code", err))
}
return violations
}