// public is for test purposes. public async Task <DbUser> CreateUserAsync(ClaimsUser claimsUser) { _emailDomainValidatorService.Validate(claimsUser.Email); var user = new DbUser { UserName = claimsUser.Email, Email = claimsUser.Email, FirstName = claimsUser.FirstName, LastName = claimsUser.LastName, EmailConfirmed = true }; IdentityResult createUserResult = await _userManager.CreateAsync(user); if (!createUserResult.Succeeded) { throw CreateException($"Cannot create new user '{claimsUser.Email}'\r\n", createUserResult); } string role = (await ChooseUserRoleAsync()).ToString(); IdentityResult roleAddingResult = await _userManager.AddToRoleAsync(user, role); if (!roleAddingResult.Succeeded) { throw CreateException($"Cannot add role '{role}' to user '{claimsUser.Email}'\r\n", roleAddingResult); } var claimsAddingResult = await _userManager.AddClaimsAsync( user : user, claims : claimsUser.Claims().Concat(user.Claims(role))); if (!claimsAddingResult.Succeeded) { throw CreateException($"Cannot add claims to user '{claimsUser.Email}'\r\n", claimsAddingResult); } return(user); }
// public is for test purposes. public async Task <Database.Models.User> CreateUserAsync(GoogleClaims claimsUser) { _emailDomainValidatorService.Validate(claimsUser.Email); Role userRole = await ChooseUserRoleAsync(); var user = new Database.Models.User( firstName: claimsUser.GivenName, lastName: claimsUser.Surname, email: claimsUser.Email, role: userRole, emailConfirmed: true); claimsUser = claimsUser.ReadUser(user); IdentityResult createUserResult = await _userManager.CreateAsync(user); if (!createUserResult.Succeeded) { throw CreateException($"Cannot create new user '{claimsUser.Email}'\r\n", createUserResult); } string role = userRole.ToString(); IdentityResult roleAddingResult = await _userManager.AddToRoleAsync(user, role); if (!roleAddingResult.Succeeded) { throw CreateException($"Cannot add role '{role}' to user '{claimsUser.Email}'\r\n", roleAddingResult); } IdentityResult claimsAddingResult = await _userManager.AddClaimsAsync(user, claimsUser); if (!claimsAddingResult.Succeeded) { throw CreateException($"Cannot add claims to user '{claimsUser.Email}'\r\n", claimsAddingResult); } return(user); }
public async Task <int> ImportAsync(IReadOnlyCollection <UserDto> users) { users.ThrowIfNullOrEmpty(nameof(users)); if (users.Count != users.GroupBy(x => x.UserName).Count()) { throw new BadAssException("Collection of users for import contains duplications"); } var usersToInsert = new List <User>(); const Role defaultRole = Role.Employee; foreach (UserDto user in users) { user.PurifyData(); _emailDomainValidatorService.Validate(user.UserName); if (await _userRepository.CheckHasUserWithUsernameAsync(user.UserName)) { continue; } var applicationUserToInsert = new User( firstName: user.FirstName, lastName: user.LastName, userName: user.UserName, role: defaultRole, emailConfirmed: false); usersToInsert.Add(applicationUserToInsert); } if (usersToInsert.Any()) { await _userRepository.InsertAsync(usersToInsert); } return(usersToInsert.Count); }
public void Validate_Email_OnEmpty_Email() { var target = new EmailDomainValidatorService("example.com"); Assert.ThrowsAny <ArgumentNullException>(() => target.Validate(string.Empty)); }
public void Validate_Email_Domain_Wrong(string email) { var target = new EmailDomainValidatorService("example.com"); Assert.ThrowsAny <BadAssException>(() => target.Validate(email)); }