public async Task <IActionResult> RestaurarPassword([FromBody] CambioPasswordDto cambioPasswordDto) { //1. Buscar el usuario. //2. Cambiiar el Password en la tabla usuario. var validarId = await cambioPasswordRepository.Find(x => x.Id == cambioPasswordDto.Id && x.Activo, x => x.Usuario); if (validarId == null) { return(BadRequest("No existe el usuario")); } byte[] passwordHash, passwordSalt; Utils.CreatePasswordHash(cambioPasswordDto.NuevoPassword, out passwordHash, out passwordSalt); validarId.Usuario.PasswordHash = passwordHash; validarId.Usuario.PasswordSalt = passwordSalt; validarId.Usuario.CambioPassword = true; await userRepository.Edit(validarId.Usuario); validarId.Activo = false; await cambioPasswordRepository.Edit(validarId); //false activo en tabla cambiopassword return(Ok()); }
public async Task <IActionResult> CambiarPassword(CambioPasswordDto nuevoLogin) { ApiResponse <string> response = new ApiResponse <string>(); Login login = new(); login.Usuario = nuevoLogin.Usuario; login.Password = nuevoLogin.Password; Seguridad user = await _seguridadService.GetLoginByCredentials(login).ConfigureAwait(false); bool isValid = _passwordService.Check(user.Password, login.Password); if (!isValid) { response.Succeeded = false; response.Message = "Contraseña actual no coincide"; } else { user.Password = _passwordService.Hash(nuevoLogin.NuevoPassword); _unitOfWork.SeguridadRepository.Update(user); await _unitOfWork.SaveChangesAsync().ConfigureAwait(false); response.Succeeded = true; response.Message = "Contraseña actualizada"; } return(Ok(response)); }
public async Task <bool> ExpiracionId([FromBody] CambioPasswordDto cambioPasswordDto) { //1. Buscar el usuario. //2. Validar Id expiración. var validarId = await cambioPasswordRepository.Find(x => x.Id == cambioPasswordDto.Id && x.Activo, x => x.Usuario); if (validarId == null) { return(false); } TimeSpan span = DateTime.Now - validarId.FechaCreacion; if (validarId.MinutosExpiracion < span.TotalMinutes) { // Activo = false. validarId.Activo = false; await cambioPasswordRepository.Edit(validarId); //Enviar nuevo correo. SendEmailUtils.SendEmail(validarId.Usuario.Correo, $"({validarId.Usuario.Nombres} {validarId.Usuario.Apellidos})", validarId.Id.ToString()); return(false); } return(true); }