public async Task <UserEntity> Register(UserEntity user, CancellationToken cancellationToken) { if (user == null) { throw new ArgumentNullException(nameof(user)); } if (string.IsNullOrEmpty(user.Username)) { throw new ArgumentException("Username is null!"); } if (string.IsNullOrEmpty(user.Password)) { throw new ArgumentException("Password is null!"); } if ((await _repository.GetByUsername(user.Username, cancellationToken)) != null) { throw new ArgumentException($"Username already exists : '{user.Username}'"); } UserEntity newUser = new UserEntity { Username = user.Username, Password = _dataProtection.HashPassword(user.Password) }; await _repository.Create(newUser, cancellationToken); newUser.Password = null; return(newUser); }