-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.php
102 lines (85 loc) · 2.79 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
/* Extend съдържа методи и инструменти, които все още
* не съм добавил в рамката */
include "Extend/layoutResponseFactory.php";
include "Extend/redirect.php";
include "Extend/setCookie.php";
include "Extend/isValidString.php";
include "Extend/CSRFTokenManager.php";
include "Extend/generateToken.php";
/* Позволява автоматично зареждане
* на класове по тяхното име */
include "Core/autoload.php";
/* Използван за дефиниция на достъпа при рутиране. */
use Models\User;
/* MySQL сървър */
$mysql = [
"path" => "mysql:host=localhost;"
. "dbname=2022_04_c_sharp_competition",
"name" => "c_sharp_competition",
"pwd" => "94b53710-fc61-43d0-b43b-abc091b59b6c"
];
/* Инициализация на рамката */
$router = new Core\Router();
$app = new Core\Controller($router);
/* Връзка с базата данни */
$app->usePDO($mysql["path"],
$mysql["name"], $mysql["pwd"]);
/* Проверка за състоянието на MySQL сървъра*/
try {
$app->initPDO();
define("DATABASE_ONLINE", true);
} catch(PDOException $e) {
define("DATABASE_ONLINE", false);
}
/* Създава администраторски профил
* Този потребител може да регистрира
* други потребители. */
if(DATABASE_ONLINE)
{
$admin = User::findByName("admin");
if(!isset($admin))
{
new User("admin", "admin");
}
unset($admin);
}
/* Дефиниция на routing таблицата.
* Следва формат "контролер => адрес" */
$router->add("Pages\Home", "/");
if(DATABASE_ONLINE)
{
$user = User::fromSession();
if(isset($user))
{
$router->add("Pages\Forbidden", "/login");
if("admin" == $user->name)
{
$router->add("Pages\User\Signup", "/signup");
}
else
{
$router->add("Pages\Forbidden", "/signup");
}
$router->add("Pages\User\Logout", "/logout");
$router->add("Pages\User\Profile", "/profile");
$router->add("Pages\Data\Create", "/new");
$router->add("Pages\Data\Show", "/list");
$router->add("Pages\Data\Edit", "/edit");
$router->add("Pages\Data\Delete", "/delete");
}
else
{
$router->add("Pages\User\Login", "/login");
$router->add("Pages\Forbidden", "/signup");
$router->add("Pages\RedirectToLogin", "/profile");
$router->add("Pages\RedirectToLogin", "/logout");
}
}
else
{
$router->add("Pages\ServerOffline", "/login");
$router->add("Pages\ServerOffline", "/signup");
}
/* Стартиране на рамката */
$app->run();