Skip to content
Snippets Groups Projects
Forked from IF3110-2023-01-18 / Tugas Besar 1
110 commits behind the upstream repository.
UserController.php 2.70 KiB
<?php
// app/controllers/userController.php

require_once(__DIR__ . '/../Models/User.php');


class UserController {
    private $userModel;

    public function __construct() {
        $this->userModel = new UserModel();
    }

    public function createUser($name, $username, $email, $hashedPass, $isAdmin) {
        return $this->userModel->createUser($name, $username, $email, $hashedPass, $isAdmin);
    }

    public function getUser($userId) {
        return $this->userModel->getUser($userId);
    }

    public function updateUser($userId, $name, $username, $email, $hashedPass, $isAdmin) {
        return $this->userModel->updateUser($userId, $name, $username, $email, $hashedPass, $isAdmin);
    }

    public function deleteUser($userId) {
        return $this->userModel->deleteUser($userId);
    }

    public function getAllUsers() {
        return $this->userModel->getAllUsers();
    }

    public function registerUser($name, $username, $email, $password, $isAdmin) {
        return $this->createUser($name, $username, $email, password_hash($password,PASSWORD_DEFAULT), $isAdmin);
    }

    public function loginByEmail($email,$password) {
        $user = $this->userModel->getUserByEmail($email);
        if ($user !== false && password_verify($password, $user['user_hashedPass'])) {
            $_SESSION["user_id"] = $user['user_ID'];
            return "success";
        } else {
            return "wrong credentials";
        }
    }

    public function loginByUsername($username,$password) {
        $user = $this->userModel->getUserByUsername($username);
        if ($user !== false && password_verify($password, $user['user_hashedPass'])) {
            $_SESSION["user_id"] = $user['user_ID'];
            return "success";
        } else {
            return "wrong credentials";
        }
    }

    public function logout() {
        if (isset($_SESSION["user_id"])) {
            unset($_SESSION["user_id"]);
            session_destroy();
            return "logout successful";
        } else {
            return "user not logged in";
        }
    }

    public function handleRequest() {
        if (isset($_POST['userAction'])) {
            if ($_POST['userAction'] === 'login') {
                unset($_POST['userAction']);
                $emailOrUsername = $_POST['loginIdentifier'];
                $password = $_POST['loginPassword'];
                if (filter_var($emailOrUsername, FILTER_VALIDATE_EMAIL)){
                    echo $this->loginByEmail($emailOrUsername, $password);
                } else {
                    echo $this->loginByUsername($emailOrUsername,$password);
                }
            } else {
                // Handle other actions here, if needed
            }
        }
    }

}
?>