92 lines
2.8 KiB
PHP
92 lines
2.8 KiB
PHP
<?php
|
|
session_start();
|
|
header('Content-Type: application/json');
|
|
|
|
if (!isset($_SESSION['id_usuario'])) {
|
|
echo json_encode(['success' => false, 'message' => 'Sesión no iniciada']);
|
|
exit();
|
|
}
|
|
|
|
$input = json_decode(file_get_contents('php://input'), true);
|
|
if (!$input) {
|
|
echo json_encode(['success' => false, 'message' => 'No se recibieron datos']);
|
|
exit();
|
|
}
|
|
|
|
require_once 'conexion.php';
|
|
|
|
$id = isset($input['id']) ? intval($input['id']) : 0;
|
|
$contrasenia_actual = $input['contrasenia_actual'] ?? '';
|
|
$contrasenia_nueva = $input['contrasenia_nueva'] ?? '';
|
|
|
|
// Validar campos obligatorios
|
|
if ($id <= 0 || empty($contrasenia_actual) || empty($contrasenia_nueva)) {
|
|
echo json_encode(['success' => false, 'message' => 'Todos los campos son obligatorios']);
|
|
exit();
|
|
}
|
|
|
|
// Verificar que el usuario logueado sea el que intenta modificar su contraseña
|
|
if ($id !== intval($_SESSION['id_usuario'])) {
|
|
echo json_encode(['success' => false, 'message' => 'No permitido']);
|
|
exit();
|
|
}
|
|
|
|
// Obtener la contraseña actual del usuario
|
|
$query = "SELECT Contraseña FROM usuarios WHERE ID_Usuario = ?";
|
|
$stmt = $conexion->prepare($query);
|
|
|
|
if (!$stmt) {
|
|
echo json_encode(['success' => false, 'message' => 'Error en consulta: ' . $conexion->error]);
|
|
exit();
|
|
}
|
|
|
|
$stmt->bind_param('i', $id);
|
|
$stmt->execute();
|
|
$result = $stmt->get_result();
|
|
$usuario = $result->fetch_assoc();
|
|
|
|
if (!$usuario) {
|
|
echo json_encode(['success' => false, 'message' => 'Usuario no encontrado']);
|
|
exit();
|
|
}
|
|
|
|
// Verificar que la contraseña actual sea correcta
|
|
// En este sistema, las contraseñas se guardan en texto plano
|
|
if ($contrasenia_actual === $usuario['Contraseña']) {
|
|
// La contraseña actual es correcta
|
|
} else {
|
|
echo json_encode(['success' => false, 'message' => 'La contraseña actual es incorrecta']);
|
|
exit();
|
|
}
|
|
|
|
// Validar longitud mínima de la nueva contraseña
|
|
if (strlen($contrasenia_nueva) < 6) {
|
|
echo json_encode(['success' => false, 'message' => 'La contraseña debe tener al menos 6 caracteres']);
|
|
exit();
|
|
}
|
|
|
|
// Guardar la nueva contraseña en texto plano (compatible con el sistema actual)
|
|
$contrasenia_nueva_guardada = $contrasenia_nueva;
|
|
|
|
// Actualizar la contraseña
|
|
$update_query = "UPDATE usuarios SET Contraseña = ? WHERE ID_Usuario = ?";
|
|
$update_stmt = $conexion->prepare($update_query);
|
|
|
|
if (!$update_stmt) {
|
|
echo json_encode(['success' => false, 'message' => 'Error en consulta: ' . $conexion->error]);
|
|
exit();
|
|
}
|
|
|
|
$update_stmt->bind_param('si', $contrasenia_nueva_guardada, $id);
|
|
|
|
if ($update_stmt->execute()) {
|
|
echo json_encode(['success' => true, 'message' => 'Contraseña actualizada exitosamente']);
|
|
} else {
|
|
echo json_encode(['success' => false, 'message' => 'Error al actualizar: ' . $update_stmt->error]);
|
|
}
|
|
|
|
$update_stmt->close();
|
|
$stmt->close();
|
|
$conexion->close();
|
|
?>
|