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