コード例 #1
0
        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;
        }
コード例 #2
0
        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);
        }