Ejemplo n.º 1
0
        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;
 }