1 | <?php |
||||
2 | |||||
3 | declare(strict_types=1); |
||||
4 | |||||
5 | /** |
||||
6 | * Teampass - a collaborative passwords manager. |
||||
7 | * --- |
||||
8 | * This library is distributed in the hope that it will be useful, |
||||
9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
||||
11 | * --- |
||||
12 | * |
||||
13 | * @project Teampass |
||||
14 | * @file index.php |
||||
15 | * --- |
||||
16 | * |
||||
17 | * @author Nils Laumaillé ([email protected]) |
||||
18 | * |
||||
19 | * @copyright 2009-2023 Teampass.net |
||||
20 | * |
||||
21 | * @license https://spdx.org/licenses/GPL-3.0-only.html#licenseText GPL-3.0 |
||||
22 | * --- |
||||
23 | * |
||||
24 | * @see https://www.teampass.net |
||||
25 | */ |
||||
26 | |||||
27 | use TeampassClasses\SessionManager\SessionManager; |
||||
28 | use Symfony\Component\HttpFoundation\Request; |
||||
0 ignored issues
–
show
|
|||||
29 | use TeampassClasses\Language\Language; |
||||
30 | |||||
31 | header('X-XSS-Protection: 1; mode=block'); |
||||
32 | header('X-Frame-Options: SameOrigin'); |
||||
33 | header("Cache-Control: no-cache, no-store, must-revalidate"); |
||||
34 | header("Pragma: no-cache"); |
||||
35 | header("Expires: 0"); |
||||
36 | // **PREVENTING SESSION HIJACKING** |
||||
37 | // Prevents javascript XSS attacks aimed to steal the session ID |
||||
38 | //ini_set('session.cookie_httponly', 1); |
||||
39 | // **PREVENTING SESSION FIXATION** |
||||
40 | // Session ID cannot be passed through URLs |
||||
41 | //ini_set('session.use_only_cookies', 1); |
||||
42 | // Uses a secure connection (HTTPS) if possible |
||||
43 | //ini_set('session.cookie_secure', 0); |
||||
44 | //ini_set('session.cookie_samesite', 'Lax'); |
||||
45 | // Before we start processing, we should abort no install is present |
||||
46 | if (file_exists(__DIR__.'/includes/config/settings.php') === false) { |
||||
47 | // This should never happen, but in case it does |
||||
48 | // this means if headers are sent, redirect will fallback to JS |
||||
49 | if (headers_sent()) { |
||||
50 | echo '<script language="javascript" type="text/javascript">document.location.replace("install/install.php");</script>'; |
||||
51 | } else { |
||||
52 | header('Location: install/install.php'); |
||||
53 | } |
||||
54 | // Now either way, we should stop processing further |
||||
55 | exit; |
||||
56 | } |
||||
57 | |||||
58 | |||||
59 | // initialise CSRFGuard library |
||||
60 | require_once __DIR__.'/includes/libraries/csrfp/libs/csrf/csrfprotector.php'; |
||||
61 | csrfProtector::init(); |
||||
62 | //session_id(); |
||||
63 | |||||
64 | // Load config |
||||
65 | try { |
||||
66 | include_once __DIR__.'/includes/config/tp.config.php'; |
||||
67 | } catch (Exception $e) { |
||||
68 | throw new Exception("Error file '/includes/config/tp.config.php' not exists", 1); |
||||
69 | } |
||||
70 | |||||
71 | // initialize session |
||||
72 | if (isset($SETTINGS['cpassman_dir']) === false || $SETTINGS['cpassman_dir'] === '') { |
||||
73 | if (isset($SETTINGS['cpassman_dir']) === false) { |
||||
74 | $SETTINGS = []; |
||||
75 | } |
||||
76 | $SETTINGS['cpassman_dir'] = __DIR__; |
||||
77 | } |
||||
78 | |||||
79 | // Load functions |
||||
80 | require_once __DIR__. '/includes/config/include.php'; |
||||
81 | require_once __DIR__.'/sources/main.functions.php'; |
||||
82 | //error_log('>>>>> '.SessionManager::getCookieValue('PHPSESSID')); |
||||
83 | // init |
||||
84 | loadClasses(); |
||||
85 | error_log('Index.php - init de la session'); |
||||
86 | $session = SessionManager::getSession(); |
||||
87 | $request = Request::createFromGlobals(); |
||||
88 | |||||
89 | $session->set('key', SessionManager::getCookieValue('PHPSESSID')); |
||||
90 | error_log('DEBUG : KEY sur index.php ' . $session->get('key')." -- ".SessionManager::getCookieValue('PHPSESSID')); |
||||
91 | |||||
92 | // Quick major version check -> upgrade needed? |
||||
93 | if (isset($SETTINGS['teampass_version']) === true && version_compare(TP_VERSION, $SETTINGS['teampass_version']) > 0) { |
||||
94 | // Perform redirection |
||||
95 | if (headers_sent()) { |
||||
96 | echo '<script language="javascript" type="text/javascript">document.location.replace("install/install.php");</script>'; |
||||
97 | } else { |
||||
98 | header('Location: install/upgrade.php'); |
||||
99 | } |
||||
100 | // No other way, we should stop processing further |
||||
101 | exit; |
||||
102 | } |
||||
103 | |||||
104 | if (isset($SETTINGS['cpassman_url']) === false || $SETTINGS['cpassman_url'] === '') { |
||||
105 | $SETTINGS['cpassman_url'] = $request->server->get('REQUEST_URI'); |
||||
106 | } |
||||
107 | |||||
108 | // Load Core library |
||||
109 | require_once $SETTINGS['cpassman_dir'] . '/sources/core.php'; |
||||
110 | // Prepare POST variables |
||||
111 | $post_language = filter_input(INPUT_POST, 'language', FILTER_SANITIZE_FULL_SPECIAL_CHARS); |
||||
112 | $session_user_language = $session->get('user-language'); |
||||
113 | $session_user_admin = $session->get('user-admin'); |
||||
114 | $session_user_human_resources = (int) $session->get('user-can_manage_all_users'); |
||||
115 | $session_name = $session->get('user-name'); |
||||
116 | $session_lastname = $session->get('user-lastname'); |
||||
117 | $session_user_manager = $session->get('user-manager'); |
||||
118 | $session_initial_url = $session->get('user-initial_url'); |
||||
119 | $session_nb_users_online = $session->get('nb_users_online'); |
||||
120 | $session_auth_type = $session->get('user-auth_type'); |
||||
121 | |||||
122 | $server = []; |
||||
123 | $server['request_uri'] = (string) $request->server->get('REQUEST_URI'); |
||||
124 | $server['request_time'] = (int) $request->server->get('REQUEST_TIME'); |
||||
125 | |||||
126 | $get = []; |
||||
127 | $get['page'] = $request->query->get('page') === null ? '' : $request->query->get('page'); |
||||
128 | $get['otv'] = $request->query->get('otv') === null ? '' : $request->query->get('otv'); |
||||
129 | |||||
130 | /* DEFINE WHAT LANGUAGE TO USE */ |
||||
131 | if (null === $session->get('user-validite_pw') && $post_language === null && $session_user_language === null) { |
||||
132 | //get default language |
||||
133 | $dataLanguage = DB::queryFirstRow( |
||||
134 | 'SELECT m.valeur AS valeur, l.flag AS flag |
||||
135 | FROM ' . prefixTable('misc') . ' AS m |
||||
136 | INNER JOIN ' . prefixTable('languages') . ' AS l ON (m.valeur = l.name) |
||||
137 | WHERE m.type=%s_type AND m.intitule=%s_intitule', |
||||
138 | [ |
||||
139 | 'type' => 'admin', |
||||
140 | 'intitule' => 'default_language', |
||||
141 | ] |
||||
142 | ); |
||||
143 | if (empty($dataLanguage['valeur'])) { |
||||
144 | $session->set('user-language', 'english'); |
||||
145 | $session->set('user-language_flag', 'us.png'); |
||||
146 | $session_user_language = 'english'; |
||||
147 | } else { |
||||
148 | $session->set('user-language', $dataLanguage['valeur']); |
||||
149 | $session->set('user-language_flag', $dataLanguage['flag']); |
||||
150 | $session_user_language = $dataLanguage['valeur']; |
||||
151 | } |
||||
152 | } elseif (isset($SETTINGS['default_language']) === true && $session_user_language === null) { |
||||
153 | $session->set('user-language', $SETTINGS['default_language']); |
||||
154 | $session_user_language = $SETTINGS['default_language']; |
||||
155 | } elseif ($post_language !== null) { |
||||
156 | $session->set('user-language', $post_language); |
||||
157 | $session_user_language = $post_language; |
||||
158 | } elseif ($session_user_language === null || empty($session_user_language) === true) { |
||||
159 | if ($post_language !== null) { |
||||
160 | $session->set('user-language', $post_language); |
||||
161 | $session_user_language = $post_language; |
||||
162 | } elseif ($session_user_language !== null) { |
||||
163 | $session->set('user-language', $SETTINGS['default_language']); |
||||
164 | $session_user_language = $SETTINGS['default_language']; |
||||
165 | } |
||||
166 | } |
||||
167 | $lang = new Language($session_user_language, __DIR__. '/includes/language/'); |
||||
168 | |||||
169 | if (isset($SETTINGS['cpassman_dir']) === false || $SETTINGS['cpassman_dir'] === '') { |
||||
170 | $SETTINGS['cpassman_dir'] = __DIR__; |
||||
171 | $SETTINGS['cpassman_url'] = (string) $server['request_uri']; |
||||
172 | } |
||||
173 | |||||
174 | // Some template adjust |
||||
175 | if (array_key_exists($get['page'], $mngPages) === true) { |
||||
176 | $menuAdmin = true; |
||||
177 | } else { |
||||
178 | $menuAdmin = false; |
||||
179 | } |
||||
180 | |||||
181 | // Some template adjust |
||||
182 | if (array_key_exists($get['page'], $utilitiesPages) === true) { |
||||
183 | $menuUtilities = true; |
||||
184 | } else { |
||||
185 | $menuUtilities = false; |
||||
186 | } |
||||
187 | |||||
188 | ?> |
||||
189 | <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> |
||||
190 | |||||
191 | <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> |
||||
192 | |||||
193 | <head> |
||||
194 | <meta http-equiv='Content-Type' content='text/html;charset=utf-8' /> |
||||
195 | <meta name="viewport" content="width=device-width, initial-scale=1" /> |
||||
196 | <meta http-equiv="x-ua-compatible" content="ie=edge" /> |
||||
197 | <title>Teampass</title> |
||||
198 | <script type='text/javascript'> |
||||
199 | //<![CDATA[ |
||||
200 | if (window.location.href.indexOf('page=') === -1 && |
||||
201 | (window.location.href.indexOf('otv=') === -1 && |
||||
202 | window.location.href.indexOf('action=') === -1) |
||||
203 | ) { |
||||
204 | if (window.location.href.indexOf('session_over=true') !== -1) { |
||||
205 | location.replace('./includes/core/logout.php'); |
||||
206 | } |
||||
207 | } |
||||
208 | //]]> |
||||
209 | </script> |
||||
210 | |||||
211 | <!-- IonIcons --> |
||||
212 | <link rel="stylesheet" href="includes/css/ionicons.min.css"> |
||||
213 | <!-- Theme style --> |
||||
214 | <link rel="stylesheet" href="plugins/adminlte/css/adminlte.min.css"> |
||||
215 | <link rel="stylesheet" href="plugins/pace-progress/themes/corner-indicator.css" type="text/css" /> |
||||
216 | <link rel="stylesheet" href="plugins/select2/css/select2.min.css" type="text/css" /> |
||||
217 | <!--<link rel="stylesheet" href="plugins/select2/css/select2-bootstrap.min.css" type="text/css" />--> |
||||
218 | <link rel="stylesheet" href="plugins/select2/theme/select2-bootstrap4.min.css" type="text/css" /> |
||||
219 | <!-- Theme style --> |
||||
220 | <link rel="stylesheet" href="includes/css/teampass.css"> |
||||
221 | <!-- Google Font: Source Sans Pro --> |
||||
222 | <link rel="stylesheet" type="text/css" href="includes/fonts/fonts.css"> |
||||
223 | <!-- Altertify --> |
||||
224 | <link rel="stylesheet" href="plugins/alertifyjs/css/alertify.min.css" /> |
||||
225 | <link rel="stylesheet" href="plugins/alertifyjs/css/themes/bootstrap.min.css" /> |
||||
226 | <!-- Toastr --> |
||||
227 | <link rel="stylesheet" href="plugins/toastr/toastr.min.css" /> |
||||
228 | <!-- favicon --> |
||||
229 | <link rel="shortcut icon" type="image/png" href="<?php echo $SETTINGS['favicon'];?>"/> |
||||
230 | <!-- Custom style --> |
||||
231 | <?php |
||||
232 | if (file_exists(__DIR__ . '/includes/css/custom.css') === true) {?> |
||||
233 | <link rel="stylesheet" href="includes/css/custom.css"> |
||||
234 | <?php |
||||
235 | } ?> |
||||
236 | </head> |
||||
237 | |||||
238 | |||||
239 | |||||
240 | |||||
241 | <?php |
||||
242 | error_log(print_r($session->all(), true)); |
||||
0 ignored issues
–
show
It seems like
print_r($session->all(), true) can also be of type true ; however, parameter $message of error_log() does only seem to accept string , maybe add an additional type check?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
243 | // display an item in the context of OTV link |
||||
244 | if ((null === $session->get('user-validite_pw') || empty($session->get('user-validite_pw')) === true || empty($session->get('user-id')) === true) |
||||
245 | && empty($get['otv']) === false) |
||||
246 | { |
||||
247 | include './includes/core/otv.php'; |
||||
248 | exit; |
||||
249 | } elseif ($session->has('user-validite_pw') && $session->get('user-validite_pw') && null !== $session->get('user-validite_pw') && $session->get('user-validite_pw') === 1 && |
||||
250 | empty($get['page']) === false && empty($session->get('user-id')) === false |
||||
251 | ) { |
||||
252 | ?> |
||||
253 | <body class="hold-transition sidebar-mini layout-navbar-fixed layout-fixed"> |
||||
254 | <div class="wrapper"> |
||||
255 | |||||
256 | <!-- Navbar --> |
||||
257 | <nav class="main-header navbar navbar-expand navbar-white navbar-light border-bottom"> |
||||
258 | <!-- User encryption still ongoing --> |
||||
259 | <div id="user_not_ready" class="alert alert-warning hidden pointer p-2 mt-2" style="position:absolute; left:200px;"> |
||||
260 | <span class="align-middle infotip ml-2" title="<?php echo $lang->get('keys_encryption_not_ready'); ?>"><?php echo $lang->get('account_not_ready'); ?><span id="user_not_ready_progress"></span><i class="fa-solid fa-hourglass-half fa-beat-fade mr-2 ml-2"></i></span> |
||||
261 | </div> |
||||
262 | |||||
263 | <!-- Left navbar links --> |
||||
264 | <ul class="navbar-nav"> |
||||
265 | <li class="nav-item"> |
||||
266 | <a class="nav-link" data-widget="pushmenu" href="#"><i class="fa-solid fa-bars"></i></a> |
||||
267 | </li> |
||||
268 | <?php |
||||
269 | if ($get['page'] === 'items') { |
||||
270 | ?> |
||||
271 | <li class="nav-item d-none d-sm-inline-block"> |
||||
272 | <a class="nav-link" href="#"> |
||||
273 | <i class="far fa-arrow-alt-circle-right columns-position tree-increase infotip" title="<?php echo $lang->get('move_right_columns_separator'); ?>"></i> |
||||
274 | </a> |
||||
275 | </li> |
||||
276 | <li class="nav-item d-none d-sm-inline-block"> |
||||
277 | <a class="nav-link" href="#"> |
||||
278 | <i class="far fa-arrow-alt-circle-left columns-position tree-decrease infotip" title="<?php echo $lang->get('move_left_columns_separator'); ?>"></i> |
||||
279 | </a> |
||||
280 | </li> |
||||
281 | <?php |
||||
282 | } ?> |
||||
283 | </ul> |
||||
284 | |||||
285 | <!-- Right navbar links --> |
||||
286 | <ul class="navbar-nav ml-auto"> |
||||
287 | <span class="fa-stack infotip pointer hidden mr-2" title="<?php echo $lang->get('get_your_recovery_keys'); ?>" id="open_user_keys_management" style="vertical-align: top;"> |
||||
288 | <i class="fa-solid fa-circle text-danger fa-stack-2x"></i> |
||||
289 | <i class="fa-solid fa-bell fa-shake fa-stack-1x fa-inverse"></i> |
||||
290 | </span> |
||||
291 | <!-- Messages Dropdown Menu --> |
||||
292 | <li class="nav-item dropdown"> |
||||
293 | <div class="dropdown show"> |
||||
294 | <a class="btn btn-primary dropdown-toggle" href="#" data-toggle="dropdown"> |
||||
295 | <?php |
||||
296 | echo $session_name . ' ' . $session_lastname; ?> |
||||
297 | </a> |
||||
298 | |||||
299 | <div class="dropdown-menu dropdown-menu-right"> |
||||
300 | <a class="dropdown-item user-menu" href="#" data-name="increase_session"> |
||||
301 | <i class="far fa-clock fa-fw mr-2"></i><?php echo $lang->get('index_add_one_hour'); ?></a> |
||||
302 | <div class="dropdown-divider"></div> |
||||
303 | <a class="dropdown-item user-menu" href="#" data-name="profile"> |
||||
304 | <i class="fa-solid fa-user-circle fa-fw mr-2"></i><?php echo $lang->get('my_profile'); ?> |
||||
305 | </a> |
||||
306 | <?php |
||||
307 | if (empty($session_auth_type) === false && $session_auth_type !== 'ldap') { |
||||
308 | ?> |
||||
309 | <a class="dropdown-item user-menu" href="#" data-name="password-change"> |
||||
310 | <i class="fa-solid fa-lock fa-fw mr-2"></i><?php echo $lang->get('index_change_pw'); ?> |
||||
311 | </a> |
||||
312 | <?php |
||||
313 | } elseif ($session_auth_type === 'ldap') { |
||||
314 | ?> |
||||
315 | <a class="dropdown-item user-menu" href="#" data-name="sync-new-ldap-password"> |
||||
316 | <i class="fa-solid fa-key fa-fw mr-2"></i><?php echo $lang->get('sync_new_ldap_password'); ?> |
||||
317 | </a> |
||||
318 | <?php |
||||
319 | } ?> |
||||
320 | <a class="dropdown-item user-menu<?php echo (int) $session_user_admin === 1 ? ' hidden' : '';?>" href="#" data-name="generate-new_keys"> |
||||
321 | <i class="fa-solid fa-spray-can-sparkles fa-fw mr-2"></i><?php echo $lang->get('generate_new_keys'); ?> |
||||
322 | </a> |
||||
323 | |||||
324 | <div class="dropdown-divider"></div> |
||||
325 | <a class="dropdown-item user-menu" href="#" data-name="generate-an-otp"> |
||||
326 | <i class="fa-solid fa-qrcode fa-fw mr-2"></i><?php echo $lang->get('generate_an_otp'); ?> |
||||
327 | </a> |
||||
328 | |||||
329 | <div class="dropdown-divider"></div> |
||||
330 | <a class="dropdown-item user-menu" href="#" data-name="logout"> |
||||
331 | <i class="fa-solid fa-sign-out-alt fa-fw mr-2"></i><?php echo $lang->get('disconnect'); ?> |
||||
332 | </a> |
||||
333 | </div> |
||||
334 | </div> |
||||
335 | </li> |
||||
336 | <li> |
||||
337 | <span class="align-middle infotip ml-2 text-info" title="<?php echo $lang->get('index_expiration_in'); ?>" id="countdown"></span> |
||||
338 | </li> |
||||
339 | <li class="nav-item"> |
||||
340 | <a class="nav-link" data-widget="control-sidebar" data-slide="true" href="#" id="controlsidebar"><i class="fa-solid fa-th-large"></i></a> |
||||
341 | </li> |
||||
342 | </ul> |
||||
343 | </nav> |
||||
344 | <!-- /.navbar --> |
||||
345 | |||||
346 | <!-- Main Sidebar Container --> |
||||
347 | <aside class="main-sidebar sidebar-dark-primary elevation-4"> |
||||
348 | <!-- Brand Logo --> |
||||
349 | <a href="<?php echo $SETTINGS['cpassman_url'] . '/index.php?page=' . ((int) $session_user_admin === 1 ? 'admin' : 'items'); ?>" class="brand-link"> |
||||
350 | <img src="includes/images/teampass-logo2-home.png" alt="Teampass Logo" class="brand-image"> |
||||
351 | <span class="brand-text font-weight-light"><?php echo TP_TOOL_NAME; ?></span> |
||||
352 | </a> |
||||
353 | |||||
354 | <!-- Sidebar --> |
||||
355 | <div class="sidebar"> |
||||
356 | <!-- Sidebar Menu --> |
||||
357 | <nav class="mt-2" style="margin-bottom:40px;"> |
||||
358 | <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false"> |
||||
359 | <?php |
||||
360 | if ($session_user_admin === 0) { |
||||
361 | // ITEMS & SEARCH |
||||
362 | echo ' |
||||
363 | <li class="nav-item"> |
||||
364 | <a href="#" data-name="items" class="nav-link', $get['page'] === 'items' ? ' active' : '', '"> |
||||
365 | <i class="nav-icon fa-solid fa-key"></i> |
||||
366 | <p> |
||||
367 | ' . $lang->get('pw') . ' |
||||
368 | </p> |
||||
369 | </a> |
||||
370 | </li>'; |
||||
371 | } |
||||
372 | |||||
373 | // IMPORT menu |
||||
374 | if (isset($SETTINGS['allow_import']) === true && (int) $SETTINGS['allow_import'] === 1&& $session_user_admin === 0) { |
||||
375 | echo ' |
||||
376 | <li class="nav-item"> |
||||
377 | <a href="#" data-name="import" class="nav-link', $get['page'] === 'import' ? ' active' : '', '"> |
||||
378 | <i class="nav-icon fa-solid fa-file-import"></i> |
||||
379 | <p> |
||||
380 | ' . $lang->get('import') . ' |
||||
381 | </p> |
||||
382 | </a> |
||||
383 | </li>'; |
||||
384 | } |
||||
385 | // EXPORT menu |
||||
386 | if ( |
||||
387 | isset($SETTINGS['allow_print']) === true && (int) $SETTINGS['allow_print'] === 1 |
||||
388 | && isset($SETTINGS['roles_allowed_to_print_select']) === true |
||||
389 | && empty($SETTINGS['roles_allowed_to_print_select']) === false |
||||
390 | && count(array_intersect( |
||||
391 | explode(';', $session->get('user-roles')), |
||||
392 | explode(',', str_replace(['"', '[', ']'], '', $SETTINGS['roles_allowed_to_print_select'])) |
||||
393 | )) > 0 |
||||
394 | && (int) $session_user_admin === 0 |
||||
395 | ) { |
||||
396 | echo ' |
||||
397 | <li class="nav-item"> |
||||
398 | <a href="#" data-name="export" class="nav-link', $get['page'] === 'export' ? ' active' : '', '"> |
||||
399 | <i class="nav-icon fa-solid fa-file-export"></i> |
||||
400 | <p> |
||||
401 | ' . $lang->get('export') . ' |
||||
402 | </p> |
||||
403 | </a> |
||||
404 | </li>'; |
||||
405 | } |
||||
406 | |||||
407 | /* |
||||
408 | // OFFLINE MODE menu |
||||
409 | if (isset($SETTINGS['settings_offline_mode']) === true && (int) $SETTINGS['settings_offline_mode'] === 1) { |
||||
410 | echo ' |
||||
411 | <li class="nav-item"> |
||||
412 | <a href="#" data-name="offline" class="nav-link', $get['page'] === 'offline' ? ' active' : '' ,'"> |
||||
413 | <i class="nav-icon fa-solid fa-plug"></i> |
||||
414 | <p> |
||||
415 | '.$lang->get('offline').' |
||||
416 | </p> |
||||
417 | </a> |
||||
418 | </li>'; |
||||
419 | } |
||||
420 | */ |
||||
421 | |||||
422 | if ($session_user_admin === 0) { |
||||
423 | echo ' |
||||
424 | <li class="nav-item"> |
||||
425 | <a href="#" data-name="search" class="nav-link', $get['page'] === 'search' ? ' active' : '', '"> |
||||
426 | <i class="nav-icon fa-solid fa-search"></i> |
||||
427 | <p> |
||||
428 | ' . $lang->get('find') . ' |
||||
429 | </p> |
||||
430 | </a> |
||||
431 | </li>'; |
||||
432 | } |
||||
433 | |||||
434 | // Favourites menu |
||||
435 | if ( |
||||
436 | isset($SETTINGS['enable_favourites']) === true && (int) $SETTINGS['enable_favourites'] === 1 |
||||
437 | && (int) $session_user_admin === 0 |
||||
438 | ) { |
||||
439 | echo ' |
||||
440 | <li class="nav-item"> |
||||
441 | <a href="#" data-name="favourites" class="nav-link', $get['page'] === 'admin' ? ' favourites' : '', '"> |
||||
442 | <i class="nav-icon fa-solid fa-star"></i> |
||||
443 | <p> |
||||
444 | ' . $lang->get('favorites') . ' |
||||
445 | </p> |
||||
446 | </a> |
||||
447 | </li>'; |
||||
448 | } |
||||
449 | /* |
||||
450 | // KB menu |
||||
451 | if (isset($SETTINGS['enable_kb']) === true && $SETTINGS['enable_kb'] === '1' |
||||
452 | ) { |
||||
453 | echo ' |
||||
454 | <li class="nav-item"> |
||||
455 | <a href="#" data-name="kb" class="nav-link', $get['page'] === 'kb' ? ' active' : '' ,'"> |
||||
456 | <i class="nav-icon fa-solid fa-map-signs"></i> |
||||
457 | <p> |
||||
458 | '.$lang->get('kb_menu').' |
||||
459 | </p> |
||||
460 | </a> |
||||
461 | </li>'; |
||||
462 | } |
||||
463 | */ |
||||
464 | // SUGGESTION menu |
||||
465 | if ( |
||||
466 | isset($SETTINGS['enable_suggestion']) && (int) $SETTINGS['enable_suggestion'] === 1 |
||||
467 | && $session_user_manager === 1 |
||||
468 | ) { |
||||
469 | echo ' |
||||
470 | <li class="nav-item"> |
||||
471 | <a href="#" data-name="suggestion" class="nav-link', $get['page'] === 'suggestion' ? ' active' : '', '"> |
||||
472 | <i class="nav-icon fa-solid fa-lightbulb"></i> |
||||
473 | <p> |
||||
474 | ' . $lang->get('suggestion_menu') . ' |
||||
475 | </p> |
||||
476 | </a> |
||||
477 | </li>'; |
||||
478 | } |
||||
479 | |||||
480 | // Admin menu |
||||
481 | if ($session_user_admin === 1) { |
||||
482 | echo ' |
||||
483 | <li class="nav-item"> |
||||
484 | <a href="#" data-name="admin" class="nav-link', $get['page'] === 'admin' ? ' active' : '', '"> |
||||
485 | <i class="nav-icon fa-solid fa-info"></i> |
||||
486 | <p> |
||||
487 | ' . $lang->get('admin_main') . ' |
||||
488 | </p> |
||||
489 | </a> |
||||
490 | </li> |
||||
491 | <li class="nav-item has-treeview', $menuAdmin === true ? ' menu-open' : '', '"> |
||||
492 | <a href="#" class="nav-link"> |
||||
493 | <i class="nav-icon fa-solid fa-wrench"></i> |
||||
494 | <p> |
||||
495 | ' . $lang->get('admin_settings') . ' |
||||
496 | <i class="fa-solid fa-angle-left right"></i> |
||||
497 | </p> |
||||
498 | </a> |
||||
499 | <ul class="nav-item nav-treeview"> |
||||
500 | <li class="nav-item"> |
||||
501 | <a href="#" data-name="options" class="nav-link', $get['page'] === 'options' ? ' active' : '', '"> |
||||
502 | <i class="fa-solid fa-check-double nav-icon"></i> |
||||
503 | <p>' . $lang->get('options') . '</p> |
||||
504 | </a> |
||||
505 | </li> |
||||
506 | <li class="nav-item"> |
||||
507 | <a href="#" data-name="2fa" class="nav-link', $get['page'] === '2fa' ? ' active' : '', '"> |
||||
508 | <i class="fa-solid fa-qrcode nav-icon"></i> |
||||
509 | <p>' . $lang->get('mfa_short') . '</p> |
||||
510 | </a> |
||||
511 | </li> |
||||
512 | <li class="nav-item"> |
||||
513 | <a href="#" data-name="api" class="nav-link', $get['page'] === 'api' ? ' active' : '', '"> |
||||
514 | <i class="fa-solid fa-cubes nav-icon"></i> |
||||
515 | <p>' . $lang->get('api') . '</p> |
||||
516 | </a> |
||||
517 | </li> |
||||
518 | <li class="nav-item"> |
||||
519 | <a href="#" data-name="backups" class="nav-link', $get['page'] === 'backups' ? ' active' : '', '"> |
||||
520 | <i class="fa-solid fa-database nav-icon"></i> |
||||
521 | <p>' . $lang->get('backups') . '</p> |
||||
522 | </a> |
||||
523 | </li> |
||||
524 | <li class="nav-item"> |
||||
525 | <a href="#" data-name="emails" class="nav-link', $get['page'] === 'emails' ? ' active' : '', '"> |
||||
526 | <i class="fa-solid fa-envelope nav-icon"></i> |
||||
527 | <p>' . $lang->get('emails') . '</p> |
||||
528 | </a> |
||||
529 | </li> |
||||
530 | <li class="nav-item"> |
||||
531 | <a href="#" data-name="fields" class="nav-link', $get['page'] === 'fields' ? ' active' : '', '"> |
||||
532 | <i class="fa-solid fa-keyboard nav-icon"></i> |
||||
533 | <p>' . $lang->get('fields') . '</p> |
||||
534 | </a> |
||||
535 | </li> |
||||
536 | <li class="nav-item"> |
||||
537 | <a href="#" data-name="ldap" class="nav-link', $get['page'] === 'ldap' ? ' active' : '', '"> |
||||
538 | <i class="fa-solid fa-id-card nav-icon"></i> |
||||
539 | <p>' . $lang->get('ldap') . '</p> |
||||
540 | </a> |
||||
541 | </li> |
||||
542 | <li class="nav-item"> |
||||
543 | <a href="#" data-name="uploads" class="nav-link', $get['page'] === 'uploads' ? ' active' : '', '"> |
||||
544 | <i class="fa-solid fa-file-upload nav-icon"></i> |
||||
545 | <p>' . $lang->get('uploads') . '</p> |
||||
546 | </a> |
||||
547 | </li> |
||||
548 | <li class="nav-item"> |
||||
549 | <a href="#" data-name="statistics" class="nav-link', $get['page'] === 'statistics' ? ' active' : '', '"> |
||||
550 | <i class="fa-solid fa-chart-bar nav-icon"></i> |
||||
551 | <p>' . $lang->get('statistics') . '</p> |
||||
552 | </a> |
||||
553 | </li> |
||||
554 | </ul> |
||||
555 | </li>'; |
||||
556 | |||||
557 | if (isset($SETTINGS['enable_tasks_manager']) && (int) $SETTINGS['enable_tasks_manager'] === 1) { |
||||
558 | echo ' |
||||
559 | <li class="nav-item"> |
||||
560 | <a href="#" data-name="tasks" class="nav-link', $get['page'] === 'tasks' ? ' active' : '', '"> |
||||
561 | <i class="fa-solid fa-tasks nav-icon"></i> |
||||
562 | <p>' . $lang->get('tasks') . '</p> |
||||
563 | </a> |
||||
564 | </li>'; |
||||
565 | } |
||||
566 | } |
||||
567 | |||||
568 | if ( |
||||
569 | $session_user_admin === 1 |
||||
570 | || $session_user_manager === 1 |
||||
571 | || $session_user_human_resources === 1 |
||||
572 | ) { |
||||
573 | echo ' |
||||
574 | <li class="nav-item"> |
||||
575 | <a href="#" data-name="folders" class="nav-link', $get['page'] === 'folders' ? ' active' : '', '"> |
||||
576 | <i class="nav-icon fa-solid fa-folder-open"></i> |
||||
577 | <p> |
||||
578 | ' . $lang->get('folders') . ' |
||||
579 | </p> |
||||
580 | </a> |
||||
581 | </li> |
||||
582 | <li class="nav-item"> |
||||
583 | <a href="#" data-name="roles" class="nav-link', $get['page'] === 'roles' ? ' active' : '', '"> |
||||
584 | <i class="nav-icon fa-solid fa-graduation-cap"></i> |
||||
585 | <p> |
||||
586 | ' . $lang->get('roles') . ' |
||||
587 | </p> |
||||
588 | </a> |
||||
589 | </li> |
||||
590 | <li class="nav-item"> |
||||
591 | <a href="#" data-name="users" class="nav-link', $get['page'] === 'users' ? ' active' : '', '"> |
||||
592 | <i class="nav-icon fa-solid fa-users"></i> |
||||
593 | <p> |
||||
594 | ' . $lang->get('users') . ' |
||||
595 | </p> |
||||
596 | </a> |
||||
597 | </li> |
||||
598 | <li class="nav-item has-treeview', $menuUtilities === true ? ' menu-open' : '', '"> |
||||
599 | <a href="#" class="nav-link"> |
||||
600 | <i class="nav-icon fa-solid fa-cubes"></i> |
||||
601 | <p>' . $lang->get('admin_views') . '<i class="fa-solid fa-angle-left right"></i></p> |
||||
602 | </a> |
||||
603 | <ul class="nav nav-treeview"> |
||||
604 | <li class="nav-item"> |
||||
605 | <a href="#" data-name="utilities.renewal" class="nav-link', $get['page'] === 'utilities.renewal' ? ' active' : '', '"> |
||||
606 | <i class="far fa-calendar-alt nav-icon"></i> |
||||
607 | <p>' . $lang->get('renewal') . '</p> |
||||
608 | </a> |
||||
609 | </li> |
||||
610 | <li class="nav-item"> |
||||
611 | <a href="#" data-name="utilities.deletion" class="nav-link', $get['page'] === 'utilities.deletion' ? ' active' : '', '"> |
||||
612 | <i class="fa-solid fa-trash-alt nav-icon"></i> |
||||
613 | <p>' . $lang->get('deletion') . '</p> |
||||
614 | </a> |
||||
615 | </li> |
||||
616 | <li class="nav-item"> |
||||
617 | <a href="#" data-name="utilities.logs" class="nav-link', $get['page'] === 'utilities.logs' ? ' active' : '', '"> |
||||
618 | <i class="fa-solid fa-history nav-icon"></i> |
||||
619 | <p>' . $lang->get('logs') . '</p> |
||||
620 | </a> |
||||
621 | </li> |
||||
622 | <li class="nav-item"> |
||||
623 | <a href="#" data-name="utilities.database" class="nav-link', $get['page'] === 'utilities.database' ? ' active' : '', '"> |
||||
624 | <i class="fa-solid fa-database nav-icon"></i> |
||||
625 | <p>' . $lang->get('database') . '</p> |
||||
626 | </a> |
||||
627 | </li> |
||||
628 | </ul> |
||||
629 | </li>'; |
||||
630 | } ?> |
||||
631 | </ul> |
||||
632 | </nav> |
||||
633 | <!-- /.sidebar-menu --> |
||||
634 | <div class="menu-footer"> |
||||
635 | <div class="" id="sidebar-footer"> |
||||
636 | <i class="fa-solid fa-clock-o mr-2 infotip text-info pointer" title="<?php echo $lang->get('server_time') . ' ' . |
||||
637 | date($SETTINGS['date_format'], (int) $server['request_time']) . ' - ' . |
||||
638 | date($SETTINGS['time_format'], (int) $server['request_time']); ?>"></i> |
||||
639 | <i class="fa-solid fa-users mr-2 infotip text-info pointer" title="<?php echo $session_nb_users_online . ' ' . $lang->get('users_online'); ?>"></i> |
||||
640 | <a href="<?php echo DOCUMENTATION_URL; ?>" target="_blank" class="text-info"><i class="fa-solid fa-book mr-2 infotip" title="<?php echo $lang->get('documentation_canal'); ?>"></i></a> |
||||
641 | <a href="<?php echo HELP_URL; ?>" target="_blank" class="text-info"><i class="fa-solid fa-life-ring mr-2 infotip" title="<?php echo $lang->get('admin_help'); ?>"></i></a> |
||||
642 | <i class="fa-solid fa-bug infotip pointer text-info" title="<?php echo $lang->get('bugs_page'); ?>" onclick="generateBugReport()"></i> |
||||
643 | </div> |
||||
644 | <?php |
||||
645 | ?> |
||||
646 | </div> |
||||
647 | </div> |
||||
648 | <!-- /.sidebar --> |
||||
649 | </aside> |
||||
650 | |||||
651 | <!-- Content Wrapper. Contains page content --> |
||||
652 | <div class="content-wrapper"> |
||||
653 | |||||
654 | <!-- DEFECT REPORT --> |
||||
655 | <div class="card card-danger m-2 hidden" id="dialog-bug-report"> |
||||
656 | <div class="card-header"> |
||||
657 | <h3 class="card-title"> |
||||
658 | <i class="fa-solid fa-bug mr-2"></i> |
||||
659 | <?php echo $lang->get('defect_report'); ?> |
||||
660 | </h3> |
||||
661 | </div> |
||||
662 | <div class="card-body"> |
||||
663 | <div class="row"> |
||||
664 | <div class="col-sm-12 col-md-12"> |
||||
665 | <div class="mb-2 alert alert-info"> |
||||
666 | <i class="icon fa-solid fa-info mr-2"></i> |
||||
667 | <?php echo $lang->get('bug_report_to_github'); ?> |
||||
668 | </div> |
||||
669 | <textarea class="form-control" style="min-height:300px;" id="dialog-bug-report-text" placeholder="<?php echo $lang->get('please_wait_while_loading'); ?>"></textarea> |
||||
670 | </div> |
||||
671 | </div> |
||||
672 | </div> |
||||
673 | <div class="card-footer"> |
||||
674 | <button class="btn btn-primary mr-2 clipboard-copy" data-clipboard-text="dialog-bug-report-text" id="dialog-bug-report-select-button"><?php echo $lang->get('copy_to_clipboard'); ?></button> |
||||
675 | <button class="btn btn-primary" id="dialog-bug-report-github-button"><?php echo $lang->get('open_bug_report_in_github'); ?></button> |
||||
676 | <button class="btn btn-default float-right close-element"><?php echo $lang->get('close'); ?></button> |
||||
677 | </div> |
||||
678 | </div> |
||||
679 | <!-- /.DEFECT REPORT --> |
||||
680 | |||||
681 | |||||
682 | <!-- USER CHANGE AUTH PASSWORD --> |
||||
683 | <div class="card card-warning m-3 hidden" id="dialog-user-change-password"> |
||||
684 | <div class="card-header"> |
||||
685 | <h3 class="card-title"> |
||||
686 | <i class="fa-solid fa-bullhorn mr-2"></i> |
||||
687 | <?php echo $lang->get('your_attention_is_required'); ?> |
||||
688 | </h3> |
||||
689 | </div> |
||||
690 | <div class="card-body"> |
||||
691 | <div class="row"> |
||||
692 | <div class="col-sm-12 col-md-12"> |
||||
693 | <div class="mb-5 alert alert-info hidden" id="dialog-user-change-password-info"> |
||||
694 | </div> |
||||
695 | <div class="input-group mb-3"> |
||||
696 | <div class="input-group-prepend"> |
||||
697 | <span class="input-group-text"><?php echo $lang->get('provide_your_current_password'); ?></span> |
||||
698 | </div> |
||||
699 | <input type="password" class="form-control" id="profile-current-password"> |
||||
700 | </div> |
||||
701 | <div class="input-group mb-3"> |
||||
702 | <div class="input-group-prepend"> |
||||
703 | <span class="input-group-text"><?php echo $lang->get('index_new_pw'); ?></span> |
||||
704 | </div> |
||||
705 | <input type="password" class="form-control" id="profile-password"> |
||||
706 | <div class="input-group-append" style="margin: 0px;"> |
||||
707 | <span class="input-group-text" id="profile-password-strength"></span> |
||||
708 | <input type="hidden" id="profile-password-complex" /> |
||||
709 | </div> |
||||
710 | </div> |
||||
711 | <div class="input-group mb-3"> |
||||
712 | <div class="input-group-prepend"> |
||||
713 | <span class="input-group-text"><?php echo $lang->get('index_change_pw_confirmation'); ?></span> |
||||
714 | </div> |
||||
715 | <input type="password" class="form-control" id="profile-password-confirm"> |
||||
716 | </div> |
||||
717 | <div class="form-control mt-3 font-weight-light grey" id="dialog-user-change-password-progress"> |
||||
718 | <?php echo $lang->get('provide_current_psk_and_click_launch'); ?> |
||||
719 | </div> |
||||
720 | </div> |
||||
721 | </div> |
||||
722 | </div> |
||||
723 | <div class="card-footer"> |
||||
724 | <button class="btn btn-primary" id="dialog-user-change-password-do"><?php echo $lang->get('launch'); ?></button> |
||||
725 | <button class="btn btn-default float-right" id="dialog-user-change-password-close"><?php echo $lang->get('close'); ?></button> |
||||
726 | </div> |
||||
727 | </div> |
||||
728 | <!-- /.USER CHANGE AUTH PASSWORD --> |
||||
729 | |||||
730 | |||||
731 | <!-- LDAP USER HAS CHANGED AUTH PASSWORD --> |
||||
732 | <div class="card card-warning m-3 hidden" id="dialog-ldap-user-change-password"> |
||||
733 | <div class="card-header"> |
||||
734 | <h3 class="card-title"> |
||||
735 | <i class="fa-solid fa-bullhorn mr-2"></i> |
||||
736 | <?php echo $lang->get('your_attention_is_required'); ?> |
||||
737 | </h3> |
||||
738 | </div> |
||||
739 | <div class="card-body"> |
||||
740 | <div class="row"> |
||||
741 | <div class="col-sm-12 col-md-12"> |
||||
742 | <div class="mb-5 alert alert-info hidden" id="dialog-ldap-user-change-password-info"> |
||||
743 | </div> |
||||
744 | <div class="input-group mb-3"> |
||||
745 | <div class="input-group-prepend"> |
||||
746 | <span class="input-group-text"><?php echo $lang->get('provide_your_previous_password'); ?></span> |
||||
747 | </div> |
||||
748 | <input type="password" class="form-control" id="dialog-ldap-user-change-password-old"> |
||||
749 | </div> |
||||
750 | <div class="input-group mb-3"> |
||||
751 | <div class="input-group-prepend"> |
||||
752 | <span class="input-group-text"><?php echo $lang->get('provide_your_current_password'); ?></span> |
||||
753 | </div> |
||||
754 | <input type="password" class="form-control" id="dialog-ldap-user-change-password-current"> |
||||
755 | </div> |
||||
756 | <div class="form-control mt-3 font-weight-light grey" id="dialog-ldap-user-change-password-progress"> |
||||
757 | <?php echo $lang->get('provide_current_psk_and_click_launch'); ?> |
||||
758 | </div> |
||||
759 | </div> |
||||
760 | </div> |
||||
761 | </div> |
||||
762 | <div class="card-footer"> |
||||
763 | <button class="btn btn-primary" id="dialog-ldap-user-change-password-do"><?php echo $lang->get('launch'); ?></button> |
||||
764 | <button class="btn btn-default float-right" id="dialog-ldap-user-change-password-close"><?php echo $lang->get('close'); ?></button> |
||||
765 | </div> |
||||
766 | </div> |
||||
767 | <!-- /.LDAP USER HAS CHANGED AUTH PASSWORD --> |
||||
768 | |||||
769 | |||||
770 | <!-- ADMIN ASKS FOR USER PASSWORD CHANGE --> |
||||
771 | <div class="card card-warning m-3 hidden" id="dialog-admin-change-user-password"> |
||||
772 | <div class="card-header"> |
||||
773 | <h3 class="card-title"> |
||||
774 | <i class="fa-solid fa-bullhorn mr-2"></i> |
||||
775 | <?php echo $lang->get('your_attention_is_required'); ?> |
||||
776 | </h3> |
||||
777 | </div> |
||||
778 | <div class="card-body"> |
||||
779 | <div class="row"> |
||||
780 | <div class="col-sm-12 col-md-12"> |
||||
781 | <div class="mb-2 alert alert-info" id="dialog-admin-change-user-password-info"> |
||||
782 | </div> |
||||
783 | <div class="form-control mt-3 font-weight-light grey" id="dialog-admin-change-user-password-progress"> |
||||
784 | <?php echo $lang->get('provide_current_psk_and_click_launch'); ?> |
||||
785 | </div> |
||||
786 | </div> |
||||
787 | </div> |
||||
788 | <input type="hidden" id="admin_change_user_password_target_user" value=""> |
||||
789 | <input type="hidden" id="admin_change_user_encryption_code_target_user" value=""> |
||||
790 | </div> |
||||
791 | <div class="card-footer"> |
||||
792 | <button class="btn btn-primary" id="dialog-admin-change-user-password-do"><?php echo $lang->get('launch'); ?></button> |
||||
793 | <button class="btn btn-default float-right" id="dialog-admin-change-user-password-close"><?php echo $lang->get('close'); ?></button> |
||||
794 | </div> |
||||
795 | </div> |
||||
796 | <!-- /.ADMIN ASKS FOR USER PASSWORD CHANGE --> |
||||
797 | |||||
798 | |||||
799 | <!-- USER PROVIDES TEMPORARY CODE --> |
||||
800 | <div class="card card-warning m-3 hidden" id="dialog-user-temporary-code"> |
||||
801 | <div class="card-header"> |
||||
802 | <h3 class="card-title"> |
||||
803 | <i class="fa-solid fa-bullhorn mr-2"></i> |
||||
804 | <?php echo $lang->get('your_attention_is_required'); ?> |
||||
805 | </h3> |
||||
806 | </div> |
||||
807 | <div class="card-body"> |
||||
808 | <div class="row"> |
||||
809 | <div class="col-sm-12 col-md-12"> |
||||
810 | <div class="mb-5 alert alert-info" id="dialog-user-temporary-code-info"> |
||||
811 | </div> |
||||
812 | <div class="input-group mb-3"> |
||||
813 | <div class="input-group-prepend"> |
||||
814 | <span class="input-group-text"><?php echo $lang->get('provide_your_current_password'); ?></span> |
||||
815 | </div> |
||||
816 | <input type="password" class="form-control" id="dialog-user-temporary-code-current-password"> |
||||
817 | </div> |
||||
818 | <div class="input-group mb-3"> |
||||
819 | <div class="input-group-prepend"> |
||||
820 | <span class="input-group-text"><?php echo $lang->get('temporary_encryption_code'); ?></span> |
||||
821 | </div> |
||||
822 | <input type="password" class="form-control" id="dialog-user-temporary-code-value"> |
||||
823 | </div> |
||||
824 | <div class="form-control mt-3 font-weight-light grey" id="dialog-user-temporary-code-progress"> |
||||
825 | <?php echo $lang->get('provide_current_psk_and_click_launch'); ?> |
||||
826 | </div> |
||||
827 | </div> |
||||
828 | </div> |
||||
829 | </div> |
||||
830 | <div class="card-footer"> |
||||
831 | <button class="btn btn-primary" id="dialog-user-temporary-code-do"><?php echo $lang->get('launch'); ?></button> |
||||
832 | <button class="btn btn-default float-right" id="dialog-user-temporary-code-close"><?php echo $lang->get('close'); ?></button> |
||||
833 | </div> |
||||
834 | </div> |
||||
835 | <!-- /.USER PROVIDES TEMPORARY CODE --> |
||||
836 | |||||
837 | |||||
838 | <!-- ENCRYPTION KEYS GENERATION --> |
||||
839 | <div class="card card-warning m-3 mt-3 hidden" id="dialog-encryption-keys"> |
||||
840 | <div class="card-header"> |
||||
841 | <h3 class="card-title"> |
||||
842 | <i class="fa-solid fa-bullhorn mr-2"></i> |
||||
843 | <?php echo $lang->get('your_attention_is_required'); ?> |
||||
844 | </h3> |
||||
845 | </div> |
||||
846 | <div class="card-body"> |
||||
847 | <div class="row"> |
||||
848 | <div class="col-sm-12 col-md-12"> |
||||
849 | <div class="mb-2 alert alert-info" id="warning-text-reencryption"> |
||||
850 | <i class="icon fa-solid fa-info mr-2"></i> |
||||
851 | <?php echo $lang->get('objects_encryption_explanation'); ?> |
||||
852 | </div> |
||||
853 | </div> |
||||
854 | </div> |
||||
855 | <input type="hidden" id="sharekeys_reencryption_target_user" value=""> |
||||
856 | </div> |
||||
857 | <div class="card-footer"> |
||||
858 | <button class="btn btn-primary" id="button_do_sharekeys_reencryption"><?php echo $lang->get('launch'); ?></button> |
||||
859 | <button class="btn btn-default float-right" id="button_close_sharekeys_reencryption"><?php echo $lang->get('close'); ?></button> |
||||
860 | </div> |
||||
861 | </div> |
||||
862 | <!-- /.ENCRYPTION KEYS GENERATION --> |
||||
863 | |||||
864 | |||||
865 | <!-- ENCRYPTION KEYS GENERATION FOR LDAP NEW USER --> |
||||
866 | <div class="card card-warning m-3 mt-3 hidden" id="dialog-ldap-user-build-keys-database"> |
||||
867 | <div class="card-header"> |
||||
868 | <h3 class="card-title"> |
||||
869 | <i class="fa-solid fa-bullhorn mr-2"></i> |
||||
870 | <?php echo $lang->get('your_attention_is_required'); ?> |
||||
871 | </h3> |
||||
872 | </div> |
||||
873 | <div class="card-body"> |
||||
874 | <div class="row"> |
||||
875 | <div class="col-sm-12 col-md-12"> |
||||
876 | <div class="mb-2 alert alert-info" id="warning-text-reencryption"> |
||||
877 | <i class="icon fa-solid fa-info mr-2"></i> |
||||
878 | <?php echo $lang->get('help_for_launching_items_encryption'); ?> |
||||
879 | </div> |
||||
880 | |||||
881 | <div class="input-group mb-3"> |
||||
882 | <div class="input-group-prepend"> |
||||
883 | <span class="input-group-text"><?php echo $lang->get('temporary_encryption_code'); ?></span> |
||||
884 | </div> |
||||
885 | <input type="password" class="form-control" id="dialog-ldap-user-build-keys-database-code"> |
||||
886 | </div> |
||||
887 | |||||
888 | <div class="form-control mt-3 font-weight-light grey" id="dialog-ldap-user-build-keys-database-progress"> |
||||
889 | <?php echo $lang->get('provide_current_psk_and_click_launch'); ?> |
||||
890 | </div> |
||||
891 | </div> |
||||
892 | </div> |
||||
893 | <input type="hidden" id="sharekeys_reencryption_target_user" value=""> |
||||
894 | </div> |
||||
895 | <div class="card-footer"> |
||||
896 | <button class="btn btn-primary" id="dialog-ldap-user-build-keys-database-do"><?php echo $lang->get('launch'); ?></button> |
||||
897 | <button class="btn btn-default float-right" id="dialog-ldap-user-build-keys-database-close"><?php echo $lang->get('close'); ?></button> |
||||
898 | </div> |
||||
899 | </div> |
||||
900 | <!-- /.ENCRYPTION KEYS GENERATION --> |
||||
901 | |||||
902 | <!-- ENCRYPTION PERSONAL ITEMS GENERATION --> |
||||
903 | <div class="card card-warning m-3 hidden" id="dialog-encryption-personal-items-after-upgrade"> |
||||
904 | <div class="card-header"> |
||||
905 | <h3 class="card-title"> |
||||
906 | <i class="fa-solid fa-bullhorn mr-2"></i> |
||||
907 | <?php echo $lang->get('your_attention_is_required'); ?> |
||||
908 | </h3> |
||||
909 | </div> |
||||
910 | <div class="card-body"> |
||||
911 | <div class="row"> |
||||
912 | <div class="col-sm-12 col-md-12"> |
||||
913 | <div class="mb-2 alert alert-info" id="warning-text-changing-password"> |
||||
914 | <i class="icon fa-solid fa-info mr-2"></i> |
||||
915 | <?php echo $lang->get('objects_encryption_explanation'); ?> |
||||
916 | </div> |
||||
917 | <div class="input-group mb-3"> |
||||
918 | <div class="input-group-prepend"> |
||||
919 | <span class="input-group-text"><?php echo $lang->get('personal_salt_key'); ?></span> |
||||
920 | </div> |
||||
921 | <input type="password" class="form-control" id="user-current-defuse-psk"> |
||||
922 | </div> |
||||
923 | <div class="form-control mt-3 font-weight-light grey" id="user-current-defuse-psk-progress"> |
||||
924 | <?php echo $lang->get('provide_current_psk_and_click_launch'); ?> |
||||
925 | </div> |
||||
926 | </div> |
||||
927 | </div> |
||||
928 | </div> |
||||
929 | <div class="card-footer"> |
||||
930 | <button class="btn btn-primary" id="button_do_personal_items_reencryption"><?php echo $lang->get('launch'); ?></button> |
||||
931 | <button class="btn btn-default float-right" id="button_close_personal_items_reencryption"><?php echo $lang->get('close'); ?></button> |
||||
932 | </div> |
||||
933 | </div> |
||||
934 | <!-- /.ENCRYPTION PERSONAL ITEMS GENERATION --> |
||||
935 | |||||
936 | |||||
937 | <?php |
||||
938 | if ($session_initial_url !== null && empty($session_initial_url) === false) { |
||||
939 | include $session_initial_url; |
||||
940 | } elseif ($get['page'] === 'items') { |
||||
941 | // SHow page with Items |
||||
942 | if ((int) $session_user_admin !== 1) { |
||||
943 | include $SETTINGS['cpassman_dir'] . '/pages/items.php'; |
||||
944 | } elseif ((int) $session_user_admin === 1) { |
||||
945 | include $SETTINGS['cpassman_dir'] . '/pages/admin.php'; |
||||
946 | } else { |
||||
947 | $session->set('system-error_code', ERR_NOT_ALLOWED); |
||||
948 | //not allowed page |
||||
949 | include $SETTINGS['cpassman_dir'] . '/error.php'; |
||||
950 | } |
||||
951 | } elseif (in_array($get['page'], array_keys($mngPages)) === true) { |
||||
952 | // Define if user is allowed to see management pages |
||||
953 | if ($session_user_admin === 1) { |
||||
954 | include $SETTINGS['cpassman_dir'] . '/pages/' . $mngPages[$get['page']]; |
||||
955 | } elseif ($session_user_manager === 1 || $session_user_human_resources === 1) { |
||||
956 | if ($get['page'] !== 'manage_main' |
||||
957 | && $get['page'] !== 'manage_settings' |
||||
958 | ) { |
||||
959 | //include $SETTINGS['cpassman_dir'] . '/pages/' . $mngPages[$_GET['page']]; |
||||
960 | } else { |
||||
961 | $session->set('system-error_code', ERR_NOT_ALLOWED); |
||||
962 | //not allowed page |
||||
963 | include $SETTINGS['cpassman_dir'] . '/error.php'; |
||||
964 | } |
||||
965 | } else { |
||||
966 | $session->set('system-error_code', ERR_NOT_ALLOWED); |
||||
967 | //not allowed page |
||||
968 | include $SETTINGS['cpassman_dir'] . '/error.php'; |
||||
969 | } |
||||
970 | } elseif (empty($get['page']) === false) { |
||||
971 | include $SETTINGS['cpassman_dir'] . '/pages/' . $get['page'] . '.php'; |
||||
972 | } else { |
||||
973 | $session->set('system-array_roles', ERR_NOT_EXIST); |
||||
974 | //page doesn't exist |
||||
975 | include $SETTINGS['cpassman_dir'].'/error.php'; |
||||
976 | } |
||||
977 | |||||
978 | // Case where login attempts have been identified |
||||
979 | if ((int) $session->get('user-unsuccessfull_login_attempts_nb') !== 0 |
||||
980 | && (bool) $session->get('user-unsuccessfull_login_attempts_shown') === false |
||||
981 | ) { |
||||
982 | ?> |
||||
983 | <input type="hidden" id="user-login-attempts" value="1"> |
||||
984 | <?php |
||||
985 | } ?> |
||||
986 | |||||
987 | </div> |
||||
988 | <!-- /.content-wrapper --> |
||||
989 | |||||
990 | <!-- Control Sidebar --> |
||||
991 | <aside class="control-sidebar control-sidebar-dark"> |
||||
992 | <!-- Control sidebar content goes here --> |
||||
993 | <div class="p-3"> |
||||
994 | <h5><?php echo $lang->get('last_items_title'); ?></h5> |
||||
995 | <div> |
||||
996 | <ul class="list-unstyled" id="index-last-pwds"> |
||||
997 | </ul> |
||||
998 | </div> |
||||
999 | </div> |
||||
1000 | </aside> |
||||
1001 | <!-- /.control-sidebar --> |
||||
1002 | |||||
1003 | <!-- Main Footer --> |
||||
1004 | <footer class="main-footer"> |
||||
1005 | <!-- To the right --> |
||||
1006 | <div class="float-right d-none d-sm-inline"> |
||||
1007 | <?php echo $lang->get('version_alone'); ?> <?php echo TP_VERSION; ?> |
||||
1008 | </div> |
||||
1009 | <!-- Default to the left --> |
||||
1010 | <strong>Copyright © <?php echo TP_COPYRIGHT; ?> <a href="<?php echo TEAMPASS_URL; ?>"><?php echo TP_TOOL_NAME; ?></a>.</strong> All rights reserved. |
||||
1011 | </footer> |
||||
1012 | </div> |
||||
1013 | <!-- ./wrapper --> |
||||
1014 | |||||
1015 | <?php |
||||
1016 | /* MAIN PAGE */ |
||||
1017 | echo ' |
||||
1018 | <input type="hidden" id="temps_restant" value="', $session->get('user-session_duration') ?? '', '" />'; |
||||
1019 | // display an item in the context of OTV link |
||||
1020 | } elseif ((null === $session->get('user-validite_pw')|| empty($session->get('user-validite_pw')) === true || empty($session->get('user-id')) === true) |
||||
1021 | && empty($get['otv']) === false |
||||
1022 | ) { |
||||
1023 | // case where one-shot viewer |
||||
1024 | if (empty($request->query->get('code')) === false && empty($request->query->get('stamp')) === false |
||||
1025 | ) { |
||||
1026 | include './includes/core/otv.php'; |
||||
1027 | } else { |
||||
1028 | $session->set('system-error_code', ERR_VALID_SESSION); |
||||
1029 | $session->set( |
||||
1030 | 'user-initial_url', |
||||
1031 | filter_var( |
||||
1032 | substr( |
||||
1033 | $server['request_uri'], |
||||
1034 | strpos($server['request_uri'], 'index.php?') |
||||
1035 | ), |
||||
1036 | FILTER_SANITIZE_URL |
||||
1037 | ) |
||||
1038 | ); |
||||
1039 | include $SETTINGS['cpassman_dir'] . '/error.php'; |
||||
1040 | } |
||||
1041 | } elseif (//(empty($session->get('user-id')) === false && $session->get('user-id') !== null) || |
||||
1042 | empty($session->get('user-id')) === true |
||||
1043 | || null === $session->get('user-validite_pw') |
||||
1044 | || $session->get('user-validite_pw') === 0 |
||||
1045 | ) { |
||||
1046 | // case where user not logged and can't access a direct link |
||||
1047 | if (empty($get['page']) === false) { |
||||
1048 | $session->set( |
||||
1049 | 'user-initial_url', |
||||
1050 | filter_var( |
||||
1051 | substr($server['request_uri'], strpos($server['request_uri'], 'index.php?')), |
||||
1052 | FILTER_SANITIZE_URL |
||||
1053 | ) |
||||
1054 | ); |
||||
1055 | // REDIRECTION PAGE ERREUR |
||||
1056 | echo ' |
||||
1057 | <script language="javascript" type="text/javascript"> |
||||
1058 | <!-- |
||||
1059 | sessionStorage.clear(); |
||||
1060 | store.set( |
||||
1061 | "teampassSettings", {}, |
||||
1062 | function(teampassSettings) {} |
||||
1063 | ); |
||||
1064 | window.location.href = "index.php"; |
||||
1065 | --> |
||||
1066 | </script>'; |
||||
1067 | exit; |
||||
1068 | } |
||||
1069 | $session->set('user-initial_url', ''); |
||||
1070 | //$session->invalidate(); |
||||
1071 | //session_regenerate_id(true); |
||||
1072 | error_log('index.php L1069'); |
||||
1073 | // LOGIN form |
||||
1074 | include $SETTINGS['cpassman_dir'] . '/includes/core/login.php'; |
||||
1075 | } else { |
||||
1076 | // Clear session |
||||
1077 | error_log('index.php L1074'); |
||||
1078 | $session->invalidate(); |
||||
1079 | //session_regenerate_id(true); |
||||
1080 | } |
||||
1081 | ?> |
||||
1082 | |||||
1083 | <!-- Modal --> |
||||
1084 | <div class="modal fade" id="warningModal" tabindex="-1" role="dialog" aria-labelledby="Caution" aria-hidden="true"> |
||||
1085 | <div class="modal-dialog modal-dialog-centered modal-lg" role="document"> |
||||
1086 | <div class="modal-content"> |
||||
1087 | <div class="modal-header"> |
||||
1088 | <h5 class="modal-title" id="warningModalTitle"></h5> |
||||
1089 | <button type="button" class="close" data-dismiss="modal" aria-label="Close" id="warningModalCrossClose"> |
||||
1090 | <span aria-hidden="true">×</span> |
||||
1091 | </button> |
||||
1092 | </div> |
||||
1093 | <div class="modal-body" id="warningModalBody"> |
||||
1094 | </div> |
||||
1095 | <div class="modal-footer"> |
||||
1096 | <button type="button" class="btn btn-secondary" data-dismiss="modal" id="warningModalButtonClose"></button> |
||||
1097 | <button type="button" class="btn btn-primary" id="warningModalButtonAction"></button> |
||||
1098 | </div> |
||||
1099 | </div> |
||||
1100 | </div> |
||||
1101 | </div> |
||||
1102 | |||||
1103 | |||||
1104 | |||||
1105 | <!-- REQUIRED SCRIPTS --> |
||||
1106 | |||||
1107 | <!-- Font Awesome Icons --> |
||||
1108 | <link href="plugins/fontawesome-free-6/css/fontawesome.min.css" rel="stylesheet"> |
||||
1109 | <link href="plugins/fontawesome-free-6/css/solid.min.css" rel="stylesheet"> |
||||
1110 | <link href="plugins/fontawesome-free-6/css/regular.min.css" rel="stylesheet"> |
||||
1111 | <link href="plugins/fontawesome-free-6/css/brands.min.css" rel="stylesheet"> |
||||
1112 | <link href="plugins/fontawesome-free-6/css/v5-font-face.min.css" rel="stylesheet" /> |
||||
1113 | <!-- jQuery --> |
||||
1114 | <script src="plugins/jquery/jquery.min.js"></script> |
||||
1115 | <!-- jQuery UI --> |
||||
1116 | <script src="plugins/jqueryUI/jquery-ui.min.js"></script> |
||||
1117 | <link rel="stylesheet" href="plugins/jqueryUI/jquery-ui.min.css"> |
||||
1118 | <!-- Popper --> |
||||
1119 | <script src="plugins/popper/umd/popper.min.js"></script> |
||||
1120 | <!-- Bootstrap --> |
||||
1121 | <script src="plugins/bootstrap/js/bootstrap.bundle.min.js"></script> |
||||
1122 | <!-- AdminLTE --> |
||||
1123 | <script src="plugins/adminlte/js/adminlte.min.js"></script> |
||||
1124 | <!-- Altertify --> |
||||
1125 | <!--<script type="text/javascript" src="plugins/alertifyjs/alertify.min.js"></script>--> |
||||
1126 | <!-- Toastr --> |
||||
1127 | <script type="text/javascript" src="plugins/toastr/toastr.min.js"></script> |
||||
1128 | <!-- STORE.JS --> |
||||
1129 | <script type="text/javascript" src="plugins/store.js/dist/store.everything.min.js"></script> |
||||
1130 | <!-- cryptojs-aesphp --> |
||||
1131 | <script type="text/javascript" src="includes/libraries/cryptojs/crypto-js.js"></script> |
||||
1132 | <script type="text/javascript" src="includes/libraries/cryptojs/encryption.js"></script> |
||||
1133 | <!-- pace --> |
||||
1134 | <script type="text/javascript" data-pace-options='{ "ajax": true, "eventLag": false }' src="plugins/pace-progress/pace.min.js"></script> |
||||
1135 | <!-- clipboardjs --> |
||||
1136 | <script type="text/javascript" src="plugins/clipboard/clipboard.min.js"></script> |
||||
1137 | <!-- select2 --> |
||||
1138 | <script type="text/javascript" src="plugins/select2/js/select2.full.min.js"></script> |
||||
1139 | <!-- simplePassMeter --> |
||||
1140 | <link rel="stylesheet" href="plugins/simplePassMeter/simplePassMeter.css" type="text/css" /> |
||||
1141 | <script type="text/javascript" src="plugins/simplePassMeter/simplePassMeter.js"></script> |
||||
1142 | <!-- platform --> |
||||
1143 | <script type="text/javascript" src="plugins/platform/platform.js"></script> |
||||
1144 | <!-- radiobuttons --> |
||||
1145 | <link rel="stylesheet" href="plugins/radioforbuttons/bootstrap-buttons.min.css" type="text/css" /> |
||||
1146 | <script type="text/javascript" src="plugins/radioforbuttons/jquery.radiosforbuttons.min.js"></script> |
||||
1147 | <!-- ICHECK --> |
||||
1148 | <!--<link rel="stylesheet" href="./plugins/icheck-material/icheck-material.min.css">--> |
||||
1149 | <link rel="stylesheet" href="./plugins/icheck/skins/all.css"> |
||||
1150 | <script type="text/javascript" src="./plugins/icheck/icheck.min.js"></script> |
||||
1151 | <!-- bootstrap-add-clear --> |
||||
1152 | <script type="text/javascript" src="plugins/bootstrap-add-clear/bootstrap-add-clear.min.js"></script> |
||||
1153 | <!-- DOMPurify --> |
||||
1154 | <script type="text/javascript" src="plugins/DOMPurify/purify.min.js"></script> |
||||
1155 | |||||
1156 | <?php |
||||
1157 | $get = []; |
||||
1158 | $get['page'] = $request->query->get('page') === null ? '' : $request->query->get('page'); |
||||
1159 | if ($menuAdmin === true) { |
||||
1160 | ?> |
||||
1161 | <link rel="stylesheet" href="./plugins/toggles/css/toggles.css" /> |
||||
1162 | <link rel="stylesheet" href="./plugins/toggles/css/toggles-modern.css" /> |
||||
1163 | <script src="./plugins/toggles/toggles.min.js" type="text/javascript"></script> |
||||
1164 | <!-- InputMask --> |
||||
1165 | <script src="./plugins/inputmask/jquery.inputmask.min.js"></script> |
||||
1166 | <!-- Sortable --> |
||||
1167 | <!--<script src="./plugins/sortable/jquery.sortable.js"></script>--> |
||||
1168 | <!-- PLUPLOAD --> |
||||
1169 | <script type="text/javascript" src="includes/libraries/plupload/js/plupload.full.min.js"></script> |
||||
1170 | <!-- DataTables --> |
||||
1171 | <link rel="stylesheet" src="./plugins/datatables/css/jquery.dataTables.min.css"> |
||||
1172 | <link rel="stylesheet" src="./plugins/datatables/css/dataTables.bootstrap4.min.css"> |
||||
1173 | <script type="text/javascript" src="./plugins/datatables/js/jquery.dataTables.min.js"></script> |
||||
1174 | <script type="text/javascript" src="./plugins/datatables/js/dataTables.bootstrap4.min.js"></script> |
||||
1175 | <link rel="stylesheet" src="./plugins/datatables/extensions/Responsive-2.2.2/css/responsive.bootstrap4.min.css"> |
||||
1176 | <script type="text/javascript" src="./plugins/datatables/extensions/Responsive-2.2.2/js/dataTables.responsive.min.js"></script> |
||||
1177 | <script type="text/javascript" src="./plugins/datatables/extensions/Responsive-2.2.2/js/responsive.bootstrap4.min.js"></script> |
||||
1178 | <script type="text/javascript" src="./plugins/datatables/plugins/select.js"></script> |
||||
1179 | <link rel="stylesheet" src="./plugins/datatables/extensions/Scroller-1.5.0/css/scroller.bootstrap4.min.css"> |
||||
1180 | <script type="text/javascript" src="./plugins/datatables/extensions/Scroller-1.5.0/js/dataTables.scroller.min.js"></script> |
||||
1181 | <?php |
||||
1182 | } elseif (isset($get['page']) === true) { |
||||
1183 | if (in_array($get['page'], ['items', 'import']) === true) { |
||||
1184 | ?> |
||||
1185 | <link rel="stylesheet" href="./plugins/jstree/themes/default/style.min.css" /> |
||||
1186 | <script src="./plugins/jstree/jstree.min.js" type="text/javascript"></script> |
||||
1187 | <!-- countdownTimer --> |
||||
1188 | <script src="./plugins/jquery.countdown360/jquery.countdown360.js"></script> |
||||
1189 | <!-- SUMMERNOTE --> |
||||
1190 | <link rel="stylesheet" href="./plugins/summernote/summernote-bs4.css"> |
||||
1191 | <script src="./plugins/summernote/summernote-bs4.min.js"></script> |
||||
1192 | <!-- date-picker --> |
||||
1193 | <link rel="stylesheet" href="./plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css"> |
||||
1194 | <script src="./plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script> |
||||
1195 | <!-- time-picker --> |
||||
1196 | <link rel="stylesheet" href="./plugins/timepicker/bootstrap-timepicker.min.css"> |
||||
1197 | <script src="./plugins/timepicker/bootstrap-timepicker.min.js"></script> |
||||
1198 | <!-- PLUPLOAD --> |
||||
1199 | <script type="text/javascript" src="includes/libraries/plupload/js/plupload.full.min.js"></script> |
||||
1200 | <!-- VALIDATE --> |
||||
1201 | <script type="text/javascript" src="plugins/jquery-validation/jquery.validate.js"></script> |
||||
1202 | <!-- PWSTRENGHT --> |
||||
1203 | <script type="text/javascript" src="plugins/zxcvbn/zxcvbn.js"></script> |
||||
1204 | <script type="text/javascript" src="plugins/jquery.pwstrength/pwstrength-bootstrap.min.js"></script> |
||||
1205 | <!-- TOGGLE --> |
||||
1206 | <link rel="stylesheet" href="./plugins/toggles/css/toggles.css" /> |
||||
1207 | <link rel="stylesheet" href="./plugins/toggles/css/toggles-modern.css" /> |
||||
1208 | <script src="./plugins/toggles/toggles.min.js" type="text/javascript"></script> |
||||
1209 | <?php |
||||
1210 | } elseif (in_array($get['page'], ['search', 'folders', 'users', 'roles', 'utilities.deletion', 'utilities.logs', 'utilities.database', 'utilities.renewal', 'tasks']) === true) { |
||||
1211 | ?> |
||||
1212 | <!-- DataTables --> |
||||
1213 | <link rel="stylesheet" src="./plugins/datatables/css/jquery.dataTables.min.css"> |
||||
1214 | <link rel="stylesheet" src="./plugins/datatables/css/dataTables.bootstrap4.min.css"> |
||||
1215 | <script type="text/javascript" src="./plugins/datatables/js/jquery.dataTables.min.js"></script> |
||||
1216 | <script type="text/javascript" src="./plugins/datatables/js/dataTables.bootstrap4.min.js"></script> |
||||
1217 | <link rel="stylesheet" src="./plugins/datatables/extensions/Responsive-2.2.2/css/responsive.bootstrap4.min.css"> |
||||
1218 | <script type="text/javascript" src="./plugins/datatables/extensions/Responsive-2.2.2/js/dataTables.responsive.min.js"></script> |
||||
1219 | <script type="text/javascript" src="./plugins/datatables/extensions/Responsive-2.2.2/js/responsive.bootstrap4.min.js"></script> |
||||
1220 | <script type="text/javascript" src="./plugins/datatables/plugins/select.js"></script> |
||||
1221 | <link rel="stylesheet" src="./plugins/datatables/extensions/Scroller-1.5.0/css/scroller.bootstrap4.min.css"> |
||||
1222 | <script type="text/javascript" src="./plugins/datatables/extensions/Scroller-1.5.0/js/dataTables.scroller.min.js"></script> |
||||
1223 | <!-- dater picker --> |
||||
1224 | <link rel="stylesheet" href="./plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css"> |
||||
1225 | <script src="./plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script> |
||||
1226 | <!-- daterange picker --> |
||||
1227 | <link rel="stylesheet" href="./plugins/daterangepicker/daterangepicker.css"> |
||||
1228 | <script src="./plugins/moment/moment.min.js"></script> |
||||
1229 | <script src="./plugins/daterangepicker/daterangepicker.js"></script> |
||||
1230 | <!-- SlimScroll --> |
||||
1231 | <script src="./plugins/slimScroll/jquery.slimscroll.min.js"></script> |
||||
1232 | <!-- FastClick --> |
||||
1233 | <script src="./plugins/fastclick/fastclick.min.js"></script> |
||||
1234 | <?php |
||||
1235 | } elseif ($get['page'] === 'profile') { |
||||
1236 | ?> |
||||
1237 | <!-- FILESAVER --> |
||||
1238 | <script type="text/javascript" src="plugins/downloadjs/download.js"></script> |
||||
1239 | <!-- PLUPLOAD --> |
||||
1240 | <script type="text/javascript" src="includes/libraries/plupload/js/plupload.full.min.js"></script> |
||||
1241 | <?php |
||||
1242 | } elseif ($get['page'] === 'export') { |
||||
1243 | ?> |
||||
1244 | <!-- FILESAVER --> |
||||
1245 | <script type="text/javascript" src="plugins/downloadjs/download.js"></script> |
||||
1246 | <!-- PWSTRENGHT --> |
||||
1247 | <script type="text/javascript" src="plugins/zxcvbn/zxcvbn.js"></script> |
||||
1248 | <script type="text/javascript" src="plugins/jquery.pwstrength/pwstrength-bootstrap.min.js"></script> |
||||
1249 | <?php |
||||
1250 | } |
||||
1251 | } |
||||
1252 | ?> |
||||
1253 | <!-- functions --> |
||||
1254 | <script type="text/javascript" src="includes/js/functions.js"></script> |
||||
1255 | <script type="text/javascript" src="includes/js/CreateRandomString.js"></script> |
||||
1256 | |||||
1257 | </body> |
||||
1258 | |||||
1259 | </html> |
||||
1260 | |||||
1261 | <script type="text/javascript"> |
||||
1262 | //override defaults |
||||
1263 | /*alertify.defaults.transition = "slide"; |
||||
1264 | alertify.defaults.theme.ok = "btn btn-primary"; |
||||
1265 | alertify.defaults.theme.cancel = "btn btn-danger"; |
||||
1266 | alertify.defaults.theme.input = "form-control";*/ |
||||
1267 | |||||
1268 | toastr.options = { |
||||
1269 | "closeButton": false, |
||||
1270 | "debug": false, |
||||
1271 | "newestOnTop": false, |
||||
1272 | "progressBar": false, |
||||
1273 | "positionClass": "toast-bottom-right", |
||||
1274 | "preventDuplicates": true, |
||||
1275 | "onClick": "close", |
||||
1276 | "showDuration": "300", |
||||
1277 | "hideDuration": "1000", |
||||
1278 | "timeOut": "0", |
||||
1279 | "extendedTimeOut": "0", |
||||
1280 | "showEasing": "swing", |
||||
1281 | "hideEasing": "linear", |
||||
1282 | "showMethod": "fadeIn", |
||||
1283 | "hideMethod": "fadeOut" |
||||
1284 | } |
||||
1285 | </script> |
||||
1286 | |||||
1287 | |||||
1288 | <?php |
||||
1289 | $get = []; |
||||
1290 | $get['page'] = $request->query->get('page') === null ? '' : $request->query->get('page'); |
||||
1291 | |||||
1292 | // Load links, css and javascripts |
||||
1293 | if (isset($SETTINGS['cpassman_dir']) === true) { |
||||
1294 | include_once $SETTINGS['cpassman_dir'] . '/includes/core/load.js.php'; |
||||
1295 | if ($menuAdmin === true) { |
||||
1296 | include_once $SETTINGS['cpassman_dir'] . '/pages/admin.js.php'; |
||||
1297 | if ($get['page'] === '2fa') { |
||||
1298 | include_once $SETTINGS['cpassman_dir'] . '/pages/2fa.js.php'; |
||||
1299 | } elseif ($get['page'] === 'api') { |
||||
1300 | include_once $SETTINGS['cpassman_dir'] . '/pages/api.js.php'; |
||||
1301 | } elseif ($get['page'] === 'backups') { |
||||
1302 | include_once $SETTINGS['cpassman_dir'] . '/pages/backups.js.php'; |
||||
1303 | } elseif ($get['page'] === 'emails') { |
||||
1304 | include_once $SETTINGS['cpassman_dir'] . '/pages/emails.js.php'; |
||||
1305 | } elseif ($get['page'] === 'ldap') { |
||||
1306 | include_once $SETTINGS['cpassman_dir'] . '/pages/ldap.js.php'; |
||||
1307 | } elseif ($get['page'] === 'uploads') { |
||||
1308 | include_once $SETTINGS['cpassman_dir'] . '/pages/uploads.js.php'; |
||||
1309 | } elseif ($get['page'] === 'fields') { |
||||
1310 | include_once $SETTINGS['cpassman_dir'] . '/pages/fields.js.php'; |
||||
1311 | } elseif ($get['page'] === 'options') { |
||||
1312 | include_once $SETTINGS['cpassman_dir'] . '/pages/options.js.php'; |
||||
1313 | } elseif ($get['page'] === 'statistics') { |
||||
1314 | include_once $SETTINGS['cpassman_dir'] . '/pages/statistics.js.php'; |
||||
1315 | } elseif ($get['page'] === 'tasks') { |
||||
1316 | include_once $SETTINGS['cpassman_dir'] . '/pages/tasks.js.php'; |
||||
1317 | } |
||||
1318 | } elseif (isset($get['page']) === true && $get['page'] !== '') { |
||||
1319 | if ($get['page'] === 'items') { |
||||
1320 | include_once $SETTINGS['cpassman_dir'] . '/pages/items.js.php'; |
||||
1321 | } elseif ($get['page'] === 'import') { |
||||
1322 | include_once $SETTINGS['cpassman_dir'] . '/pages/import.js.php'; |
||||
1323 | } elseif ($get['page'] === 'export') { |
||||
1324 | include_once $SETTINGS['cpassman_dir'] . '/pages/export.js.php'; |
||||
1325 | } elseif ($get['page'] === 'offline') { |
||||
1326 | include_once $SETTINGS['cpassman_dir'] . '/pages/offline.js.php'; |
||||
1327 | } elseif ($get['page'] === 'search') { |
||||
1328 | include_once $SETTINGS['cpassman_dir'] . '/pages/search.js.php'; |
||||
1329 | } elseif ($get['page'] === 'profile') { |
||||
1330 | include_once $SETTINGS['cpassman_dir'] . '/pages/profile.js.php'; |
||||
1331 | } elseif ($get['page'] === 'favourites') { |
||||
1332 | include_once $SETTINGS['cpassman_dir'] . '/pages/favorites.js.php'; |
||||
1333 | } elseif ($get['page'] === 'folders') { |
||||
1334 | include_once $SETTINGS['cpassman_dir'] . '/pages/folders.js.php'; |
||||
1335 | } elseif ($get['page'] === 'users') { |
||||
1336 | include_once $SETTINGS['cpassman_dir'] . '/pages/users.js.php'; |
||||
1337 | } elseif ($get['page'] === 'roles') { |
||||
1338 | include_once $SETTINGS['cpassman_dir'] . '/pages/roles.js.php'; |
||||
1339 | } elseif ($get['page'] === 'utilities.deletion') { |
||||
1340 | include_once $SETTINGS['cpassman_dir'] . '/pages/utilities.deletion.js.php'; |
||||
1341 | } elseif ($get['page'] === 'utilities.logs') { |
||||
1342 | include_once $SETTINGS['cpassman_dir'] . '/pages/utilities.logs.js.php'; |
||||
1343 | } elseif ($get['page'] === 'utilities.database') { |
||||
1344 | include_once $SETTINGS['cpassman_dir'] . '/pages/utilities.database.js.php'; |
||||
1345 | } elseif ($get['page'] === 'utilities.renewal') { |
||||
1346 | include_once $SETTINGS['cpassman_dir'] . '/pages/utilities.renewal.js.php'; |
||||
1347 | } |
||||
1348 | } else { |
||||
1349 | include_once $SETTINGS['cpassman_dir'] . '/includes/core/login.js.php'; |
||||
1350 | } |
||||
1351 | } |
||||
1352 |
Let?s assume that you have a directory layout like this:
and let?s assume the following content of
Bar.php
:If both files
OtherDir/Foo.php
andSomeDir/Foo.php
are loaded in the same runtime, you will see a PHP error such as the following:PHP Fatal error: Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php
However, as
OtherDir/Foo.php
does not necessarily have to be loaded and the error is only triggered if it is loaded beforeOtherDir/Bar.php
, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias: