From 7ea9eac407a7dd9234cf2d93925aa060f92b488d Mon Sep 17 00:00:00 2001
From: Bitha17 <16521076@mahasiswa.itb.ac.id>
Date: Mon, 9 Oct 2023 13:29:10 +0700
Subject: [PATCH] auth messages

---
 app/Controllers/EventController.php     |  8 --------
 app/Controllers/PembelianController.php |  9 ---------
 app/Controllers/TicketController.php    |  8 --------
 app/Controllers/UserController.php      | 20 ++++++++++++++++----
 app/Views/login/login.php               | 10 ++++++++++
 app/Views/login/register.php            | 11 +++++++++++
 6 files changed, 37 insertions(+), 29 deletions(-)

diff --git a/app/Controllers/EventController.php b/app/Controllers/EventController.php
index 57c5df8..2961a63 100644
--- a/app/Controllers/EventController.php
+++ b/app/Controllers/EventController.php
@@ -5,14 +5,6 @@ ob_start();
 require_once(__DIR__ . '/../Models/Event.php');
 require_once(__DIR__ . '/TicketController.php');
 
-if (!isset($_SESSION["user_id"])) {
-    session_start();
-    if (!isset($_SESSION["user_id"])) {
-        // User is not authenticated; redirect to login page
-        header("Location: /app/Views/login/login.php");
-        ob_end_flush();
-    }
-}
 
 class EventController {
     private $eventModel;
diff --git a/app/Controllers/PembelianController.php b/app/Controllers/PembelianController.php
index fa33e13..9f5526d 100644
--- a/app/Controllers/PembelianController.php
+++ b/app/Controllers/PembelianController.php
@@ -5,15 +5,6 @@ ob_start();
 // require_once 'Pembelian.php';
 require_once(__DIR__ . '/../Models/Pembelian.php');
 
-if (!isset($_SESSION["user_id"])) {
-    session_start();
-    if (!isset($_SESSION["user_id"])) {
-        // User is not authenticated; redirect to login page
-        header("Location: /app/Views/login/login.php");
-        ob_end_flush();
-    }
-}
-
 class PembelianController {
     private $pembelianModel;
     
diff --git a/app/Controllers/TicketController.php b/app/Controllers/TicketController.php
index 0c5c8f0..962586f 100644
--- a/app/Controllers/TicketController.php
+++ b/app/Controllers/TicketController.php
@@ -3,14 +3,6 @@
 ob_start();
 // require_once 'Ticket.php';
 require_once(__DIR__ . '/../Models/Ticket.php');
-if (!isset($_SESSION["user_id"])) {
-    session_start();
-    if (!isset($_SESSION["user_id"])) {
-        // User is not authenticated; redirect to login page
-        header("Location: /app/Views/login/login.php");
-        ob_end_flush();
-    }
-}
 
 class TicketController {
     private $ticketModel;
diff --git a/app/Controllers/UserController.php b/app/Controllers/UserController.php
index 5ba7394..d4c0dc8 100644
--- a/app/Controllers/UserController.php
+++ b/app/Controllers/UserController.php
@@ -53,10 +53,11 @@ class UserController {
             $_SESSION["user_id"] = $user['user_ID'];
             return "success";
         } else {
+            session_start();
             return "wrong credentials";
         }
     }
-
+    
     public function logout() {
         session_start();
         if (isset($_SESSION["user_id"])) {
@@ -67,11 +68,11 @@ class UserController {
             return "user not logged in";
         }
     }
-
+    
     public function editProfile($user_id, $name, $username, $email) {
         return $this->userModel->editProfile($user_id, $name, $username, $email);
     }
-
+    
     public function handleRequest() {
         if (isset($_POST['userAction'])) {
             if ($_POST['userAction'] === 'login') {
@@ -83,6 +84,8 @@ class UserController {
                         header("Location:Views/home/home.php");
                         ob_end_flush();
                     } else {
+                        session_start();
+                        $_SESSION['message'] = "wrong credentials";
                         header("Location:Views/login/login.php");
                         ob_end_flush();
                     }
@@ -91,6 +94,8 @@ class UserController {
                         header("Location:Views/home/home.php");
                         ob_end_flush();
                     } else {
+                        session_start();
+                        $_SESSION['message'] = "wrong credentials";
                         header("Location:Views/login/login.php");
                         ob_end_flush();
                     }
@@ -102,17 +107,24 @@ class UserController {
                 $userEmail = $_POST['userEmail'];
                 $userPassword = $_POST['userPassword'];
                 $isAdmin = isset($_POST['isAdmin']) ? 1 : 0;
-                $success = $this->registerUser($userName,$userUsername,$userEmail,$userPassword,$isAdmin)['success'];
+                $response = $this->registerUser($userName,$userUsername,$userEmail,$userPassword,$isAdmin);
+                $success = $response['success'];
                 if($success){
+                    session_start();
+                    $_SESSION['message'] = "You have successfully registered. Please log in";
                     header("Location:Views/login/login.php");
                     ob_end_flush();
                 } else {
+                    session_start();
+                    $_SESSION['error_message'] = $response['message'];
                     header("Location:Views/login/register.php");
                     ob_end_flush();
                 }
             } elseif ($_POST['userAction'] === 'logout') {
                 unset($_POST['userAction']);
                 $this->logout();
+                session_start();
+                $_SESSION['message'] = "User logged out successfully. Please log in again.";
                 header("Location:Views/login/login.php");
                 ob_end_flush();
             } elseif ($_POST['userAction'] === 'viewProfile') {
diff --git a/app/Views/login/login.php b/app/Views/login/login.php
index 6e6b601..2ca035a 100644
--- a/app/Views/login/login.php
+++ b/app/Views/login/login.php
@@ -1,3 +1,6 @@
+<?php
+    session_start();
+?>
 <!DOCTYPE html>
 <html lang="en">
 
@@ -19,6 +22,13 @@
                 <label for="password">Password</label>
                 <input type="password" id="password" name="loginPassword" required>
 
+                <?php
+                // Check if there is an error message in the session
+                if (isset($_SESSION['message'])) {
+                    echo '<p>' . $_SESSION['message'] . '</p>';
+                    unset($_SESSION['message']); // Remove the error message from the session
+                }
+                ?>
                 <button type="submit" name="userAction" value="login">Login</button>
             </form>
             <p>Don't have an account? <a href="register.php">Register</a></p>
diff --git a/app/Views/login/register.php b/app/Views/login/register.php
index d6a5772..bdd3a09 100644
--- a/app/Views/login/register.php
+++ b/app/Views/login/register.php
@@ -1,3 +1,6 @@
+<?php
+    session_start();
+?>
 <!DOCTYPE html>
 <html lang="en">
 
@@ -28,6 +31,14 @@
                     Admin <input type="checkbox" id="isAdmin" name="isAdmin" value="1">
                 </label>
 
+                <?php
+                // Check if there is an error message in the session
+                if (isset($_SESSION['error_message'])) {
+                    echo '<p>' . $_SESSION['error_message'] . '</p>';
+                    unset($_SESSION['error_message']); // Remove the error message from the session
+                }
+                ?>
+
                 <button type="submit" name="userAction" value="createUser">Register</button>
             </form>
             <p>Already have an account? <a href="login.php">Login</a></p>
-- 
GitLab