-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbootstrap.php
More file actions
102 lines (82 loc) · 2.73 KB
/
bootstrap.php
File metadata and controls
102 lines (82 loc) · 2.73 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
// Including global autoloader
require_once dirname(__FILE__) . '\vendor\autoload.php';
use el_api_v1\dbHelper;
// Init config data
$config = array();
date_default_timezone_set('Europe/Rome');
$slim_mode = filter_input(INPUT_SERVER, 'SLIM_MODE', FILTER_SANITIZE_STRING);
switch ($slim_mode) {
case 'development':
$configFile = dirname(__FILE__) . '/share/config/' . $slim_mode . '.php';
break;
case 'production':
$configFile = dirname(__FILE__) . '/share/config/' . $slim_mode . '.php';
break;
default:
$slim_mode = 'default';
$configFile = dirname(__FILE__) . '/share/config/' . $slim_mode . '.php';
break;
}
if (is_readable($configFile)) {
require_once $configFile;
} else {
exit("no file of configuration found, exit\n");
}
// Basic config for Slim Application
$config['app'] = array(
'db.dsn' => 'mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8',
'db.username' => DB_USERNAME,
'db.password' => DB_PASSWORD,
'name' => 'Elearning',
'log.enabled' => true,
'log.level' => Slim\Log::INFO,
'mode' => ($slim_mode == "default") ? 'production' : $slim_mode
);
// Create application instance with config
$app = new Slim\Slim($config['app']);
// Add dependencies
$app->container->singleton('log', function () {
$log = new \Monolog\Logger('el_api_logs');
$log->pushHandler(new \Monolog\Handler\StreamHandler(dirname(__FILE__) . '/share/logs/' . date('Y-m-d') . '.log'));
return $log;
});
$app->container->singleton('dbHelperObject', function () {
$dbHelperObject = new dbHelper(DBHELPER_MODE);
return $dbHelperObject;
});
$log = $app->container['log'];
$dbHelperObject = $app->container['dbHelperObject'];
// Only invoked if mode is "production"
$app->configureMode('production', function () use ($app) {
$app->config(array(
'log.enable' => TRUE,
'log.level' => Slim\Log::WARN,
'debug' => false
));
});
// Only invoked if mode is "development"
$app->configureMode('development', function () use ($app) {
$app->config(array(
'log.enable' => true,
'log.level' => Slim\Log::DEBUG,
'log.writer' => $app->container['log'],
'debug' => true
));
});
$app->add(new \Slim\Middleware\JwtAuthentication([
"logger" => $log,
"secret" => SECRETJWT,
"rules" => [
new \Slim\Middleware\JwtAuthentication\RequestPathRule([
"path" => "/api/v1",
"passthrough" => ["/api/v1/login", "/api/v1/signup", "/api/v1"]
]),
new \Slim\Middleware\JwtAuthentication\RequestMethodRule([
"passthrough" => ["OPTIONS"]
])
],
"callback" => function ($decoded, $app) {
$app->jwt = $decoded;
}
]));