control de usuarios
This commit is contained in:
parent
72885cff2c
commit
24d6a7f7ca
carpeta_temporal/script_base_datos
controllers
js
models
views
|
@ -97,6 +97,43 @@ CREATE TABLE usuario (
|
|||
) ENGINE=InnoDB;
|
||||
|
||||
|
||||
-- OAuth 2.0
|
||||
CREATE TABLE oauth_clients (
|
||||
client_id VARCHAR(80) NOT NULL,
|
||||
client_secret VARCHAR(80) NOT NULL,
|
||||
redirect_uri VARCHAR(2000) DEFAULT NULL,
|
||||
grant_types VARCHAR(80) DEFAULT NULL,
|
||||
scope VARCHAR(4000) DEFAULT NULL,
|
||||
user_id VARCHAR(80) DEFAULT NULL,
|
||||
PRIMARY KEY (client_id)
|
||||
);
|
||||
|
||||
CREATE TABLE oauth_access_tokens (
|
||||
access_token VARCHAR(255) NOT NULL,
|
||||
client_id VARCHAR(80) NOT NULL,
|
||||
user_id VARCHAR(80) DEFAULT NULL,
|
||||
expires TIMESTAMP NOT NULL,
|
||||
scope VARCHAR(4000) DEFAULT NULL,
|
||||
PRIMARY KEY (access_token)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE oauth_refresh_tokens (
|
||||
refresh_token VARCHAR(40) NOT NULL,
|
||||
client_id VARCHAR(80) NOT NULL,
|
||||
user_id VARCHAR(80) DEFAULT NULL,
|
||||
expires TIMESTAMP NOT NULL,
|
||||
scope VARCHAR(4000) DEFAULT NULL,
|
||||
PRIMARY KEY (refresh_token)
|
||||
);
|
||||
|
||||
CREATE TABLE oauth_scopes (
|
||||
scope VARCHAR(80) NOT NULL,
|
||||
is_default BOOLEAN,
|
||||
PRIMARY KEY (scope)
|
||||
);
|
||||
|
||||
|
||||
-- DML -------------------------------------------------------------------------------------
|
||||
|
||||
-- Inserción catalogo "genero":
|
||||
|
@ -180,4 +217,10 @@ INSERT INTO candidato (nombres, primer_apellido, segundo_apellido, correo, telef
|
|||
('Juan', 'Pérez', 'Gómez', 'correo@gmail.com', '1234567890', 1, 1, 2, 1);
|
||||
|
||||
INSERT INTO info_candidatos (id_candidato, id_pais, id_estado, id_municipio, id_colonia, id_nivel, id_giro, nombre_empresa_institucion, motivo_examen, calificacion_servicio, consentimiento_pub) VALUES
|
||||
(1, 1, 1, 1001, 10011, 5, 1, 'Empresa de Prueba', 'Motivo de prueba', 5, 1);
|
||||
(1, 1, 1, 1001, 10011, 5, 1, 'Empresa de Prueba', 'Motivo de prueba', 5, 1);
|
||||
|
||||
|
||||
INSERT INTO oauth_clients (client_id, client_secret, redirect_uri, grant_types, scope, user_id)
|
||||
VALUES ('testclient', 'testpass', NULL, 'client_credentials', 'basic', NULL);
|
||||
|
||||
INSERT INTO oauth_scopes (scope, is_default) VALUES ('basic', true);
|
|
@ -40,13 +40,8 @@ class UsuarioController{
|
|||
echo "Usuario: ${usuario} registrado exitosamente.";
|
||||
}
|
||||
|
||||
public static function eliminarUsuario($usuario){
|
||||
if (!self::existeUsuario($usuario)) {
|
||||
echo "El usuario no existe.";
|
||||
return;
|
||||
}
|
||||
self::$usuarioModel->eliminarUsuario($usuario);
|
||||
echo "Usuario: ${usuario} eliminado exitosamente.";
|
||||
public static function eliminarUsuario($id_usuario){
|
||||
return self::$usuarioModel->eliminarUsuario($id_usuario);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
<?php
|
||||
header('Content-Type: application/json', 'charset=UTF-8');
|
||||
require_once __DIR__ . '/UsuarioController.php';
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['id_usuario'])) {
|
||||
$id_usuario = $_POST['id_usuario'];
|
||||
$resultado = UsuarioController::eliminarUsuario($id_usuario);
|
||||
echo json_encode($resultado);
|
||||
|
||||
} else {
|
||||
http_response_code(400);
|
||||
echo json_encode([
|
||||
'estado' => 'error',
|
||||
'mensaje' => 'Método no permitido.'
|
||||
]);
|
||||
}
|
||||
|
||||
?>
|
|
@ -0,0 +1,34 @@
|
|||
document.addEventListener("DOMContentLoaded" , function() {
|
||||
const tabla = document.querySelector('table');
|
||||
|
||||
tabla.addEventListener("click", function(evento) {
|
||||
const botonEliminar = evento.target.closest(".boton-eliminar");
|
||||
|
||||
if (botonEliminar) {
|
||||
const idUsuarioEliminar = botonEliminar.dataset.idUsuario;
|
||||
const nombreUsuarioEliminar = botonEliminar.dataset.nombreUsuario;
|
||||
|
||||
// Mostrar un mensaje de confirmación antes de eliminar
|
||||
if (!confirm("¿Desea eliminar al usuario " + nombreUsuarioEliminar + "?")) {
|
||||
return;
|
||||
}
|
||||
|
||||
const data = new FormData();
|
||||
data.append("id_usuario", idUsuarioEliminar);
|
||||
|
||||
fetch('../controllers/eliminarUsuario.php', {
|
||||
method: 'POST',
|
||||
body: data
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
alert(data.mensaje);
|
||||
location.reload();
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error('Error:', error);
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
});
|
|
@ -69,9 +69,12 @@ class UsuarioModel {
|
|||
|
||||
public function obtenerUsuarios() {
|
||||
// Preparar la consulta mysql usando msqli
|
||||
$stmt = $this->conn->prepare("SELECT usuario FROM usuario");
|
||||
$stmt = $this->conn->prepare("SELECT id, usuario FROM usuario");
|
||||
if (!$stmt->execute()) {
|
||||
throw new Exception("Error al obtener nombres de usuarios: " . $stmt->error);
|
||||
return [
|
||||
'estado' => 'error',
|
||||
'mensaje' => 'Error al obtener usuarios: ' . $stmt->error
|
||||
];
|
||||
}
|
||||
|
||||
// Obtener el resultado
|
||||
|
@ -86,14 +89,21 @@ class UsuarioModel {
|
|||
}
|
||||
|
||||
public function eliminarUsuario($id){
|
||||
// Preparar la consulta mysql usando msqli
|
||||
$stmt = $this->conn->prepare("DELETE FROM usuario WHERE id = ?");
|
||||
$stmt->bind_param("i", $id);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
throw new Exception("Error al eliminar usuario: " . $stmt->error);
|
||||
return [
|
||||
'estado' => 'error',
|
||||
'mensaje' => 'Error al eliminar usuario: ' . $stmt->error
|
||||
];
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
return [
|
||||
'estado' => 'exitoso',
|
||||
'mensaje' => 'Usuario eliminado exitosamente.'
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -39,6 +39,7 @@ if(isset($resultado['estado'])){
|
|||
<li><a href="inicio.html"><i class='bx bxs-dashboard icon' ></i>Dashboard</a></li>
|
||||
<li><a href="formulario-candidato.html" target="_blank"><i class='bx bxs-dashboard icon' ></i>Formulario de registro</a></li>
|
||||
<li><a href="control-candidatos.php" class="active"><i class='bx bxs-dashboard icon' ></i>Control candidatos</a></li>
|
||||
<li><a href="control-usuarios.php"><i class='bx bxs-dashboard icon' ></i>Control usuario</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
<?php
|
||||
require_once __DIR__ . "/../controllers/UsuarioController.php";
|
||||
|
||||
$resultado = UsuarioController::obtenerUsuarios();
|
||||
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/boxicons@latest/css/boxicons.min.css'>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="../css/inicio.css">
|
||||
<title>Control usuarios</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- SIDEBAR -->
|
||||
<section id="sidebar">
|
||||
<a href="inicio.html" class="brand"><i class='bx bx-code-alt icon' ></i> LANIA</a>
|
||||
|
||||
<ul class="side-menu">
|
||||
<li><a href="inicio.html"><i class='bx bxs-dashboard icon' ></i>Dashboard</a></li>
|
||||
<li><a href="formulario-candidato.html" target="_blank"><i class='bx bxs-dashboard icon' ></i>Formulario de registro</a></li>
|
||||
<li><a href="control-candidatos.php"><i class='bx bxs-dashboard icon' ></i>Control candidatos</a></li>
|
||||
<li><a href="control-usuarios.php" class="active"><i class='bx bxs-dashboard icon' ></i>Control usuario</a></li>
|
||||
</ul>
|
||||
|
||||
|
||||
</section>
|
||||
<!-- .SIDEBAR -->
|
||||
|
||||
|
||||
<section id="content">
|
||||
<!-- ========== MAIN ========== -->
|
||||
<main>
|
||||
|
||||
<h1 class="title" style="margin: 2% 1%">Control</h1>
|
||||
|
||||
<!-- ------------------------------ div qué contiene la tabla ------------------------------------------ -->
|
||||
<div style="margin: 1%">
|
||||
<div class="table-responsive rounded-4" style="height: 100%;width: 100%;">
|
||||
<table class="table table-hover table-bordered border-dark-subtle shadow-sm">
|
||||
<thead>
|
||||
<tr class="table-dark">
|
||||
<th>Nombre</th>
|
||||
<th>Acciones</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="table-group-divider">
|
||||
|
||||
<?php foreach ($resultado as $usuario): ?>
|
||||
<tr>
|
||||
<td><?php echo $usuario['usuario'] ?></td>
|
||||
<td>
|
||||
<a class="btn border rounded-3 shadow" role="button" style="background-color: #35245b;color: white;" href="modificar-usuario.php?id_usuario=<?php echo $usuario['id'] ?>">Modificar</a>
|
||||
<button class="boton-eliminar btn border rounded-3 shadow" role="button" style="background-color: #35245b;color: white;" data-id-usuario="<?php echo $usuario['id'] ?>" data-nombre-usuario="<?php echo $usuario['usuario'] ?>"><i class='bx bxs-trash-alt' style='color:#ffffff'></i>Eliminar</button>
|
||||
</td>
|
||||
<tr>
|
||||
<?php endforeach; ?>
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- ------------------------------ /div qué contiene la tabla ----------------------------------------- -->
|
||||
</main>
|
||||
<!-- .......... MAIN .......... -->
|
||||
</section>
|
||||
|
||||
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
|
||||
<script src="../js/sidebar-navbar.js"></script>
|
||||
<script src="../js/control-usuario.js"></script>
|
||||
|
||||
<script src="https://website-widgets.pages.dev/dist/sienna.min.js" defer></script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,4 @@
|
|||
<?php
|
||||
|
||||
echo 'Hola ' . $_GET['id_usuario'];
|
||||
?>
|
Loading…
Reference in New Issue