public async Task <Result> Handle(Command request, CancellationToken cancellationToken) { var user = await _signInManager.GetTwoFactorAuthenticationUserAsync(); if (user == null) { return(new Result().Failed("Unable to load two-factor authentication user.")); } var authenticatorCode = request.RecoveryCode.Replace(" ", string.Empty).Replace("-", string.Empty); var result = await _signInManager.TwoFactorRecoveryCodeSignInAsync(authenticatorCode); if (!result.Succeeded) { return(new Result().Failed("Invalid recovery code.")); } var roles = await _signInManager.UserManager.GetRolesAsync(user); var token = _jwtHelper.GenerateJwt(user, roles); return(new Result { IsSuccessful = true, Token = token }); }
public async Task <Result> Handle(Command request, CancellationToken cancellationToken) { var result = await _signInManager.PasswordSignInAsync(request.Email, request.Password, false, false); if (result.RequiresTwoFactor) { return new Result { IsSuccessful = false, RequiresTwoFactor = true } } ; if (result.IsLockedOut) { return new Result { IsSuccessful = false, IsLockedOut = true } } ; if (result.IsNotAllowed) { var user2 = await _signInManager.UserManager.FindByEmailAsync(request.Email); if (!(await _signInManager.UserManager.IsEmailConfirmedAsync(user2))) { return(new Result { IsSuccessful = false, RequiresEmailConfirmation = true }); } } if (!result.Succeeded) { return(new Result().Failed("Username and password are invalid.")); } var user = await _signInManager.UserManager.FindByEmailAsync(request.Email); var roles = await _signInManager.UserManager.GetRolesAsync(user); var token = _jwtHelper.GenerateJwt(user, roles); return(new Result { IsSuccessful = true, Token = token }); } } }
public async Task <Result> Handle(Command request, CancellationToken cancellationToken) { var user = await _signInManager.UserManager.FindByIdAsync(request.UserId); if (user == null) { return(new Result().Failed($"Unable to load user with ID '{request.UserId}'.")); } var code = Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(request.Code)); var result = await _signInManager.UserManager.ChangeEmailAsync(user, request.Email, code); if (!result.Succeeded) { return(new Result().Failed("Error confirming your email.")); } // In our UI email and user name are one and the same, so when we update the email // we need to update the user name. var setUserNameResult = await _signInManager.UserManager.SetUserNameAsync(user, request.Email); await _signInManager.RefreshSignInAsync(user); if (!setUserNameResult.Succeeded) { return(new Result().Failed("Error changing user name.")); } if (_user.Identity.IsAuthenticated) { var loggedInUser = await _signInManager.UserManager.GetUserAsync(_user); if (loggedInUser.Id == request.UserId) { var roles = await _signInManager.UserManager.GetRolesAsync(user); var token = _jwtHelper.GenerateJwt(user, roles); return((new Result { Token = token }).Succeeded("Thank you for confirming your email change.")); } } return(new Result().Succeeded("Thank you for confirming your email change.")); }