Ejemplo n.º 1
0
        public async Task <IActionResult> ChangePhoneNumber(ChangePhoneNumberRequest request)
        {
            var response = await mediator.Send(request);

            Log.Information($"User #{HttpContext.GetCurrentUserId()} changed their phone number to: {request.NewPhoneNumber}");

            return(this.CreateResponse(response));
        }
Ejemplo n.º 2
0
        public async Task <ChangePhoneNumberResponse> RequestPhoneNumberChange(ChangePhoneNumberRequest request)
        {
            // Get the user
            var user = await userManager.FindByIdAsync(request.UserId);

            // Validate the sent password
            if (!await userManager.CheckPasswordAsync(user, request.Password))
            {
                return(new ChangePhoneNumberResponse(false, 400, localizer["IncorrectPassword"]));
            }

            // Generate verification code
            var verificationCode = await userManager.GenerateChangePhoneNumberTokenAsync(user, user.PhoneNumber);

            // Send the verification code email
            await messager.SendEmailAsync(user.Email, "Phone Number Change", string.Format("You have requested to change your phone number, to complete, please input the following code: {0}", verificationCode));

            return(new ChangePhoneNumberResponse(true, 200, "A verification code has been sent to your email"));
        }
Ejemplo n.º 3
0
        public async Task <ChangePhoneNumberRequest> AddPhoneNumber(AddPhoneNumberInput input)
        {
            var user = await UserManager.GetUserByIdAsync(input.UserId);

            var result = new ChangePhoneNumberRequest();

            var typeOfRequest = GetTypeOfRequest(user, input);

            result.ResultType = typeOfRequest;
            SendMessageResult sendMessageResult;

            switch (typeOfRequest)
            {
            case TwoFactorRequestResults.SamePhoneNumberRequest:
                //Is the same phone number so....
                return(result);

            case TwoFactorRequestResults.NewPhoneNumberRequest:
                sendMessageResult = await SendSmsMessage(input.UserId, input.PhoneNumber, input.CountryPhoneCode);

                break;

            case TwoFactorRequestResults.ChangePhoneNumberRequest:
                sendMessageResult = await SendSmsMessage(input.UserId, input.PhoneNumber, input.CountryPhoneCode);

                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            result.UserId            = user.Id;
            result.CountryCode       = input.CountryCode;
            result.PhoneNumber       = input.PhoneNumber;
            result.CountryPhoneCode  = input.CountryPhoneCode;
            result.SendMessageResult = sendMessageResult;
            return(result);
        }