public User AddUser(string name, string surname, string emailAddress, string cellphoneNumber, string password) { if (_recipeManagementContext.Users.AsEnumerable().Any(u => u.EmailAddress == emailAddress)) { throw new RecipeManagementException("User with specified email address already exists"); } var user = new User { UserId = Guid.NewGuid(), Name = name, Surname = surname, CellphoneNumber = cellphoneNumber, EmailAddress = emailAddress, PasswordSalt = _cryptographyService.CreateSalt() }; user.Password = _cryptographyService.CreatePasswordHash(password, user.PasswordSalt); DateTime now = DateTime.Now; user.DateCreated = now; user.DateUpdated = now; _recipeManagementContext.Users.Add(user); _recipeManagementContext.SaveChanges(); return user; }
public async Task Create(UserView userView, IFormFile avatar = null) { if (string.IsNullOrWhiteSpace(userView.Password)) { throw new ArgumentException("Password is required"); } if (userView.Username.Length < 3) { throw new ArgumentException("Username length < 3"); } if (await _usersRepository.GetUserByName(userView.Username) != null) { throw new ArgumentException("Username \"" + userView.Username + "\" is already taken"); } if (await _usersRepository.GetUserByEmail(userView.Email) != null) { throw new ArgumentException("Email \"" + userView.Email + "\" is already taken"); } _cryptographyService.CreatePasswordHash(userView.Password, out var passwordHash, out var passwordSalt); userView.Id = NewId.Next().ToGuid().ToString(); var user = _mapper.Map <User>(userView); user.PasswordHash = passwordHash; user.PasswordSalt = passwordSalt; if (avatar != null) { await _amazonS3Repository.Upload(avatar, userView.Id); user.AvatarPath = $"{_s3Settings.ServiceURL}/{_s3Settings.BucketName}/{userView.Id}"; } await _usersRepository.AddUser(user); }