public static Account Create(Username username, Password password, Name name, Roles role, IUsernameUniqueChecker usernameUniqueChecker, IPasswordHasher passwordHasher, CancellationToken cancellationToken = default) { if (!username.IsValid(out string usernameErrorMessage)) { throw new UsernameNotValidException(username, usernameErrorMessage); } if (!password.IsValid(out string passwordErrorMessage)) { throw new PasswordNotValidException(password, passwordErrorMessage); } if (!usernameUniqueChecker.CheckAsync(username, cancellationToken).ConfigureAwait(continueOnCapturedContext: false).GetAwaiter().GetResult()) { throw new UsernameAlreadyExistException(username); } if (!Enum.IsDefined(typeof(Roles), role)) { throw new InvalidRoleException(role); } PasswordHash passwordHash = passwordHasher.Hash(password); Account account = new Account(username, passwordHash, name, role); return(account); }
public CreateAccountCommandHandler(IAccountDbContext dbContext, IUsernameUniqueChecker usernameUniqueChecker, IPasswordHasher passwordHasher) { _dbContext = dbContext; _usernameUniqueChecker = usernameUniqueChecker; _passwordHasher = passwordHasher; }