public async Task <IActionResult> SendCode(SendCodeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var user = await SignInManager.GetTwoFactorAuthenticationUserAsync();

            if (user == null)
            {
                return(View("Error"));
            }

            // Generate the token and send it
            var code = await UserManager.GenerateTwoFactorTokenAsync(user, model.SelectedProvider);

            if (string.IsNullOrWhiteSpace(code))
            {
                return(View("Error"));
            }

            var message = "Your security code is: " + code;

            if (model.SelectedProvider == "Email")
            {
                await MessageServices.SendEmailAsync(await UserManager.GetEmailAsync(user), "Security Code", message);
            }
            else if (model.SelectedProvider == "Phone")
            {
                await MessageServices.SendSmsAsync(await UserManager.GetPhoneNumberAsync(user), message);
            }

            return(RedirectToAction("VerifyCode", new { Provider = model.SelectedProvider, ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe }));
        }
예제 #2
0
        public async Task <IActionResult> AddPhoneNumber([FromBody] AddPhoneNumberViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(this.StatusCode(ApiStatusCode.InvalidArguments));
            }

            // Generate the token and send it
#if !NETCORE
            var code = await this.UserManager.GenerateChangePhoneNumberTokenAsync(User.Identity.GetUserId(), model.Number);
#else
            var user = await this.GetCurrentUserAsync();

            var code = await this.UserManager.GenerateChangePhoneNumberTokenAsync(user, model.Number);
#endif
            var messageText = "Your security code is: " + code;
#if !NETCORE
            if (this.UserManager.SmsService != null)
            {
                var message = new IdentityMessage
                {
                    Destination = model.Number,
                    Body        = messageText
                };
                await this.UserManager.SmsService.SendAsync(message);
            }
#else
            await MessageServices.SendSmsAsync(model.Number, messageText);
#endif
            return(this.StatusCode(ApiStatusCode.Ok));
        }
예제 #3
0
        /// <summary>
        /// Send password recovery email.
        /// </summary>
        /// <param name="provider">Sending provider.</param>
        /// <param name="user">User for which send notification.</param>
        /// <param name="code">Password recovery code.</param>
        /// <returns>Async task which send code.</returns>
        protected virtual async Task OnRecoveryCodeSent(string provider, TUser user, string code)
        {
            var message = "Your security code is: " + code;

            if (provider == "Email")
            {
                await MessageServices.SendEmailAsync(user.Email, "Security Code", message);
            }
            else if (provider == "Phone")
            {
                await MessageServices.SendSmsAsync(user.PhoneNumber, message);
            }
        }
        public async Task <IActionResult> AddPhoneNumber(AddPhoneNumberViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await GetCurrentUserAsync();

            // Generate the token and send it
            var code = ""; // await UserManager.GenerateChangePhoneNumberTokenAsync(user, model.Number);
            await MessageServices.SendSmsAsync(model.Number, "Your security code is: " + code);

            return(RedirectToAction("VerifyPhoneNumber", new { PhoneNumber = model.Number }));
        }