Ejemplo n.º 1
0
        public async Task <IActionResult> Register(RegisterViewModel vm)
        {
            if (ModelState.IsValid)
            {
                var user = new AppUser {
                    UserName = ShortGuid.NewGuid().ToString(), PhoneNumber = vm.PhoneNumber
                };
                var result = await _userManager.CreateAsync(user, vm.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateChangePhoneNumberTokenAsync(user, vm.PhoneNumber);

                    await _smsSender.SendSmsAsync(vm.PhoneNumber, code);

                    var vmRegisterVerifyCode = new RegisterVerifyCodeViewModel();
                    vmRegisterVerifyCode.ReturnUrl   = Url.Action(nameof(RegisteredConfirmation), GetControllerName <AccountController>(), new { vm.ReturnUrl });
                    vmRegisterVerifyCode.UserId      = user.Id;
                    vmRegisterVerifyCode.PhoneNumber = vm.PhoneNumber;
                    return(View(nameof(RegisterVerifyCode), vmRegisterVerifyCode));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(vm));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> RegisterVerifyCode(RegisterVerifyCodeViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                return(View(vm));
            }

            if (string.IsNullOrEmpty(vm.UserId))
            {
                AddError("该页面已失效!");
                return(View(vm));
            }

            var user = await _userManager.FindByIdAsync(vm.UserId);

            var result = await _userManager.VerifyAndConfirmPhoneNumberAsync(user, vm.Code);

            if (!result.Succeeded)
            {
                AddErrors(result);
                return(View(vm));
            }

            return(RedirectToLocal(vm.ReturnUrl));
        }