public async Task<IdentityResult> RegisterUserAsync(AppUser appUser, string password) { appUser.Id = Guid.NewGuid().ToString(); appUser.Enabled = true; var result = await _userManager.CreateAsync(appUser, password); _userManager.AddToRole(appUser.Id, "User"); return result; }
public IdentityResult RegisterUser(AppUser appUser, string password) { appUser.Id = Guid.NewGuid().ToString(); appUser.Enabled = true; var result = _userManager.Create(appUser, password); if(result.Succeeded) _userManager.AddToRole(appUser.Id, "User"); return result; }
public bool UpdateUser(AppUser user) { var result = _userManager.Update(user); return result.Succeeded; }
/// <summary> /// /// </summary> /// <param name="user"></param> /// <param name="oldPassword"></param> /// <param name="newPassword"></param> /// <returns></returns> public bool UpdateUserPassword(AppUser user, string oldPassword, string newPassword) { if (user.PasswordHash != _userManager.PasswordHasher.HashPassword(oldPassword)) { user.PasswordHash = _userManager.PasswordHasher.HashPassword(newPassword); var result = _userManager.Update(user); return result.Succeeded; } else { return false; } }
/// <summary> /// Called when a request to the Token endpoint arrives with a "grant_type" of "password". This occurs when the user has provided name and password /// credentials directly into the client application's user interface, and the client application is using those to acquire an "access_token" and /// optional "refresh_token". If the web application supports the /// resource owner credentials grant type it must validate the context.Username and context.Password as appropriate. To issue an /// access token the context.Validated must be called with a new ticket containing the claims about the resource owner which should be associated /// with the access token. The application should take appropriate measures to ensure that the endpoint isn’t abused by malicious callers. /// The default behavior is to reject this grant type. /// See also http://tools.ietf.org/html/rfc6749#section-4.3.2 /// </summary> /// <param name="context">The context of the event carries information in and results out.</param> /// <returns> /// Task to enable asynchronous execution /// </returns> public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { var identity = new ClaimsIdentity(context.Options.AuthenticationType); AppUser user = new AppUser(); using (AuthRepository repo = new AuthRepository()) { user = repo.FindUser(context.UserName, context.Password); if (user == null) { context.SetError("invalid_grant", "The user name or password is incorrect."); return; } user.UserRoles = repo.GetUserRoles(user.Id); if (user.Enabled == false) { context.SetError("invalid_grant", "The account is disabled."); return; } } identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName)); identity.AddClaim(new Claim("sub", context.UserName)); foreach (string role in user.UserRoles) { identity.AddClaim(new Claim(ClaimTypes.Role, role)); } var props = new AuthenticationProperties(new Dictionary<string, string> { { "as:client_id", context.ClientId ?? string.Empty }, { "displayName", user.Firstname + ' ' + user.Lastname }, { "userName", user.UserName }, { "userRoles", string.Join(",",identity.Claims.Where(c=> c.Type == ClaimTypes.Role).Select(c => c.Value).ToArray()) } }); var ticket = new AuthenticationTicket(identity, props); context.Validated(ticket); }