diff --git a/src/app/components/app/app_page.php b/src/app/components/app/app_page.php index b9e26b3dbcca9d3e9b438b3644fb02736d825d5a..ebb38f8ecaf79087701cc9846a3e190c6859d082 100644 --- a/src/app/components/app/app_page.php +++ b/src/app/components/app/app_page.php @@ -6,6 +6,8 @@ <!-- Global CSS --> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/globals.css"> <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/search/search.css"> + <!-- Page CSS --> + <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/home/Home.css"> <!-- JavaScript Library --> <script type="text/javascript" src="<?= BASE_URL ?>/javascript/player.js" defer></script> <script type="text/javascript" src="<?= BASE_URL ?>/javascript/dashboard/layout.js" defer></script> @@ -22,7 +24,7 @@ <body> <?php include(dirname(__DIR__) . "/common/sidebar.php")?> <?php include(dirname(__DIR__) . "/common/profile.php")?> - <main> + <main id="main-section"> <!-- Called by app.js --> </main> <?php include(dirname(__DIR__) . "/common/player.php")?> diff --git a/src/app/components/home/home_page.php b/src/app/components/home/home_page.php index d482164b20887594e1d52b75c0a3c5fb827d4422..2ae5877b96be04fefe9bdb25181be5050ac0c11d 100644 --- a/src/app/components/home/home_page.php +++ b/src/app/components/home/home_page.php @@ -1,32 +1,15 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <!-- Global CSS --> - <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/globals.css"> - <!-- Page-specific CSS --> - <link rel="stylesheet" type="text/css" href="<?= BASE_URL ?>/styles/home/home.css"> - - <link rel="preconnect" href="https://fonts.googleapis.com"> - <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> - <link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,700;1,9..40,400;1,9..40,700&display=swap" rel="stylesheet"> - <link href='https://unpkg.com/boxicons@2.1.4/css/boxicons.min.css' rel='stylesheet'> - <title>Homepage</title> -</head> -<body> - <main> - <div class="comedy-content"> - <h4>COMEDY</h4> - <div class="podcast-list"> - <?php if (isset($this->data["tech_podcasts"])): ?> +<section> + <div class="comedy-content"> + <h4>COMEDY</h4> + <div class="podcast-list"> + <?php if (isset($this->data["tech_podcasts"])) : ?> <div class="podcast-list"> - <?php foreach ($this->data["tech_podcasts"] as $podcast): ?> + <?php foreach ($this->data["tech_podcasts"] as $podcast) : ?> <div class="podcast"> <img class="thumbnail" src="<?= STORAGE_URL . $podcast->url_thumbnail ?>" alt="image"> <div class="info"> - <div class="sh5"><?=$podcast->title?> </div> - <div class="b5"><?=$podcast->name?></div> + <div class="sh5"><?= $podcast->title ?> </div> + <div class="b5"><?= $podcast->name ?></div> </div> </div> <?php endforeach; ?> @@ -35,9 +18,7 @@ <div class="sh4"> no results found. </div> - <?php endif;?> - </div> + <?php endif; ?> </div> - </main> -</body> -</html> \ No newline at end of file + </div> +</section> \ No newline at end of file diff --git a/src/app/controllers/app/app_controller.php b/src/app/controllers/app/app_controller.php index 88d69f645e873eee1089ef7578eee6c99a6c5933..03b558a60e1ef71beff3b15efb5bbda7926f1d81 100644 --- a/src/app/controllers/app/app_controller.php +++ b/src/app/controllers/app/app_controller.php @@ -6,12 +6,27 @@ class AppController { // Session validation session_start(); + + if (isset($_SESSION["is_premium"]) && $_SESSION["is_premium"]) { + http_response_code(403); + header("Location: http://localhost:5173"); + return; + } + if (!isset($_SESSION["user_id"])) { http_response_code(403); header("Location: " . BASE_URL . "/login"); return; } + if ($_SESSION["expire"] < time()) { + session_destroy(); + http_response_code(403); + header('Location: ' . BASE_URL . "/login"); + return; + } + + // Get id_episode from session $epsId = ""; if (isset($_SESSION["eps_id"])) { diff --git a/src/app/controllers/home/get_home.php b/src/app/controllers/home/get_home.php index 5344363de2f3605c0ad767b2cfe3b3ab5e426720..326d83989560633f39876647717aabc01881743e 100644 --- a/src/app/controllers/home/get_home.php +++ b/src/app/controllers/home/get_home.php @@ -5,7 +5,7 @@ class GetHomeController public function call() { session_start(); - + $data = []; // podcast Info diff --git a/src/app/controllers/login/get_login.php b/src/app/controllers/login/get_login.php index 44627b028f597b1a2d46150bb2d66b8a45b41171..7d60ec202c37317ec5533bf1ae844afb459bc603 100644 --- a/src/app/controllers/login/get_login.php +++ b/src/app/controllers/login/get_login.php @@ -7,16 +7,14 @@ class GetLoginController require_once __DIR__ . "/../../views/login/login.php"; require_once __DIR__ . "/../../views/home/home_view.php"; session_start(); - - if(isset($_SESSION['user_id'])){ - + + if (isset($_SESSION['user_id']) && $_SESSION["expire"] >= time()) { + header("Location: " . BASE_URL . "/home?user_id=" . $_SESSION["user_id"]); - - }else{ + } else { $data = []; $view = new LoginView($data); $view->render(); } - } -} \ No newline at end of file +} diff --git a/src/app/controllers/login/post_login.php b/src/app/controllers/login/post_login.php index 9cedc53d640273b8242fd137b0e0e814e265f69c..6af4226a2cf70eec82d7d6617675c92497505a0f 100644 --- a/src/app/controllers/login/post_login.php +++ b/src/app/controllers/login/post_login.php @@ -22,14 +22,16 @@ class PostLoginController exit; } else { if (password_verify($password, $user['password'])) { - $_SESSION["user_id"] = $user['id_user']; - $_SESSION["eps_id"] = ""; - $_SESSION["role_id"] = $user['is_admin']; + $_SESSION["start"] = time(); + $_SESSION["expire"] = time() + 60; if ($username == "premium") { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://tubes-rest-service:3000/token/create"); curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + "Authorization: Bearer " . $_ENV["REST_PHP_KEY"], + ]); curl_setopt( $ch, CURLOPT_POSTFIELDS, @@ -43,11 +45,20 @@ class PostLoginController curl_close($ch); $jwtToken = json_decode($output, TRUE)["token"]; - $_SESSION["token"] = $jwtToken; + $_SESSION["is_premium"] = true; + http_response_code(201); + header('Content-type: application/json'); + echo json_encode(["redirect_url" => "http://localhost:5173/?token=" . $jwtToken]); + exit; } + $_SESSION["user_id"] = $user['id_user']; + $_SESSION["eps_id"] = ""; + $_SESSION["role_id"] = $user['is_admin']; + $_SESSION["is_premium"] = false; + http_response_code(201); header('Content-type: application/json'); echo json_encode(["redirect_url" => BASE_URL . "/home"]); diff --git a/src/app/core/app.php b/src/app/core/app.php index 75b6eee8ddb24014c45ecc723ad35d36a0281002..4da6d4e6b28b502bbd51282b488c21e6c4a2e40e 100644 --- a/src/app/core/app.php +++ b/src/app/core/app.php @@ -46,8 +46,8 @@ class App $router->post("public/logout", new LogoutController()); - $router->get("public/home", new GetHomeController()); - $router->get("public/search", new GetSearchController()); + // $router->get("public/home", new GetHomeController()); + // $router->get("public/search", new GetSearchController()); $router->get("public/login", new GetLoginController()); $router->post("public/login", new PostLoginController()); $router->get("public/signup", new GetSignupController()); diff --git a/src/public/javascript/app/app.js b/src/public/javascript/app/app.js index 68eb6c49afbb79fd42d94cb4c46da18ea2909320..67c843ee10af3dcd38dbb506df9b6c893f7fa418 100644 --- a/src/public/javascript/app/app.js +++ b/src/public/javascript/app/app.js @@ -1,4 +1,4 @@ -const mainSection = document.querySelector('main'); +const mainSection = document.querySelector('#main-section'); const sidebar = document.querySelector('.sidebar'); const urls = window.location.href.split("?")[0].split("/");