<?php
/**
 * Account routes.
 */

$app->router->get("account/login", function () use ($app) {
    $app->session();
    $error = $app->request->getGet("error");
    $isLoggedIn = $app->session->has("isLoggedIn");
    $urlPrefix = $_SERVER["SERVER_NAME"] == "www.student.bth.se"
        ? "/~rasb14/dbwebb-kurser/oophp/me/kmom10/proj/htdocs" : "";

    if ($isLoggedIn) {
        header("Location: " . $urlPrefix . "/");
        exit;
    } else {
        $data = [
            "title"    => "Logga In",
            "loggedIn" => $isLoggedIn,
            "error"    => $error ? $error : ""
        ];

        $app->view->add("account/login", $data);
        $app->page->render($data);
    }
});

$app->router->post("account/login", function () use ($app) {
    $app->session();
    $app->db->connect();
    $post = $app->request->getPost();
    $urlPrefix = $_SERVER["SERVER_NAME"] == "www.student.bth.se"
        ? "/~rasb14/dbwebb-kurser/oophp/me/kmom10/proj/htdocs" : "";

    if (isset($post["username"]) && isset($post["password"])) {
        $sql = "SELECT name, password, role FROM account WHERE name = ?;";
        $user = $app->db->executeFetch($sql, [$post["username"]]);

        if (!$user) {
            header("Location: " . $urlPrefix . "/account/login?error=username");
            exit;
        }

        if ($user->password == $post["password"]) {
            $app->session->set("isLoggedIn", true);
            if ((128 & $user->role) == 128) {
                $app->session->set("isAdmin", true);
            }
            header("Location: " . $urlPrefix . "/");
            exit;
        } else {
            header("Location: " . $urlPrefix . "/account/login?error=password");
            exit;
        }
    } else {
        header("Location: " . $urlPrefix . "/account/login?error=missing");
        exit;
    }
});

$app->router->get("account/logout", function () use ($app) {
    $app->session();
    $app->session->destroy();

    $data = [
        "title"    => "Logga In",
        "loggedIn" => false,
        "error"    => ""
    ];

    $app->view->add("account/login", $data);
    $app->page->render($data);
});
