Ejemplo n.º 1
0
        public IActionResult UsePasswordRecovery([FromBody] PasswordRecoveryDto model)
        {
            var user = context.Users.FirstOrDefault(a => a.RecoveryCode.Equals(model.Code));

            if (user == null)
            {
                return(BadRequest("Podane błędne dane"));
            }

            if (!UserValidators.CheckIfPasswordIsCorrect(model.Password))
            {
                return(BadRequest("Hasło musi posiadać wielką i małą literę, liczbę oraz znak specjalny a także składać się co najmniej z 8 znaków"));
            }

            CreatePasswordHash(model.Password, out byte[] passwordHash, out byte[] passwordSalt);

            user.RecoveryCode           = null;
            user.RecoveryExpirationDate = null;
            user.PasswordHash           = passwordHash;
            user.PasswordSalt           = passwordSalt;

            try
            {
                context.SaveChanges();

                Logger.Log($"{nameof(UsersController)} {nameof(UsePasswordRecovery)}", $"Hasło zostało zmienione dla użytkownika o id: {user.Id}", NLog.LogLevel.Info);
            }
            catch (Exception)
            {
                return(BadRequest());
            }

            return(Ok());
        }
Ejemplo n.º 2
0
        public IActionResult ChangePassword([FromBody] UserPasswordResetDto model)
        {
            var userId = ClaimsReader.GetUserId(Request.HttpContext.Request);
            var user   = context.Users.SingleOrDefault(a => a.Id == userId);

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

            if (!UserValidators.CheckIfPasswordIsCorrect(model.Password))
            {
                return(BadRequest("Hasło musi posiadać wielką i małą literę, liczbę oraz znak specjalny a także składać się co najmniej z 8 znaków"));
            }

            try
            {
                if (!VerifyPasswordHash(model.OldPassword, user.PasswordHash, user.PasswordSalt))
                {
                    return(BadRequest());
                }
            }
            catch (Exception)
            {
                return(BadRequest());
            }

            CreatePasswordHash(model.Password, out byte[] passwordHash, out byte[] passwordSalt);

            user.PasswordHash = passwordHash;
            user.PasswordSalt = passwordSalt;

            try
            {
                context.SaveChanges();
            }
            catch (Exception)
            {
                return(BadRequest());
            }

            return(Ok());
        }