예제 #1
0
        public override async Task <EmptyResponse> SendVerificationSms(VerificationSmsRequest request, ServerCallContext context)
        {
            var result = new EmptyResponse();

            var response = await _walletApiV1Client.SendVerificationSmsAsync(new PostPhoneModel { PhoneNumber = request.Phone, Token = request.Token });

            if (response.Error != null)
            {
                result.Error = response.Error.ToApiError();
            }

            return(result);
        }
예제 #2
0
        public override async Task <EmptyResponse> SendVerificationSms(VerificationSmsRequest request, ServerCallContext context)
        {
            var token = await _registrationTokenService.GetByOriginalTokenAsync(request.Token);

            if (token == null || token.ExpirationDate <= DateTime.UtcNow ||
                !token.EmailVerified)
            {
                context.Status = new Status(StatusCode.Unauthenticated, "Unauthorized");
                return(new EmptyResponse()
                {
                    Error = new ErrorV1()
                    {
                        Code = ErrorModelCode.NotAuthenticated.ToString(),
                        Message = ErrorMessages.Unauthorized
                    }
                });
            }

            if (string.IsNullOrEmpty(request.Phone))
            {
                return(new EmptyResponse()
                {
                    Error = new ErrorV1()
                    {
                        Code = ErrorModelCode.InvalidInputField.ToString(),
                        Message = ErrorMessages.InvalidFieldValue("Phone")
                    }
                });
            }

            var codeHash = await _smsVerification.SendVerificationSms(request.Phone);

            if (string.IsNullOrEmpty(codeHash))
            {
                return(new EmptyResponse()
                {
                    Error = new ErrorV1()
                    {
                        Code = ErrorModelCode.InvalidInputField.ToString(),
                        Message = ErrorMessages.CannotDeliverySms
                    }
                });
            }

            token.LastCodeHash = codeHash;
            token.PhoneHash    = request.Phone.ToSha256().ToBase64();
            await _registrationTokenService.SaveAsync(token);

            return(new EmptyResponse());
        }