public static Task <IdentityResult> GenerateClientSecretAsync(this UserManager <IdentityUser> userManager, IdentityUser user) { var update = new UserValues { ClientSecret = RandomHash.New() }; return(update.SyncClaims(userManager, user)); }
public static async Task UpdateAsync(this UserManager <IdentityUser> userManager, IdentityUser user, UserValues values) { Guard.NotNull(user, nameof(user)); Guard.NotNull(values, nameof(values)); if (!string.IsNullOrWhiteSpace(values.Email) && values.Email != user.Email) { await DoChecked(() => userManager.SetEmailAsync(user, values.Email)); await DoChecked(() => userManager.SetUserNameAsync(user, values.Email)); } await DoChecked(() => values.SyncClaims(userManager, user)); if (!string.IsNullOrWhiteSpace(values.Password)) { await DoChecked(() => userManager.RemovePasswordAsync(user)); await DoChecked(() => userManager.AddPasswordAsync(user, values.Password)); } }
public static async Task UpdateAsync(this UserManager <IdentityUser> userManager, IdentityUser user, UserValues values) { if (user == null) { throw new DomainObjectNotFoundException("Id", typeof(IdentityUser)); } if (!string.IsNullOrWhiteSpace(values.Email) && values.Email != user.Email) { await DoChecked(() => userManager.SetEmailAsync(user, values.Email), "Cannot update email."); await DoChecked(() => userManager.SetUserNameAsync(user, values.Email), "Cannot update email."); } await DoChecked(() => values.SyncClaims(userManager, user), "Cannot update user."); if (!string.IsNullOrWhiteSpace(values.Password)) { await DoChecked(() => userManager.RemovePasswordAsync(user), "Cannot replace password."); await DoChecked(() => userManager.AddPasswordAsync(user, values.Password), "Cannot replace password."); } }
public static async Task <UserWithClaims> CreateAsync(this UserManager <IdentityUser> userManager, IUserFactory factory, UserValues values) { var user = factory.Create(values.Email); try { await DoChecked(() => userManager.CreateAsync(user)); await DoChecked(() => values.SyncClaims(userManager, user)); if (!string.IsNullOrWhiteSpace(values.Password)) { await DoChecked(() => userManager.AddPasswordAsync(user, values.Password)); } } catch { await userManager.DeleteAsync(user); throw; } return((await userManager.ResolveUserAsync(user)) !); }
public static Task <IdentityResult> SyncClaims(this UserManager <IdentityUser> userManager, IdentityUser user, UserValues values) { return(values.SyncClaims(userManager, user)); }