public async Task <AuthenticationOutcome> LoginUser(string username, string password) { var outcome = new AuthenticationOutcome(); try { var result = await _signInManager.PasswordSignInAsync(username, password, false, false); if (result.Succeeded) { var user = _userManager.Users.SingleOrDefault(r => r.UserName == username); var token = await GenerateJwtToken(username, user); return(new AuthenticationOutcome { Token = token }); } outcome.Errors.Add("Failed to authenticate user."); return(outcome); } catch (Exception _) { outcome.Errors.Add("Failed to authenticate user."); return(outcome); } }
public async Task <AuthenticationOutcome> RegisterUser(string username, string password, IEnumerable <string> roles) { var outcome = new AuthenticationOutcome(); try { if (await _userManager.FindByNameAsync(username) != null) { outcome.Errors.Add("User with the specified username already exists."); return(outcome); } var user = new IdentityUser { UserName = username }; var result = await _userManager.CreateAsync(user, password); if (result.Succeeded) { foreach (var role in roles) { if (await _roleManager.RoleExistsAsync(role)) { _userManager.AddToRoleAsync(user, role).Wait(); } } var token = await GenerateJwtToken(username, user); outcome.Token = token; return(outcome); } outcome.Errors.AddRange(result.Errors.Select(x => x.Description).ToList()); return(outcome); } catch (Exception _) { outcome.Errors.Add("Failed to authenticate user."); return(outcome); } }
public AuthenticationResult(AuthenticationOutcome outcome, User user, IList<string> missingFields) { Outcome = outcome; User = user; MissingFields = missingFields; }