예제 #1
0
        public async Task <IActionResult> UpdatePassword([FromBody] ForgotPasswordInput input)
        {
            var forgotPasswordInfo = await ForgotPasswordInfoRepository
                                     .FirstOrDefaultAsync(f => f.Hash == input.Hash && f.ExpirationTime >= DateTime.Now);

            if (forgotPasswordInfo == null || forgotPasswordInfo.Hash != input.Hash)
            {
                return(NoContent());
            }

            var user = await UserRepository.FindAsync(forgotPasswordInfo.UserId);

            if (user == null)
            {
                return(NoContent());
            }

            PasswordManager.CreatePasswordSaltAndHash(input.Password, out var passwordSalt, out var passwordHash);
            user.PasswordSalt = passwordSalt;
            user.PasswordHash = passwordHash;
            UserRepository.Update(user);
            ForgotPasswordInfoRepository.Remove(forgotPasswordInfo);
            await _userContext.SaveChangesAsync();

            return(Ok());
        }
예제 #2
0
        private async Task <RegisterOutput> TryInsertUser(RegisterInput input)
        {
            var output    = new RegisterOutput();
            var userToAdd = _mapper.Map <ApplicationUser>(input);

            PasswordManager.CreatePasswordSaltAndHash(input.Password, out var passwordSalt, out var passwordHash);
            userToAdd.PasswordSalt = passwordSalt;
            userToAdd.PasswordHash = passwordHash;
            var userSaved = await UserRepository.AddAsync(userToAdd);

            await _userContext.SaveChangesAsync();

            output.Result = RegisterOutputResult.Success;
            output.UserId = userSaved.Entity.Id;
            return(output);
        }