protected virtual async Task UpdateUserAsync(CreateOrUpdateUserInput input) { Debug.Assert(input.User.Id != null, "input.User.Id should be set."); var user = await UserManager.FindByIdAsync(input.User.Id.Value); //Update user properties input.User.MapTo(user); //Passwords is not mapped (see mapping configuration) if (!input.User.Password.IsNullOrEmpty()) { CheckErrors(await UserManager.ChangePasswordAsync(user, input.User.Password)); } CheckErrors(await UserManager.UpdateAsync(user)); //Update roles CheckErrors(await UserManager.SetRoles(user, input.AssignedRoleNames)); if (input.SendActivationEmail) { user.SetNewEmailConfirmationCode(); await _userEmailer.SendEmailActivationLinkAsync(user, input.User.Password); } }
protected virtual async Task CreateUserAsync(CreateOrUpdateUserInput input) { var user = input.User.MapTo<User>(); //Passwords is not mapped (see mapping configuration) user.TenantId = AbpSession.TenantId; if (!input.User.Password.IsNullOrEmpty()) { CheckErrors(await UserManager.PasswordValidator.ValidateAsync(input.User.Password)); } else { input.User.Password = User.CreateRandomPassword(); } user.Password = new PasswordHasher().HashPassword(input.User.Password); user.ShouldChangePasswordOnNextLogin = input.User.ShouldChangePasswordOnNextLogin; user.Roles = new Collection<UserRole>(); foreach (var roleName in input.AssignedRoleNames) { var role = await _roleManager.GetRoleByNameAsync(roleName); user.Roles.Add(new UserRole { RoleId = role.Id }); } CheckErrors(await UserManager.CreateAsync(user)); await CurrentUnitOfWork.SaveChangesAsync(); //To get new user's Id. if (input.SendActivationEmail) { user.SetNewEmailConfirmationCode(); await _userEmailer.SendEmailActivationLinkAsync(user, input.User.Password); } }
public async Task CreateOrUpdateUser(CreateOrUpdateUserInput input) { if (input.User.Id.HasValue) { await UpdateUserAsync(input); } else { await CreateUserAsync(input); } }