-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.php
More file actions
87 lines (65 loc) · 3.13 KB
/
Copy pathindex.php
File metadata and controls
87 lines (65 loc) · 3.13 KB
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
<?php
// Error Handling Setup
ini_set('display_errors', 0); // Hide errors from users
ini_set('log_errors', 1); // Log errors to file
ini_set('error_log', __DIR__ . '/logs/php_error.log');
// error_reporting(E_ALL);
// Initialize database connection
require_once __DIR__ . '/config/db.php';
require_once __DIR__ . '/vendor/autoload.php';
use Aaditya\Cms\Router;
use Aaditya\Cms\TemplateEngine;
// Security Headers
header("X-Frame-Options: SAMEORIGIN");
header("X-Content-Type-Options: nosniff");
header("X-XSS-Protection: 1; mode=block");
header("Referrer-Policy: strict-origin-when-cross-origin");
// header("Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.quilljs.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdn.quilljs.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data:;");
// CRITICAL: Set unique session name to prevent session leakage on shared hosting
session_name('customTest_session');
// Start session for user authentication with Secure params
$sessionParams = session_get_cookie_params();
session_set_cookie_params([
'lifetime' => $sessionParams["lifetime"],
'path' => '/~np02cs4a240031/', // Restrict to this subdirectory only
'domain' => $sessionParams["domain"],
'secure' => isset($_SERVER['HTTPS']), // True if HTTPS
'httponly' => true,
'samesite' => 'Strict'
]);
session_start();
// Initialize template engine
$templateEngine = new TemplateEngine();
// Initialize router
$router = new Router($templateEngine);
$router->get('/', 'HomeController@index');
$router->get('/about', 'HomeController@about');
$router->get('/auth/register', 'UserController@register');
$router->get('/auth/login', 'UserController@login');
$router->get('/auth/logout', 'UserController@logout');
$router->post('/auth/register', 'UserController@register');
$router->post('/auth/login', 'UserController@login');
$router->get('/@{username}', 'UserController@profile');
$router->get('/users/{id}', 'UserController@profile'); // Keep for ID access
$router->get('/users/{id}/edit', 'UserController@edit');
$router->post('/users/{id}/edit', 'UserController@edit');
// User Personal Routes
$router->get('/me/stories', 'BlogController@myStories');
$router->get('/me/saved', 'BlogController@savedStories');
// Route for tag feed
$router->get('/tag/{tag}', 'BlogController@byTag');
$router->get('/blogs', 'BlogController@index');
$router->get('/blogs/create', 'BlogController@create');
$router->post('/blogs/create', 'BlogController@create');
$router->get('/blogs/{id}', 'BlogController@view');
$router->get('/blogs/{id}/edit', 'BlogController@edit');
$router->post('/blogs/{id}/edit', 'BlogController@edit');
$router->post('/blogs/{id}/delete', 'BlogController@delete');
$router->post('/blogs/{id}/comment', 'BlogController@addComment');
$router->post('/blogs/{id}/save', 'BlogController@toggleSave');
$router->post('/blogs/{id}/like', 'BlogController@toggleLike');
$router->post('/users/{id}/follow', 'UserController@toggleFollow');
$router->get('/api/blogs', 'BlogController@apiIndex');
$router->get('/api/blogs/search', 'BlogController@apiSearch');
// Dispatch the request
$router->dispatch();