From dd3cc9de3aac5a3698e91e1b7bfe3999670af3bf Mon Sep 17 00:00:00 2001 From: Mussie Teshome Date: Sun, 11 Jun 2023 16:00:07 +0300 Subject: [PATCH] Verify mobile resolver --- server/resolvers/verify_mobile.go | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 server/resolvers/verify_mobile.go diff --git a/server/resolvers/verify_mobile.go b/server/resolvers/verify_mobile.go new file mode 100644 index 0000000..99b6804 --- /dev/null +++ b/server/resolvers/verify_mobile.go @@ -0,0 +1,62 @@ +package resolvers + +import ( + "fmt" + "context" + "time" + + "github.com/authorizerdev/authorizer/server/graph/model" + "github.com/authorizerdev/authorizer/server/utils" + "github.com/authorizerdev/authorizer/server/db" + log "github.com/sirupsen/logrus" +) + +func VerifyMobileResolver(ctx context.Context, params model.VerifyMobileRequest) (*model.AuthResponse, error) { + var res *model.AuthResponse + + _, err := utils.GinContextFromContext(ctx) + if err != nil { + log.Debug("Failed to get GinContext: ", err) + return res, err + } + + smsVerificationRequest, err := db.Provider.GetCodeByPhone(ctx, params.PhoneNumber) + if err != nil { + log.Debug("Failed to get sms request by phone: ", err) + return res, err + } + + if smsVerificationRequest.Code != params.Code { + log.Debug("Failed to verify request: bad credentials") + return res, fmt.Errorf(`bad crredentials`) + } + + expiresIn := smsVerificationRequest.CodeExpiresAt - time.Now().Unix() + if expiresIn < 0 { + log.Debug("Failed to verify sms request: Timeout") + return res, fmt.Errorf("time expired") + } + + res = &model.AuthResponse{ + Message: "successful", + } + + user, err := db.Provider.GetUserByPhoneNumber(ctx, params.PhoneNumber) + if user.PhoneNumberVerifiedAt == nil { + now := time.Now().Unix() + user.PhoneNumberVerifiedAt = &now + } + + _, err = db.Provider.UpdateUser(ctx, *user) + if err != nil { + log.Debug("Failed to update user: ", err) + return res, err + } + + err = db.Provider.DeleteSMSRequest(ctx, smsVerificationRequest) + if err != nil { + log.Debug("Failed to delete sms request: ", err.Error()) + } + + return res, err +}