<!doctype html>
<html lang="es">
    <head>
        <meta charset="UTF-8">
        <title>Ejercicio 2</title>
        <style>
            *{
                margin: 0 auto;
                padding: 0 auto;
            }
            body{
                width: 1920px;
                height: 1080px;
                font-family: Arial, sans-serif;
                background: #f4f6f9;
                align-items: center;
                text-align: center;
            }

            nav{
                background-color: #456D96;
                color: white;
            }

            .ejercicio{
                margin-top: 10px;
                margin-bottom: 10px;
                width: 750px;
                border: 1px solid black;
                border-radius: 10px;
                text-align: left;
                padding: 15px;
            }

            footer{
                margin: auto;
                background-color: #456d96;
                text-align: center;
                align-content: center;
                height: 50px;
                ;
                color: white;

                & a{
                    text-decoration: none;
                }
            }
        </style>
    </head>
    <body>
        <nav>
            <h2>DWES - Tema 5</h2>
            <h2>Ejercicio 2</h2>
        </nav>
        <main>
            <div class="ejercicio">
                <?php
                /**
                 * @author Álvaro Allén
                 * @since 17-11-2025
                 * Control de acceso con identificación del usuario basado en la función header() y
                 * uso de la tabla "Usuario" de la base de datos.
                 */
                // Establecemos la configuración de fecha, hora y formato de España
                setlocale(LC_TIME, 'es_ES.UTF-8', 'es_ES', 'spanish');
                // Definimos una variable de tipo DateTime con la fecha actual de España
                // Enlace para importar las librerías de validación de campos
                require_once '../core/231018libreriaValidacion.php';
                require_once '../core/miLibreriaValidacion.php';
                // Enlazamos el archivo de configuración para poder acceder a la base de datos.
                require_once '../config/confDB.php';

                $validacionUsuario = false;
                
                if(!isset($_SERVER['PHP_AUTH_USER'])){
                    // En caso de no haber rellenado el campo de la variable $_SERVER, volvemos a mostrar la ventana emergente para rellenarlo.
                    header('WWW-Authenticate: Basic realm="Contenido restringido"');
                    header('HTTP/1.0 401 Unauthorized');
                    
                    echo '<h3>Acceso restringido</h3>';
                    exit;
                } else{
                    // En caso de haber rellenado los campos
                    try{
                        // Guardamos la contraseña introducida concatenada con el nombre de usuario.
                        $usuarioPassword = $_SERVER['PHP_AUTH_USER'].$_SERVER['PHP_AUTH_PW'];
                        
                        // Creamos un objeto de la clase PDO conectado a la base de datos.
                        $miDB = new PDO(DSN, USERNAME, PASSWORD);
                        
                        // Realizamos la consulta preparada con las condicion de que el usuario exista y su contraseña sea el resument de usuario+contraseña.
                        $sql = "SELECT * FROM T01_Usuario WHERE T01_CodUsuario = :usuario AND T01_Password = sha2(:pass, 256)";
                        $consulta = $miDB->prepare($sql);
                        $consulta->execute([
                            ':usuario' => $_SERVER['PHP_AUTH_USER'],
                            ':pass' => $usuarioPassword
                        ]);
                        
                        $resultado = $consulta->rowCount();
                        if($resultado === 1){
                            // Si existe un usuari y la contraseña coincide, cambiamos el valor de la bandera a true.
                            $validacionUsuario = true;
                        }
                    } catch(PDOException $exPDO){
                        echo '<p>Mensaje de error: '.$exPDO->getMessage().'</p>';
                    } finally {
                        unset($miDB);
                    }
                    
                    if(!$validacionUsuario){
                        // En caso de que no exista el usuario y la contraseña sea incorrecta se muestra la ventana emergente solicitando los datos de nuevo.
                        header('WWW-Authenticate: Basic realm="Contenido restringido"');
                        header('HTTP/1.0 401 Unauthorized');
                    
                        echo '<h3>Acceso restringido</h3>';
                        exit;
                    }
                }
                ?>
                
                <h3>Acceso permitido</h3>
                <p>Bienvenido <strong><?php echo $_SERVER['PHP_AUTH_USER']?></strong></p>
            </div>
        </main>
        <footer>
            <div>
                <a href="../indexProyectoTema5.php">
                    Álvaro Allén Perlines
                </a>
                <time datetime="2025-11-19">19-11-2025</time>
            </div>
        </footer>
    </body>
</html>