Passed
Branch remove-tp-config (101a80)
by Nils
11:52
created
Severity
1
<?php
2
3
declare(strict_types=1);
4
5
/**
6
 * Teampass - a collaborative passwords manager.
7
 * ---
8
 * This file is part of the TeamPass project.
9
 * 
10
 * TeamPass is free software: you can redistribute it and/or modify it
11
 * under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, version 3 of the License.
13
 * 
14
 * TeamPass is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
 * GNU General Public License for more details.
18
 * 
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
21
 * 
22
 * Certain components of this file may be under different licenses. For
23
 * details, see the `licenses` directory or individual file headers.
24
 * ---
25
 * @file      index.php
26
 * @author    Nils Laumaillé ([email protected])
27
 * @copyright 2009-2024 Teampass.net
28
 * @license   GPL-3.0
29
 * @see       https://www.teampass.net
30
 */
31
32
use voku\helper\AntiXSS;
33
use TeampassClasses\SessionManager\SessionManager;
34
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;
35
use TeampassClasses\Language\Language;
36
use TeampassClasses\ConfigManager\ConfigManager;
37
38
// Security Headers
39
header('X-XSS-Protection: 1; mode=block');
40
// deepcode ignore TooPermissiveXFrameOptions: Not the case as sameorigin is used
41
header('X-Frame-Options: SameOrigin');
42
43
// Cache Headers
44
header("Cache-Control: no-cache, no-store, must-revalidate");
45
header("Pragma: no-cache");
46
header("Expires: 0");
47
48
// **PREVENTING SESSION HIJACKING**
49
// Prevents javascript XSS attacks aimed to steal the session ID
50
//ini_set('session.cookie_httponly', 1);
51
// **PREVENTING SESSION FIXATION**
52
// Session ID cannot be passed through URLs
53
//ini_set('session.use_only_cookies', 1);
54
// Uses a secure connection (HTTPS) if possible
55
//ini_set('session.cookie_secure', 0);
56
//ini_set('session.cookie_samesite', 'Lax');
57
// Before we start processing, we should abort no install is present
58
if (file_exists(__DIR__.'/includes/config/settings.php') === false) {
59
    // This should never happen, but in case it does
60
    // this means if headers are sent, redirect will fallback to JS
61
    if (headers_sent()) {
62
        echo '<script language="javascript" type="text/javascript">document.location.replace("install/install.php");</script>';
63
    } else {
64
        header('Location: install/install.php');
65
    }
66
    // Now either way, we should stop processing further
67
    exit;
68
}
69
70
71
// initialise CSRFGuard library
72
require_once __DIR__.'/includes/libraries/csrfp/libs/csrf/csrfprotector.php';
73
csrfProtector::init();
74
75
// Load functions
76
require_once __DIR__. '/includes/config/include.php';
77
require_once __DIR__.'/sources/main.functions.php';
78
79
// init
80
loadClasses();
81
$session = SessionManager::getSession();
82
$session->set('key', SessionManager::getCookieValue('PHPSESSID'));
83
// PHPSESSID isn't sent on first query.
84
if ($session->get('key') == null) {
85
    header('Refresh: 0');
86
    exit;
87
}
88
$request = SymfonyRequest::createFromGlobals();
89
$configManager = new ConfigManager(__DIR__, $request->getRequestUri());
90
$SETTINGS = $configManager->getAllSettings();
91
$antiXss = new AntiXSS();
92
$session->set('encryptClientServer', (int) $SETTINGS['encryptClientServer'] ?? 1);
93
94
// Quick major version check -> upgrade needed?
95
if (isset($SETTINGS['teampass_version']) === true && version_compare(TP_VERSION, $SETTINGS['teampass_version']) > 0) {
96
    // Perform redirection
97
    if (headers_sent()) {
98
        echo '<script language="javascript" type="text/javascript">document.location.replace("install/install.php");</script>';
99
    } else {
100
        header('Location: install/upgrade.php');
101
    }
102
    // No other way, we should stop processing further
103
    exit;
104
}
105
106
107
$SETTINGS = $antiXss->xss_clean($SETTINGS);
108
109
// Load Core library
110
require_once $SETTINGS['cpassman_dir'] . '/sources/core.php';
111
// Prepare POST variables
112
$post_language = filter_input(INPUT_POST, 'language', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
113
$session_user_language = $session->get('user-language');
114
$session_user_admin = $session->get('user-admin');
115
$session_user_human_resources = (int) $session->get('user-can_manage_all_users');
116
$session_name = $session->get('user-name');
117
$session_lastname = $session->get('user-lastname');
118
$session_user_manager = $session->get('user-manager');
119
$session_initial_url = $session->get('user-initial_url');
120
$session_nb_users_online = $session->get('system-nb_users_online');
121
$session_auth_type = $session->get('user-auth_type');
122
123
$server = [];
124
$server['request_uri'] = (string) $request->getRequestUri();
125
$server['request_time'] = (int) $request->server->get('REQUEST_TIME');
126
127
$get = [];
128
$get['page'] = $request->query->get('page') === null ? '' : $antiXss->xss_clean($request->query->get('page'));
129
$get['otv'] = $request->query->get('otv') === null ? '' : $antiXss->xss_clean($request->query->get('otv'));
130
131
// Avoid blank page and session destroy if user go to index.php without ?page=
132
if (empty($get['page']) && !empty($session_name)) {
133
    if ($session_user_admin === 1) {
134
        $redirect_page = 'admin';
135
    } else {
136
        $redirect_page = 'items';
137
    }
138
139
    // Redirect user on default page.
140
    header('Location: index.php?page='.$redirect_page);
141
    exit();
142
}
143
144
/* DEFINE WHAT LANGUAGE TO USE */
145
if (null === $session->get('user-validite_pw') && $post_language === null && $session_user_language === null) {
146
    //get default language
147
    $dataLanguage = DB::queryFirstRow(
148
        'SELECT m.valeur AS valeur, l.flag AS flag
149
        FROM ' . prefixTable('misc') . ' AS m
150
        INNER JOIN ' . prefixTable('languages') . ' AS l ON (m.valeur = l.name)
151
        WHERE m.type=%s_type AND m.intitule=%s_intitule',
152
        [
153
            'type' => 'admin',
154
            'intitule' => 'default_language',
155
        ]
156
    );
157
    if (empty($dataLanguage['valeur'])) {
158
        $session->set('user-language', 'english');
159
        $session->set('user-language_flag', 'us.png');
160
        $session_user_language = 'english';
161
    } else {
162
        $session->set('user-language', $dataLanguage['valeur']);
163
        $session->set('user-language_flag', $dataLanguage['flag']);
164
        $session_user_language = $dataLanguage['valeur'];
165
    }
166
} elseif (isset($SETTINGS['default_language']) === true && $session_user_language === null) {
167
    $session->set('user-language', $SETTINGS['default_language']);
168
    $session_user_language = $SETTINGS['default_language'];
169
} elseif ($post_language !== null) {
170
    $session->set('user-language', $post_language);
171
    $session_user_language = $post_language;
172
} elseif ($session_user_language === null || empty($session_user_language) === true) {
173
    if ($post_language !== null) {
174
        $session->set('user-language', $post_language);
175
        $session_user_language = $post_language;
176
    } elseif ($session_user_language !== null) {
177
        $session->set('user-language', $SETTINGS['default_language']);
178
        $session_user_language = $SETTINGS['default_language'];
179
    }
180
}
181
$lang = new Language($session_user_language, __DIR__. '/includes/language/'); 
182
183
if (isset($SETTINGS['cpassman_dir']) === false || $SETTINGS['cpassman_dir'] === '') {
184
    $SETTINGS['cpassman_dir'] = __DIR__;
185
    $SETTINGS['cpassman_url'] = (string) $server['request_uri'];
186
}
187
188
// Get the URL
189
$cpassman_url = isset($SETTINGS['cpassman_url']) ? $SETTINGS['cpassman_url'] : '';
190
// URL validation
191
if (!filter_var($cpassman_url, FILTER_VALIDATE_URL)) {
192
    $cpassman_url = '';
193
}
194
// Sanitize the URL to prevent XSS
195
$cpassman_url = htmlspecialchars($cpassman_url, ENT_QUOTES, 'UTF-8');
196
197
// Some template adjust
198
if (array_key_exists($get['page'], $mngPages) === true) {
199
    $menuAdmin = true;
200
} else {
201
    $menuAdmin = false;
202
}
203
204
// Some template adjust
205
if (array_key_exists($get['page'], $utilitiesPages) === true) {
206
    $menuUtilities = true;
207
} else {
208
    $menuUtilities = false;
209
}
210
211
// Get the favicon
212
$favicon = isset($SETTINGS['favicon']) ? $SETTINGS['favicon'] : '';
213
// URL Validation
214
if (!filter_var($favicon, FILTER_VALIDATE_URL)) {
215
    $favicon = '';
216
}
217
// Sanitize the URL to prevent XSS
218
$favicon = htmlspecialchars($favicon, ENT_QUOTES, 'UTF-8');
219
220
// Define the date and time format
221
$date_format = isset($SETTINGS['date_format']) ? $SETTINGS['date_format'] : 'Y-m-d';
222
$time_format = isset($SETTINGS['time_format']) ? $SETTINGS['time_format'] : 'H:i:s';
223
224
// Force dark theme on page generation
225
$theme = $_COOKIE['teampass_theme'] ?? 'light';
226
$theme_body = $theme === 'dark' ? 'dark-mode' : '';
227
$theme_meta = $theme === 'dark' ? '#343a40' : '#fff';
228
$theme_navbar = $theme === 'dark' ? 'navbar-dark' : 'navbar-white navbar-light';
229
230
?>
231
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
232
233
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
234
235
<head>
236
    <meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
237
    <meta name="viewport" content="width=device-width, initial-scale=1" />
238
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
239
    <meta name="theme-color" content="<?php echo $theme_meta; ?>" />
240
    <title><?php echo $configManager->getSetting('teampass_title') ?? 'Teampass'; ?></title>
241
    <script type='text/javascript'>
242
        //<![CDATA[
243
        if (window.location.href.indexOf('page=') === -1 &&
244
            (window.location.href.indexOf('otv=') === -1 &&
245
                window.location.href.indexOf('action=') === -1)
246
        ) {
247
            if (window.location.href.indexOf('session_over=true') !== -1) {
248
                location.replace('./includes/core/logout.php');
249
            }
250
        }
251
        //]]>
252
    </script>
253
254
    <!-- IonIcons -->
255
    <link rel="stylesheet" href="includes/css/ionicons.min.css?v=<?php echo TP_VERSION; ?>">
256
    <!-- Theme style -->
257
    <link rel="stylesheet" href="plugins/adminlte/css/adminlte.min.css?v=<?php echo TP_VERSION; ?>">
258
    <link rel="stylesheet" href="plugins/pace-progress/themes/corner-indicator.css?v=<?php echo TP_VERSION; ?>" type="text/css" />
259
    <link rel="stylesheet" href="plugins/select2/css/select2.min.css?v=<?php echo TP_VERSION; ?>" type="text/css" />
260
    <!--<link rel="stylesheet" href="plugins/select2/css/select2-bootstrap.min.css?v=<?php echo TP_VERSION; ?>" type="text/css" />-->
261
    <link rel="stylesheet" href="plugins/select2/theme/select2-bootstrap4.min.css?v=<?php echo TP_VERSION; ?>" type="text/css" />
262
    <!-- Theme style -->
263
    <link rel="stylesheet" href="includes/css/teampass.css?v=<?php echo TP_VERSION; ?>">
264
    <!-- Google Font: Source Sans Pro -->
265
    <link rel="stylesheet" type="text/css" href="includes/fonts/fonts.css?v=<?php echo TP_VERSION; ?>">
266
    <!-- Altertify -->
267
    <link rel="stylesheet" href="plugins/alertifyjs/css/alertify.min.css?v=<?php echo TP_VERSION; ?>" />
268
    <link rel="stylesheet" href="plugins/alertifyjs/css/themes/bootstrap.min.css?v=<?php echo TP_VERSION; ?>" />
269
    <!-- Toastr -->
270
    <link rel="stylesheet" href="plugins/toastr/toastr.min.css?v=<?php echo TP_VERSION; ?>" />
271
    <!-- favicon -->
272
    <link rel="shortcut icon" type="image/png" href="<?php echo $favicon;?>"/>
273
    <!-- manifest -->
274
    <!-- <link rel="manifest" href="includes/manifest.json?v=<?php echo TP_VERSION; ?>"> -->
275
    <!-- Custom style -->
276
    <?php
277
    if (file_exists(__DIR__ . '/includes/css/custom.css') === true) {?>
278
        <link rel="stylesheet" href="includes/css/custom.css?v=<?php echo TP_VERSION; ?>">
279
    <?php
280
    } ?>
281
</head>
282
283
284
285
286
<?php
287
//error_log(print_r($session->all(), true));
288
// display an item in the context of OTV link
289
if ((null === $session->get('user-validite_pw') || empty($session->get('user-validite_pw')) === true || empty($session->get('user-id')) === true)
290
    && empty($get['otv']) === false)
291
{
292
    include './includes/core/otv.php';
293
    exit;
294
} elseif ($session->has('user-validite_pw') && $session->get('user-validite_pw') && null !== $session->get('user-validite_pw') && $session->get('user-validite_pw') === 1 && 
295
    empty($get['page']) === false && empty($session->get('user-id')) === false
296
) {
297
    ?>
298
    <body class="hold-transition sidebar-mini layout-navbar-fixed layout-fixed <?php echo $theme_body; ?>">
299
        <div class="wrapper">
300
301
            <!-- Navbar -->
302
            <nav class="main-header navbar navbar-expand <?php echo $theme_navbar ?>">
303
                <!-- User encryption still ongoing -->
304
                <div id="user_not_ready" class="alert alert-warning hidden pointer p-2 mt-2" style="position:absolute; left:200px;">
305
                    <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>
306
                </div>
307
308
                <!-- Left navbar links -->
309
                <ul class="navbar-nav">
310
                    <li class="nav-item">
311
                        <a class="nav-link" data-widget="pushmenu" href="#"><i class="fa-solid fa-bars"></i></a>
312
                    </li>
313
                </ul>
314
315
                <!-- Right navbar links -->
316
                <ul class="navbar-nav ml-auto">
317
                    <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;">
318
                        <i class="fa-solid fa-circle text-danger fa-stack-2x"></i>
319
                        <i class="fa-solid fa-bell fa-shake fa-stack-1x fa-inverse"></i>
320
                    </span>
321
                    <!-- Messages Dropdown Menu -->
322
                    <li class="nav-item dropdown">
323
                        <div class="dropdown show">
324
                            <a class="btn btn-primary dropdown-toggle" href="#" data-toggle="dropdown">
325
                                <?php
326
                                    echo $session_name . '&nbsp;' . $session_lastname; ?>
327
                            </a>
328
329
                            <div class="dropdown-menu dropdown-menu-right">
330
                                <a class="dropdown-item user-menu" href="#" data-name="increase_session">
331
                                    <i class="far fa-clock fa-fw mr-2"></i><?php echo $lang->get('index_add_one_hour'); ?></a>
332
                                <div class="dropdown-divider"></div>
333
                                <a class="dropdown-item user-menu" href="#" data-name="profile">
334
                                    <i class="fa-solid fa-user-circle fa-fw mr-2"></i><?php echo $lang->get('my_profile'); ?>
335
                                </a>
336
                                <?php
337
                                    if (empty($session_auth_type) === false && $session_auth_type !== 'ldap' && $session_auth_type !== 'oauth2') {
338
                                        ?>
339
                                    <a class="dropdown-item user-menu" href="#" data-name="password-change">
340
                                        <i class="fa-solid fa-lock fa-fw mr-2"></i><?php echo $lang->get('index_change_pw'); ?>
341
                                    </a>
342
                                <?php
343
                                    } elseif ($session_auth_type === 'ldap') {
344
                                        ?>
345
                                    <a class="dropdown-item user-menu" href="#" data-name="sync-new-ldap-password">
346
                                        <i class="fa-solid fa-key fa-fw mr-2"></i><?php echo $lang->get('sync_new_ldap_password'); ?>
347
                                    </a>
348
                                <?php
349
                                    } ?>
350
                                <a class="dropdown-item user-menu<?php echo (int) $session_user_admin === 1 ? ' hidden' : '';?>" href="#" data-name="generate-new_keys">
351
                                    <i class="fa-solid fa-spray-can-sparkles fa-fw mr-2"></i><?php echo $lang->get('generate_new_keys'); ?>
352
                                </a>
353
354
                                <!--
355
                                <div class="dropdown-divider"></div>
356
                                <a class="dropdown-item user-menu" href="#" data-name="generate-an-otp">
357
                                    <i class="fa-solid fa-qrcode fa-fw mr-2"></i><?php echo $lang->get('generate_an_otp'); ?>
358
                                </a>
359
                                -->
360
361
                                <div class="dropdown-divider"></div>
362
                                <a class="dropdown-item user-menu" href="#" data-name="logout">
363
                                    <i class="fa-solid fa-sign-out-alt fa-fw mr-2"></i><?php echo $lang->get('disconnect'); ?>
364
                                </a>
365
                            </div>
366
                        </div>
367
                    </li>
368
                    <li>
369
                        <span class="align-middle infotip ml-2 text-info" title="<?php echo $lang->get('index_expiration_in'); ?>" id="countdown"></span>
370
                    </li>
371
                    <li class="nav-item">
372
                        <a class="nav-link" data-widget="control-sidebar" data-slide="true" href="#" id="controlsidebar"><i class="fa-solid fa-th-large"></i></a>
373
                    </li>
374
                    <li id="switch-theme" class="nav-item pointer">
375
                        <i class="fa-solid fa-circle-half-stroke m-2 m-2"></i>
376
                    </li>
377
                </ul>
378
            </nav>
379
            <!-- /.navbar -->
380
381
            <!-- Main Sidebar Container -->
382
            <aside class="main-sidebar sidebar-dark-primary elevation-4">
383
                <!-- Brand Logo -->
384
                <a href="<?php echo $cpassman_url . '/index.php?page=' . ((int) $session_user_admin === 1 ? 'admin' : 'items'); ?>" class="brand-link">
385
                    <img src="includes/images/teampass-logo2-home.png" alt="Teampass Logo" class="brand-image">
386
                    <span class="brand-text font-weight-light"><?php echo TP_TOOL_NAME; ?></span>
387
                </a>
388
389
                <!-- Sidebar -->
390
                <div class="sidebar">
391
                    <!-- Sidebar Menu -->
392
                    <nav class="mt-2" style="margin-bottom:40px;">
393
                        <ul class="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu" data-accordion="false">
394
                            <?php
395
                                if ($session_user_admin === 0) {
396
                                    // ITEMS & SEARCH
397
                                    echo '
398
                    <li class="nav-item">
399
                        <a href="#" data-name="items" class="nav-link', $get['page'] === 'items' ? ' active' : '', '">
400
                        <i class="nav-icon fa-solid fa-key"></i>
401
                        <p>
402
                            ' . $lang->get('pw') . '
403
                        </p>
404
                        </a>
405
                    </li>';
406
                                }
407
408
    // IMPORT menu
409
    if (isset($SETTINGS['allow_import']) === true && (int) $SETTINGS['allow_import'] === 1&& $session_user_admin === 0) {
410
        echo '
411
                    <li class="nav-item">
412
                        <a href="#" data-name="import" class="nav-link', $get['page'] === 'import' ? ' active' : '', '">
413
                        <i class="nav-icon fa-solid fa-file-import"></i>
414
                        <p>
415
                            ' . $lang->get('import') . '
416
                        </p>
417
                        </a>
418
                    </li>';
419
    }
420
    // EXPORT menu
421
    if (
422
                                    isset($SETTINGS['allow_print']) === true && (int) $SETTINGS['allow_print'] === 1
423
                                    && isset($SETTINGS['roles_allowed_to_print_select']) === true
424
                                    && empty($SETTINGS['roles_allowed_to_print_select']) === false
425
                                    && count(array_intersect(
426
                                        explode(';', $session->get('user-roles')),
427
                                        explode(',', str_replace(['"', '[', ']'], '', $SETTINGS['roles_allowed_to_print_select']))
428
                                    )) > 0
429
                                    && (int) $session_user_admin === 0
430
                                ) {
431
        echo '
432
                    <li class="nav-item">
433
                        <a href="#" data-name="export" class="nav-link', $get['page'] === 'export' ? ' active' : '', '">
434
                        <i class="nav-icon fa-solid fa-file-export"></i>
435
                        <p>
436
                            ' . $lang->get('export') . '
437
                        </p>
438
                        </a>
439
                    </li>';
440
    }
441
442
    /*
443
    // OFFLINE MODE menu
444
    if (isset($SETTINGS['settings_offline_mode']) === true && (int) $SETTINGS['settings_offline_mode'] === 1) {
445
        echo '
446
                    <li class="nav-item">
447
                        <a href="#" data-name="offline" class="nav-link', $get['page'] === 'offline' ? ' active' : '' ,'">
448
                        <i class="nav-icon fa-solid fa-plug"></i>
449
                        <p>
450
                            '.$lang->get('offline').'
451
                        </p>
452
                        </a>
453
                    </li>';
454
    }
455
    */
456
457
    if ($session_user_admin === 0) {
458
        echo '
459
                    <li class="nav-item">
460
                        <a href="#" data-name="search" class="nav-link', $get['page'] === 'search' ? ' active' : '', '">
461
                        <i class="nav-icon fa-solid fa-search"></i>
462
                        <p>
463
                            ' . $lang->get('find') . '
464
                        </p>
465
                        </a>
466
                    </li>';
467
    }
468
469
    // Favourites menu
470
    if (
471
                                    isset($SETTINGS['enable_favourites']) === true && (int) $SETTINGS['enable_favourites'] === 1
472
                                    && (int) $session_user_admin === 0
473
                                ) {
474
        echo '
475
                    <li class="nav-item">
476
                        <a href="#" data-name="favourites" class="nav-link', $get['page'] === 'favourites' ? ' active' : '', '">
477
                        <i class="nav-icon fa-solid fa-star"></i>
478
                        <p>
479
                            ' . $lang->get('favorites') . '
480
                        </p>
481
                        </a>
482
                    </li>';
483
    }
484
    /*
485
        // KB menu
486
        if (isset($SETTINGS['enable_kb']) === true && $SETTINGS['enable_kb'] === '1'
487
        ) {
488
            echo '
489
                        <li class="nav-item">
490
                            <a href="#" data-name="kb" class="nav-link', $get['page'] === 'kb' ? ' active' : '' ,'">
491
                            <i class="nav-icon fa-solid fa-map-signs"></i>
492
                            <p>
493
    '.$lang->get('kb_menu').'
494
                            </p>
495
                            </a>
496
                        </li>';
497
        }
498
    */
499
    // SUGGESTION menu
500
    if (
501
                                    isset($SETTINGS['enable_suggestion']) && (int) $SETTINGS['enable_suggestion'] === 1
502
                                    && $session_user_manager === 1
503
                                ) {
504
        echo '
505
                    <li class="nav-item">
506
                        <a href="#" data-name="suggestion" class="nav-link', $get['page'] === 'suggestion' ? ' active' : '', '">
507
                        <i class="nav-icon fa-solid fa-lightbulb"></i>
508
                        <p>
509
                            ' . $lang->get('suggestion_menu') . '
510
                        </p>
511
                        </a>
512
                    </li>';
513
    }
514
515
    // Admin menu
516
    if ($session_user_admin === 1) {
517
        echo '
518
                    <li class="nav-item">
519
                        <a href="#" data-name="admin" class="nav-link', $get['page'] === 'admin' ? ' active' : '', '">
520
                        <i class="nav-icon fa-solid fa-info"></i>
521
                        <p>
522
                            ' . $lang->get('admin_main') . '
523
                        </p>
524
                        </a>
525
                    </li>
526
                    <li class="nav-item has-treeview', $menuAdmin === true ? ' menu-open' : '', '">
527
                        <a href="#" class="nav-link">
528
                            <i class="nav-icon fa-solid fa-wrench"></i>
529
                            <p>
530
                                ' . $lang->get('admin_settings') . '
531
                                <i class="fa-solid fa-angle-left right"></i>
532
                            </p>
533
                        </a>
534
                        <ul class="nav-item nav-treeview">
535
                            <li class="nav-item">
536
                                <a href="#" data-name="options" class="nav-link', $get['page'] === 'options' ? ' active' : '', '">
537
                                    <i class="fa-solid fa-check-double nav-icon"></i>
538
                                    <p>' . $lang->get('options') . '</p>
539
                                </a>
540
                            </li>
541
                            <li class="nav-item">
542
                                <a href="#" data-name="2fa" class="nav-link', $get['page'] === '2fa' ? ' active' : '', '">
543
                                    <i class="fa-solid fa-qrcode nav-icon"></i>
544
                                    <p>' . $lang->get('mfa_short') . '</p>
545
                                </a>
546
                            </li>
547
                            <li class="nav-item">
548
                                <a href="#" data-name="api" class="nav-link', $get['page'] === 'api' ? ' active' : '', '">
549
                                    <i class="fa-solid fa-cubes nav-icon"></i>
550
                                    <p>' . $lang->get('api') . '</p>
551
                                </a>
552
                            </li>
553
                            <li class="nav-item">
554
                                <a href="#" data-name="backups" class="nav-link', $get['page'] === 'backups' ? ' active' : '', '">
555
                                    <i class="fa-solid fa-database nav-icon"></i>
556
                                    <p>' . $lang->get('backups') . '</p>
557
                                </a>
558
                            </li>
559
                            <li class="nav-item">
560
                                <a href="#" data-name="emails" class="nav-link', $get['page'] === 'emails' ? ' active' : '', '">
561
                                    <i class="fa-solid fa-envelope nav-icon"></i>
562
                                    <p>' . $lang->get('emails') . '</p>
563
                                </a>
564
                            </li>
565
                            <li class="nav-item">
566
                                <a href="#" data-name="fields" class="nav-link', $get['page'] === 'fields' ? ' active' : '', '">
567
                                    <i class="fa-solid fa-keyboard nav-icon"></i>
568
                                    <p>' . $lang->get('fields') . '</p>
569
                                </a>
570
                            </li>
571
                            <li class="nav-item">
572
                                <a href="#" data-name="ldap" class="nav-link', $get['page'] === 'ldap' ? ' active' : '', '">
573
                                    <i class="fa-solid fa-id-card nav-icon"></i>
574
                                    <p>' . $lang->get('ldap') . '</p>
575
                                </a>
576
                            </li>
577
578
                            <li class="nav-item">
579
                                <a href="#" data-name="oauth" class="nav-link', $get['page'] === 'oauth' ? ' active' : '', '">
580
                                    <i class="fa-solid fa-plug nav-icon"></i>
581
                                    <p>' . $lang->get('oauth') . '</p>
582
                                </a>
583
                            </li>
584
                            
585
                            <li class="nav-item">
586
                                <a href="#" data-name="uploads" class="nav-link', $get['page'] === 'uploads' ? ' active' : '', '">
587
                                    <i class="fa-solid fa-file-upload nav-icon"></i>
588
                                    <p>' . $lang->get('uploads') . '</p>
589
                                </a>
590
                            </li>
591
                            <li class="nav-item">
592
                                <a href="#" data-name="statistics" class="nav-link', $get['page'] === 'statistics' ? ' active' : '', '">
593
                                    <i class="fa-solid fa-chart-bar nav-icon"></i>
594
                                    <p>' . $lang->get('statistics') . '</p>
595
                                </a>
596
                            </li>
597
                        </ul>
598
                    </li>';
599
600
        if (isset($SETTINGS['enable_tasks_manager']) && (int) $SETTINGS['enable_tasks_manager'] === 1) {
601
            echo '
602
                    <li class="nav-item">
603
                        <a href="#" data-name="tasks" class="nav-link', $get['page'] === 'tasks' ? ' active' : '', '">
604
                        <i class="fa-solid fa-tasks nav-icon"></i>
605
                        <p>' . $lang->get('tasks') . '</p>
606
                        </a>
607
                    </li>';
608
        }
609
        
610
        if (WIP === true) {
611
            echo '
612
                    <li class="nav-item">
613
                        <a href="#" data-name="tools" class="nav-link', $get['page'] === 'tools' ? ' active' : '', '">
614
                        <i class="nav-icon fa-solid fa-screwdriver-wrench"></i>
615
                        <p>
616
                            ' . $lang->get('tools') . '
617
                        </p>
618
                        </a>
619
                    </li>';
620
        }
621
    }
622
623
    if (
624
        $session_user_admin === 1
625
        || $session_user_manager === 1
626
        || $session_user_human_resources === 1
627
    ) {
628
        echo '
629
                    <li class="nav-item">
630
                        <a href="#" data-name="folders" class="nav-link', $get['page'] === 'folders' ? ' active' : '', '">
631
                        <i class="nav-icon fa-solid fa-folder-open"></i>
632
                        <p>
633
                            ' . $lang->get('folders') . '
634
                        </p>
635
                        </a>
636
                    </li>
637
                    <li class="nav-item">
638
                        <a href="#" data-name="roles" class="nav-link', $get['page'] === 'roles' ? ' active' : '', '">
639
                        <i class="nav-icon fa-solid fa-graduation-cap"></i>
640
                        <p>
641
                            ' . $lang->get('roles') . '
642
                        </p>
643
                        </a>
644
                    </li>
645
                    <li class="nav-item">
646
                        <a href="#" data-name="users" class="nav-link', $get['page'] === 'users' ? ' active' : '', '">
647
                        <i class="nav-icon fa-solid fa-users"></i>
648
                        <p>
649
                            ' . $lang->get('users') . '
650
                        </p>
651
                        </a>
652
                    </li>
653
                    <li class="nav-item has-treeview', $menuUtilities === true ? ' menu-open' : '', '">
654
                        <a href="#" class="nav-link">
655
                        <i class="nav-icon fa-solid fa-cubes"></i>
656
                        <p>' . $lang->get('admin_views') . '<i class="fa-solid fa-angle-left right"></i></p>
657
                        </a>
658
                        <ul class="nav nav-treeview">
659
                            <li class="nav-item">
660
                                <a href="#" data-name="utilities.renewal" class="nav-link', $get['page'] === 'utilities.renewal' ? ' active' : '', '">
661
                                <i class="far fa-calendar-alt nav-icon"></i>
662
                                <p>' . $lang->get('renewal') . '</p>
663
                                </a>
664
                            </li>
665
                            <li class="nav-item">
666
                                <a href="#" data-name="utilities.deletion" class="nav-link', $get['page'] === 'utilities.deletion' ? ' active' : '', '">
667
                                <i class="fa-solid fa-trash-alt nav-icon"></i>
668
                                <p>' . $lang->get('deletion') . '</p>
669
                                </a>
670
                            </li>
671
                            <li class="nav-item">
672
                                <a href="#" data-name="utilities.logs" class="nav-link', $get['page'] === 'utilities.logs' ? ' active' : '', '">
673
                                <i class="fa-solid fa-history nav-icon"></i>
674
                                <p>' . $lang->get('logs') . '</p>
675
                                </a>
676
                            </li>
677
                            <li class="nav-item">
678
                                <a href="#" data-name="utilities.database" class="nav-link', $get['page'] === 'utilities.database' ? ' active' : '', '">
679
                                <i class="fa-solid fa-database nav-icon"></i>
680
                                <p>' . $lang->get('database') . '</p>
681
                                </a>
682
                            </li>
683
                        </ul>
684
                    </li>';
685
    } ?>
686
                        </ul>
687
                    </nav>
688
                    <!-- /.sidebar-menu -->
689
                <div class="menu-footer">
690
                    <div class="" id="sidebar-footer">
691
                        <i class="fa-solid fa-clock-o mr-2 infotip text-info pointer" title="<?php echo $lang->get('server_time') . ' ' .
0 ignored issues
show
Security Cross-Site Scripting introduced by
$lang->get('server_time'...server['request_time']) can contain request data and is used in html attribute with double-quotes context(s) leading to a potential security vulnerability.

1 path for user data to reach this point

  1. ParameterBag::get() returns request data
    in vendor/symfony/http-foundation/ParameterBag.php on line 82
  2. $this->server->get('UNENCODED_URL') is assigned to $requestUri
    in vendor/symfony/http-foundation/Request.php on line 1757
  3. $requestUri is returned
    in vendor/symfony/http-foundation/Request.php on line 1792
  4. AssignCoalesceNode is returned
    in vendor/symfony/http-foundation/Request.php on line 997
  5. (string)$server['request_uri'] is assigned to $SETTINGS
    in index.php on line 185
  6. IssetNode ? $SETTINGS['date_format'] : 'Y-m-d' is assigned to $date_format
    in index.php on line 221
  7. Data is passed through date()
    in index.php on line 692

Preventing Cross-Site-Scripting Attacks

Cross-Site-Scripting allows an attacker to inject malicious code into your website - in particular Javascript code, and have that code executed with the privileges of a visiting user. This can be used to obtain data, or perform actions on behalf of that visiting user.

In order to prevent this, make sure to escape all user-provided data:

// for HTML
$sanitized = htmlentities($tainted, ENT_QUOTES);

// for URLs
$sanitized = urlencode($tainted);

General Strategies to prevent injection

In general, it is advisable to prevent any user-data to reach this point. This can be done by white-listing certain values:

if ( ! in_array($value, array('this-is-allowed', 'and-this-too'), true)) {
    throw new \InvalidArgumentException('This input is not allowed.');
}

For numeric data, we recommend to explicitly cast the data:

$sanitized = (integer) $tainted;
Loading history...
692
                            date($date_format, (int) $server['request_time']) . ' - ' .
693
                            date($time_format, (int) $server['request_time']); ?>"></i>
694
                        <i class="fa-solid fa-users mr-2 infotip text-info pointer" title="<?php echo $session_nb_users_online . ' ' . $lang->get('users_online'); ?>"></i>
695
                        <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>
696
                        <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>
697
                        <?php if ($session_user_admin === 1) : ?><i class="fa-solid fa-bug infotip pointer text-info" title="<?php echo $lang->get('bugs_page'); ?>" onclick="generateBugReport()"></i><?php endif; ?>
698
                    </div>
699
                    <?php
700
    ?>
701
                </div>
702
                </div>
703
                <!-- /.sidebar -->
704
            </aside>
705
706
            <!-- Content Wrapper. Contains page content -->
707
            <div class="content-wrapper">
708
709
                <!-- DEFECT REPORT -->
710
                <div class="card card-danger m-2 hidden" id="dialog-bug-report">
711
                    <div class="card-header">
712
                        <h3 class="card-title">
713
                            <i class="fa-solid fa-bug mr-2"></i>
714
                            <?php echo $lang->get('defect_report'); ?>
715
                        </h3>
716
                    </div>
717
                    <div class="card-body">
718
                        <div class="row">
719
                            <div class="col-sm-12 col-md-12">
720
                                <div class="mb-2 alert alert-info">
721
                                    <i class="icon fa-solid fa-info mr-2"></i>
722
                                    <?php echo $lang->get('bug_report_to_github'); ?>
723
                                </div>
724
                                <textarea class="form-control" style="min-height:300px;" id="dialog-bug-report-text" placeholder="<?php echo $lang->get('please_wait_while_loading'); ?>"></textarea>
725
                            </div>
726
                        </div>
727
                    </div>
728
                    <div class="card-footer">
729
                        <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>
730
                        <button class="btn btn-primary" id="dialog-bug-report-github-button"><?php echo $lang->get('open_bug_report_in_github'); ?></button>
731
                        <button class="btn btn-default float-right close-element"><?php echo $lang->get('close'); ?></button>
732
                    </div>
733
                </div>
734
                <!-- /.DEFECT REPORT -->
735
736
737
                <!-- USER CHANGE AUTH PASSWORD -->
738
                <div class="card card-warning m-3 hidden" id="dialog-user-change-password">
739
                    <div class="card-header">
740
                        <h3 class="card-title">
741
                            <i class="fa-solid fa-bullhorn mr-2"></i>
742
                            <?php echo $lang->get('your_attention_is_required'); ?>
743
                        </h3>
744
                    </div>
745
                    <div class="card-body">
746
                        <div class="row">
747
                            <div class="col-sm-12 col-md-12">
748
                                <div class="mb-5 alert alert-info hidden" id="dialog-user-change-password-info">
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="profile-current-password">
755
                                </div>
756
                                <div class="input-group mb-3">
757
                                    <div class="input-group-prepend">
758
                                        <span class="input-group-text"><?php echo $lang->get('index_new_pw'); ?></span>
759
                                    </div>
760
                                    <input type="password" class="form-control" id="profile-password">
761
                                    <div class="input-group-append" style="margin: 0px;">
762
                                        <span class="input-group-text" id="profile-password-strength"></span>
763
                                        <input type="hidden" id="profile-password-complex" />
764
                                    </div>
765
                                </div>
766
                                <div class="input-group mb-3">
767
                                    <div class="input-group-prepend">
768
                                        <span class="input-group-text"><?php echo $lang->get('index_change_pw_confirmation'); ?></span>
769
                                    </div>
770
                                    <input type="password" class="form-control" id="profile-password-confirm">
771
                                </div>
772
                                <div class="form-control mt-3 font-weight-light grey" id="dialog-user-change-password-progress">
773
                                    <?php echo $lang->get('provide_current_psk_and_click_launch'); ?>
774
                                </div>
775
                            </div>
776
                        </div>
777
                    </div>
778
                    <div class="card-footer">
779
                        <button class="btn btn-primary" id="dialog-user-change-password-do"><?php echo $lang->get('launch'); ?></button>
780
                        <button class="btn btn-default float-right" id="dialog-user-change-password-close"><?php echo $lang->get('close'); ?></button>
781
                    </div>
782
                </div>
783
                <!-- /.USER CHANGE AUTH PASSWORD -->
784
785
786
                <!-- LDAP USER HAS CHANGED AUTH PASSWORD -->
787
                <div class="card card-warning m-3 hidden" id="dialog-ldap-user-change-password">
788
                    <div class="card-header">
789
                        <h3 class="card-title">
790
                            <i class="fa-solid fa-bullhorn mr-2"></i>
791
                            <?php echo $lang->get('your_attention_is_required'); ?>
792
                        </h3>
793
                    </div>
794
                    <div class="card-body">
795
                        <div class="row">
796
                            <div class="col-sm-12 col-md-12">
797
                                <div class="mb-5 alert alert-info hidden" id="dialog-ldap-user-change-password-info">
798
                                </div>
799
                                <div class="input-group mb-3">
800
                                    <div class="input-group-prepend">
801
                                        <span class="input-group-text"><?php echo $lang->get('provide_your_previous_password'); ?></span>
802
                                    </div>
803
                                    <input type="password" class="form-control" id="dialog-ldap-user-change-password-old">
804
                                </div>
805
                                <div class="input-group mb-3"  id="new-password-field">
806
                                    <div class="input-group-prepend">
807
                                        <span class="input-group-text"><?php echo $lang->get('provide_your_current_password'); ?></span>
808
                                    </div>
809
                                    <input type="password" class="form-control" id="dialog-ldap-user-change-password-current">
810
                                </div>
811
                                <div class="form-control mt-3 font-weight-light grey" id="dialog-ldap-user-change-password-progress">
812
                                    <?php echo $lang->get('provide_current_psk_and_click_launch'); ?>
813
                                </div>
814
                            </div>
815
                        </div>
816
                    </div>
817
                    <div class="card-footer">
818
                        <button class="btn btn-primary" id="dialog-ldap-user-change-password-do"><?php echo $lang->get('launch'); ?></button>
819
                        <button class="btn btn-default float-right" id="dialog-ldap-user-change-password-close"><?php echo $lang->get('close'); ?></button>
820
                    </div>
821
                </div>
822
                <!-- /.LDAP USER HAS CHANGED AUTH PASSWORD -->
823
824
825
                <!-- ADMIN ASKS FOR USER PASSWORD CHANGE -->
826
                <div class="card card-warning m-3 hidden" id="dialog-admin-change-user-password">
827
                    <div class="card-header">
828
                        <h3 class="card-title">
829
                            <i class="fa-solid fa-bullhorn mr-2"></i>
830
                            <?php echo $lang->get('your_attention_is_required'); ?>
831
                        </h3>
832
                    </div>
833
                    <div class="card-body">
834
                        <div class="row">
835
                            <div class="col-sm-12 col-md-12">
836
                                <div class="mb-2 alert alert-info" id="dialog-admin-change-user-password-info">
837
                                </div>
838
                                <div class="form-control mt-3 font-weight-light grey" id="dialog-admin-change-user-password-progress">
839
                                    <?php echo $lang->get('provide_current_psk_and_click_launch'); ?>
840
                                </div>
841
                                <div class="mt-3">                                    
842
                                    <label>
843
                                        <span class="mr-2 pointer fw-normal"><i class="fa-solid fa-eye mr-2 text-orange"></i><?php echo $lang->get('show_user_password');?></span>
844
                                        <input type="checkbox" id="dialog-admin-change-user-password-do-show-password" class="pointer">
845
                                    </label>
846
                                </div>
847
                            </div>
848
                        </div>
849
                        <input type="hidden" id="admin_change_user_password_target_user" value="">
850
                        <input type="hidden" id="admin_change_user_encryption_code_target_user" value="">
851
                    </div>
852
                    <div class="card-footer">
853
                        <button class="btn btn-primary mr-3" id="dialog-admin-change-user-password-do"><?php echo $lang->get('launch'); ?></button>
854
                        <button class="btn btn-default float-right" id="dialog-admin-change-user-password-close"><?php echo $lang->get('close'); ?></button>
855
                    </div>
856
                </div>
857
                <!-- /.ADMIN ASKS FOR USER PASSWORD CHANGE -->
858
859
860
                <!-- USER PROVIDES TEMPORARY CODE -->
861
                <div class="card card-warning m-3 hidden" id="dialog-user-temporary-code">
862
                    <div class="card-header">
863
                        <h3 class="card-title">
864
                            <i class="fa-solid fa-bullhorn mr-2"></i>
865
                            <?php echo $lang->get('your_attention_is_required'); ?>
866
                        </h3>
867
                    </div>
868
                    <div class="card-body">
869
                        <div class="row">
870
                            <div class="col-sm-12 col-md-12">
871
                                <div class="mb-5 alert alert-info" id="dialog-user-temporary-code-info">
872
                                </div>
873
                                <div class="input-group mb-3">
874
                                    <div class="input-group-prepend">
875
                                        <span class="input-group-text"><?php echo $lang->get('provide_your_current_password'); ?></span>
876
                                    </div>
877
                                    <input type="password" class="form-control" id="dialog-user-temporary-code-current-password">
878
                                </div>
879
                                <div class="input-group mb-3">
880
                                    <div class="input-group-prepend">
881
                                        <span class="input-group-text"><?php echo $lang->get('temporary_encryption_code'); ?></span>
882
                                    </div>
883
                                    <input type="password" class="form-control" id="dialog-user-temporary-code-value">
884
                                </div>
885
                                <div class="form-control mt-3 font-weight-light grey" id="dialog-user-temporary-code-progress">
886
                                    <?php echo $lang->get('provide_current_psk_and_click_launch'); ?>
887
                                </div>
888
                            </div>
889
                        </div>
890
                    </div>
891
                    <div class="card-footer">
892
                        <button class="btn btn-primary" id="dialog-user-temporary-code-do"><?php echo $lang->get('launch'); ?></button>
893
                        <button class="btn btn-default float-right" id="dialog-user-temporary-code-close"><?php echo $lang->get('close'); ?></button>
894
                    </div>
895
                </div>
896
                <!-- /.USER PROVIDES TEMPORARY CODE -->
897
898
899
                <!-- ENCRYPTION KEYS GENERATION -->
900
                <div class="card card-warning m-3 mt-3 hidden" id="dialog-encryption-keys">
901
                    <div class="card-header">
902
                        <h3 class="card-title">
903
                            <i class="fa-solid fa-bullhorn mr-2"></i>
904
                            <?php echo $lang->get('your_attention_is_required'); ?>
905
                        </h3>
906
                    </div>
907
                    <div class="card-body">
908
                        <div class="row">
909
                            <div class="col-sm-12 col-md-12">
910
                                <div class="mb-2 alert alert-info" id="warning-text-reencryption">
911
                                    <i class="icon fa-solid fa-info mr-2"></i>
912
                                    <?php echo $lang->get('objects_encryption_explanation'); ?>
913
                                </div>
914
                            </div>
915
                        </div>
916
                        <input type="hidden" id="sharekeys_reencryption_target_user" value="">
917
                    </div>
918
                    <div class="card-footer">
919
                        <button class="btn btn-primary" id="button_do_sharekeys_reencryption"><?php echo $lang->get('launch'); ?></button>
920
                        <button class="btn btn-default float-right" id="button_close_sharekeys_reencryption"><?php echo $lang->get('close'); ?></button>
921
                    </div>
922
                </div>
923
                <!-- /.ENCRYPTION KEYS GENERATION -->
924
925
926
                <!-- ENCRYPTION KEYS GENERATION FOR LDAP NEW USER -->
927
                <div class="card card-warning m-3 mt-3 hidden" id="dialog-ldap-user-build-keys-database">
928
                    <div class="card-header">
929
                        <h3 class="card-title">
930
                            <i class="fa-solid fa-bullhorn mr-2"></i>
931
                            <?php echo $lang->get('your_attention_is_required'); ?>
932
                        </h3>
933
                    </div>
934
                    <div class="card-body">
935
                        <div class="row">
936
                            <div class="col-sm-12 col-md-12">
937
                                <div class="mb-2 alert alert-info" id="warning-text-reencryption">
938
                                    <i class="icon fa-solid fa-info mr-2"></i>
939
                                    <?php echo $lang->get('help_for_launching_items_encryption'); ?>
940
                                </div>
941
942
                                <div class="input-group mb-3">
943
                                    <div class="input-group-prepend">
944
                                        <span class="input-group-text"><?php echo $lang->get('temporary_encryption_code'); ?></span>
945
                                    </div>
946
                                    <input type="password" class="form-control" id="dialog-ldap-user-build-keys-database-code">
947
                                </div>
948
                                
949
                                <div class="form-control mt-3 font-weight-light grey" id="dialog-ldap-user-build-keys-database-progress">
950
                                    <?php echo $lang->get('provide_current_psk_and_click_launch'); ?>
951
                                </div>
952
                            </div>
953
                        </div>
954
                        <input type="hidden" id="sharekeys_reencryption_target_user" value="">
955
                    </div>
956
                    <div class="card-footer">
957
                        <button class="btn btn-primary" id="dialog-ldap-user-build-keys-database-do"><?php echo $lang->get('launch'); ?></button>
958
                        <button class="btn btn-default float-right" id="dialog-ldap-user-build-keys-database-close"><?php echo $lang->get('close'); ?></button>
959
                    </div>
960
                </div>
961
                <!-- /.ENCRYPTION KEYS GENERATION -->
962
963
                <!-- ENCRYPTION PERSONAL ITEMS GENERATION -->
964
                <div class="card card-warning m-3 hidden" id="dialog-encryption-personal-items-after-upgrade">
965
                    <div class="card-header">
966
                        <h3 class="card-title">
967
                            <i class="fa-solid fa-bullhorn mr-2"></i>
968
                            <?php echo $lang->get('your_attention_is_required'); ?>
969
                        </h3>
970
                    </div>
971
                    <div class="card-body">
972
                        <div class="row">
973
                            <div class="col-sm-12 col-md-12">
974
                                <div class="mb-2 alert alert-info" id="warning-text-changing-password">
975
                                    <i class="icon fa-solid fa-info mr-2"></i>
976
                                    <?php echo $lang->get('objects_encryption_explanation'); ?>
977
                                </div>
978
                                <div class="input-group mb-3">
979
                                    <div class="input-group-prepend">
980
                                        <span class="input-group-text"><?php echo $lang->get('personal_salt_key'); ?></span>
981
                                    </div>
982
                                    <input type="password" class="form-control" id="user-current-defuse-psk">
983
                                </div>
984
                                <div class="form-control mt-3 font-weight-light grey" id="user-current-defuse-psk-progress">
985
                                    <?php echo $lang->get('provide_current_psk_and_click_launch'); ?>
986
                                </div>
987
                            </div>
988
                        </div>
989
                    </div>
990
                    <div class="card-footer">
991
                        <button class="btn btn-primary" id="button_do_personal_items_reencryption"><?php echo $lang->get('launch'); ?></button>
992
                        <button class="btn btn-default float-right" id="button_close_personal_items_reencryption"><?php echo $lang->get('close'); ?></button>
993
                    </div>
994
                </div>
995
                <!-- /.ENCRYPTION PERSONAL ITEMS GENERATION -->
996
                
997
998
                <?php
999
                    if ($get['page'] === 'items') {
1000
                        // SHow page with Items
1001
                        if ((int) $session_user_admin !== 1) {
1002
                            include $SETTINGS['cpassman_dir'] . '/pages/items.php';
1003
                        } elseif ((int) $session_user_admin === 1) {
1004
                            include $SETTINGS['cpassman_dir'] . '/pages/admin.php';
1005
                        } else {
1006
                            $session->set('system-error_code', ERR_NOT_ALLOWED);
1007
                            //not allowed page
1008
                            include $SETTINGS['cpassman_dir'] . '/error.php';
1009
                        }
1010
                    } elseif (in_array($get['page'], array_keys($mngPages)) === true) {
1011
                        // Define if user is allowed to see management pages
1012
                        if ($session_user_admin === 1) {
1013
                            // deepcode ignore FileInclusion: $get['page'] is secured through usage of array_keys test bellow
1014
                            include $SETTINGS['cpassman_dir'] . '/pages/' . basename($mngPages[$get['page']]);
1015
                        } elseif ($session_user_manager === 1 || $session_user_human_resources === 1) {
1016
                            if ($get['page'] === 'manage_main' || $get['page'] === 'manage_settings'
1017
                            ) {
1018
                                $session->set('system-error_code', ERR_NOT_ALLOWED);
1019
                                //not allowed page
1020
                                include $SETTINGS['cpassman_dir'] . '/error.php';
1021
                            }
1022
                        } else {
1023
                            $session->set('system-error_code', ERR_NOT_ALLOWED);
1024
                            //not allowed page
1025
                            include $SETTINGS['cpassman_dir'] . '/error.php';
1026
                        }
1027
                    } elseif (empty($get['page']) === false && file_exists($SETTINGS['cpassman_dir'] . '/pages/' . $get['page'] . '.php') === true) {
1028
                        // deepcode ignore FileInclusion: $get['page'] is tested against file_exists just below
1029
                        include $SETTINGS['cpassman_dir'] . '/pages/' . basename($get['page'] . '.php');
1030
                    } else {
1031
                        $session->set('system-array_roles', ERR_NOT_EXIST);
1032
                        //page doesn't exist
1033
                        include $SETTINGS['cpassman_dir'].'/error.php';
1034
                    }
1035
1036
    // Case where login attempts have been identified
1037
    if ((int) $session->get('user-unsuccessfull_login_attempts_nb') !== 0
1038
        && (bool) $session->get('user-unsuccessfull_login_attempts_shown') === false
1039
    ) {
1040
        ?>
1041
                    <input type="hidden" id="user-login-attempts" value="1">
1042
                <?php
1043
    } ?>
1044
1045
            </div>
1046
            <!-- /.content-wrapper -->
1047
1048
            <!-- Control Sidebar -->
1049
            <aside class="control-sidebar control-sidebar-dark">
1050
                <!-- Control sidebar content goes here -->
1051
                <div class="p-3">
1052
                    <h5><?php echo $lang->get('last_items_title'); ?></h5>
1053
                    <div>
1054
                        <ul class="list-unstyled" id="index-last-pwds">
1055
                        </ul>
1056
                    </div>
1057
                </div>
1058
            </aside>
1059
            <!-- /.control-sidebar -->
1060
1061
            <!-- Main Footer -->
1062
            <footer class="main-footer">
1063
                <!-- To the right -->
1064
                <div class="float-right d-none d-sm-inline">
1065
                    <?php echo $lang->get('version_alone'); ?>&nbsp;<?php echo TP_VERSION; ?>
1066
                </div>
1067
                <!-- Default to the left -->
1068
                <strong>Copyright &copy; <?php echo TP_COPYRIGHT; ?> <a href="<?php echo TEAMPASS_URL; ?>"><?php echo TP_TOOL_NAME; ?></a>.</strong> All rights reserved.
1069
            </footer>
1070
        </div>
1071
        <!-- ./wrapper -->
1072
1073
    <?php
1074
        /* MAIN PAGE */
1075
1076
        echo '
1077
<input type="hidden" id="temps_restant" value="', $session->get('user-session_duration') ?? '', '" />';
1078
// display an item in the context of OTV link
1079
} elseif ((null === $session->get('user-validite_pw')|| empty($session->get('user-validite_pw')) === true || empty($session->get('user-id')) === true)
1080
    && empty($get['otv']) === false
1081
) {
1082
    // case where one-shot viewer
1083
    if (empty($request->query->get('code')) === false && empty($request->query->get('stamp')) === false
1084
    ) {
1085
        include './includes/core/otv.php';
1086
    } else {
1087
        $session->set('system-error_code', ERR_VALID_SESSION);
1088
        $session->set(
1089
            'user-initial_url',
1090
            filter_var(
1091
                substr(
1092
                    $server['request_uri'],
1093
                    strpos($server['request_uri'], 'index.php?')
1094
                ),
1095
                FILTER_SANITIZE_URL
1096
            )
1097
        );
1098
        include $SETTINGS['cpassman_dir'] . '/error.php';
1099
    }
1100
} elseif (//(empty($session->get('user-id')) === false && $session->get('user-id') !== null) ||
1101
        empty($session->get('user-id')) === true
1102
        || null === $session->get('user-validite_pw')
1103
        || $session->get('user-validite_pw') === 0
1104
    ) {
1105
    // case where user not logged and can't access a direct link
1106
    if (empty($get['page']) === false) {
1107
        $session->set(
1108
            'user-initial_url',
1109
            filter_var(
1110
                substr($server['request_uri'], strpos($server['request_uri'], 'index.php?')),
1111
                FILTER_SANITIZE_URL
1112
            )
1113
        );
1114
        // REDIRECTION PAGE ERREUR
1115
        echo '
1116
            <script language="javascript" type="text/javascript">
1117
            /*
1118
                sessionStorage.clear();
1119
                store.set(
1120
                    "teampassSettings", {},
1121
                    function(teampassSettings) {}
1122
                );
1123
            */
1124
                window.location.href = "./index.php";
1125
            </script>';
1126
        exit;
1127
    }
1128
    
1129
    // LOGIN form  
1130
    include $SETTINGS['cpassman_dir'] . '/includes/core/login.php';
1131
    
1132
} else {
1133
    // Clear session
1134
    $session->invalidate();
1135
}
1136
    ?>
1137
1138
    <!-- Modal -->
1139
    <div class="modal fade" id="warningModal" tabindex="-1" role="dialog" aria-labelledby="Caution" aria-hidden="true">
1140
        <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
1141
            <div class="modal-content">
1142
                <div class="modal-header">
1143
                    <h5 class="modal-title" id="warningModalTitle"></h5>
1144
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close" id="warningModalCrossClose">
1145
                        <span aria-hidden="true">&times;</span>
1146
                    </button>
1147
                </div>
1148
                <div class="modal-body" id="warningModalBody">
1149
                </div>
1150
                <div class="modal-footer">
1151
                    <button type="button" class="btn btn-secondary" data-dismiss="modal" id="warningModalButtonClose"></button>
1152
                    <button type="button" class="btn btn-primary" id="warningModalButtonAction"></button>
1153
                </div>
1154
            </div>
1155
        </div>
1156
    </div>
1157
1158
1159
1160
    <!-- REQUIRED SCRIPTS -->
1161
1162
    <!-- Font Awesome Icons -->
1163
    <link href="plugins/fontawesome-free-6/css/fontawesome.min.css?v=<?php echo TP_VERSION; ?>" rel="stylesheet">
1164
    <link href="plugins/fontawesome-free-6/css/solid.min.css?v=<?php echo TP_VERSION; ?>" rel="stylesheet">
1165
    <link href="plugins/fontawesome-free-6/css/regular.min.css?v=<?php echo TP_VERSION; ?>" rel="stylesheet">
1166
    <link href="plugins/fontawesome-free-6/css/brands.min.css?v=<?php echo TP_VERSION; ?>" rel="stylesheet">
1167
    <link href="plugins/fontawesome-free-6/css/v5-font-face.min.css?v=<?php echo TP_VERSION; ?>" rel="stylesheet" /> 
1168
    <!-- jQuery -->
1169
    <script src="plugins/jquery/jquery.min.js?v=<?php echo TP_VERSION; ?>"></script>
1170
    <script src="plugins/jquery/jquery.cookie.js?v=<?php echo TP_VERSION; ?>" type="text/javascript"></script>
1171
    <!-- jQuery UI -->
1172
    <script src="plugins/jqueryUI/jquery-ui.min.js?v=<?php echo TP_VERSION; ?>"></script>
1173
    <link rel="stylesheet" href="plugins/jqueryUI/jquery-ui.min.css?v=<?php echo TP_VERSION; ?>">
1174
    <!-- Popper -->
1175
    <script src="plugins/popper/umd/popper.min.js?v=<?php echo TP_VERSION; ?>"></script>
1176
    <!-- Bootstrap -->
1177
    <script src="plugins/bootstrap/js/bootstrap.bundle.min.js?v=<?php echo TP_VERSION; ?>"></script>
1178
    <!-- AdminLTE -->
1179
    <script src="plugins/adminlte/js/adminlte.min.js?v=<?php echo TP_VERSION; ?>"></script>
1180
    <!-- Altertify -->
1181
    <!--<script type="text/javascript" src="plugins/alertifyjs/alertify.min.js"></script>-->
1182
    <!-- Toastr -->
1183
    <script type="text/javascript" src="plugins/toastr/toastr.min.js?v=<?php echo TP_VERSION; ?>"></script>
1184
    <!-- STORE.JS -->
1185
    <script type="text/javascript" src="plugins/store.js/dist/store.everything.min.js?v=<?php echo TP_VERSION; ?>"></script>
1186
    <!-- cryptojs-aesphp -->
1187
    <script type="text/javascript" src="includes/libraries/cryptojs/crypto-js.js?v=<?php echo TP_VERSION; ?>"></script>
1188
    <script type="text/javascript" src="includes/libraries/cryptojs/encryption.js?v=<?php echo TP_VERSION; ?>"></script>
1189
    <!-- pace -->
1190
    <script type="text/javascript" data-pace-options='{ "ajax": true, "eventLag": false }' src="plugins/pace-progress/pace.min.js?v=<?php echo TP_VERSION; ?>"></script>
1191
    <!-- clipboardjs -->
1192
    <script type="text/javascript" src="plugins/clipboard/clipboard.min.js?v=<?php echo TP_VERSION; ?>"></script>
1193
    <!-- select2 -->
1194
    <script type="text/javascript" src="plugins/select2/js/select2.full.min.js?v=<?php echo TP_VERSION; ?>"></script>
1195
    <!-- simplePassMeter -->
1196
    <link rel="stylesheet" href="plugins/simplePassMeter/simplePassMeter.css?v=<?php echo TP_VERSION; ?>" type="text/css" />
1197
    <script type="text/javascript" src="plugins/simplePassMeter/simplePassMeter.js?v=<?php echo TP_VERSION; ?>"></script>
1198
    <!-- platform -->
1199
    <script type="text/javascript" src="plugins/platform/platform.js?v=<?php echo TP_VERSION; ?>"></script>
1200
    <!-- radiobuttons -->
1201
    <link rel="stylesheet" href="plugins/radioforbuttons/bootstrap-buttons.min.css?v=<?php echo TP_VERSION; ?>" type="text/css" />
1202
    <script type="text/javascript" src="plugins/radioforbuttons/jquery.radiosforbuttons.min.js?v=<?php echo TP_VERSION; ?>"></script>
1203
    <!-- ICHECK -->
1204
    <!--<link rel="stylesheet" href="./plugins/icheck-material/icheck-material.min.css">-->
1205
    <link rel="stylesheet" href="./plugins/icheck/skins/all.css?v=<?php echo TP_VERSION; ?>">
1206
    <script type="text/javascript" src="./plugins/icheck/icheck.min.js?v=<?php echo TP_VERSION; ?>"></script>
1207
    <!-- bootstrap-add-clear -->
1208
    <script type="text/javascript" src="plugins/bootstrap-add-clear/bootstrap-add-clear.min.js?v=<?php echo TP_VERSION; ?>"></script>
1209
    <!-- DOMPurify -->
1210
    <script type="text/javascript" src="plugins/DOMPurify/purify.min.js?v=<?php echo TP_VERSION; ?>"></script>
1211
1212
    <?php
1213
    $get['page'] = $request->query->filter('page', null, FILTER_SANITIZE_SPECIAL_CHARS);
1214
    if ($menuAdmin === true) {
1215
        ?>
1216
        <link rel="stylesheet" href="./plugins/toggles/css/toggles.css?v=<?php echo TP_VERSION; ?>" />
1217
        <link rel="stylesheet" href="./plugins/toggles/css/toggles-modern.css?v=<?php echo TP_VERSION; ?>" />
1218
        <script src="./plugins/toggles/toggles.min.js?v=<?php echo TP_VERSION; ?>" type="text/javascript"></script>
1219
        <!-- InputMask -->
1220
        <script src="./plugins/inputmask/jquery.inputmask.min.js?v=<?php echo TP_VERSION; ?>"></script>
1221
        <!-- Sortable -->
1222
        <!--<script src="./plugins/sortable/jquery.sortable.js"></script>-->
1223
        <!-- PLUPLOAD -->
1224
        <script type="text/javascript" src="plugins/plupload/js/plupload.full.min.js?v=<?php echo TP_VERSION; ?>"></script>
1225
        <!-- DataTables -->
1226
        <link rel="stylesheet" src="./plugins/datatables/css/jquery.dataTables.min.css?v=<?php echo TP_VERSION; ?>">
1227
        <link rel="stylesheet" src="./plugins/datatables/css/dataTables.bootstrap4.min.css?v=<?php echo TP_VERSION; ?>">
1228
        <script type="text/javascript" src="./plugins/datatables/js/jquery.dataTables.min.js?v=<?php echo TP_VERSION; ?>"></script>
1229
        <script type="text/javascript" src="./plugins/datatables/js/dataTables.bootstrap4.min.js?v=<?php echo TP_VERSION; ?>"></script>
1230
        <link rel="stylesheet" src="./plugins/datatables/extensions/Responsive-2.2.2/css/responsive.bootstrap4.min.css?v=<?php echo TP_VERSION; ?>">
1231
        <script type="text/javascript" src="./plugins/datatables/extensions/Responsive-2.2.2/js/dataTables.responsive.min.js?v=<?php echo TP_VERSION; ?>"></script>
1232
        <script type="text/javascript" src="./plugins/datatables/extensions/Responsive-2.2.2/js/responsive.bootstrap4.min.js?v=<?php echo TP_VERSION; ?>"></script>
1233
        <script type="text/javascript" src="./plugins/datatables/plugins/select.js?v=<?php echo TP_VERSION; ?>"></script>
1234
        <link rel="stylesheet" src="./plugins/datatables/extensions/Scroller-1.5.0/css/scroller.bootstrap4.min.css?v=<?php echo TP_VERSION; ?>">
1235
        <script type="text/javascript" src="./plugins/datatables/extensions/Scroller-1.5.0/js/dataTables.scroller.min.js?v=<?php echo TP_VERSION; ?>"></script>
1236
    <?php
1237
    } elseif (isset($get['page']) === true) {
1238
        if (in_array($get['page'], ['items', 'import']) === true) {
1239
            ?>
1240
            <link rel="stylesheet" href="./plugins/jstree/themes/default/style.min.css?v=<?php echo TP_VERSION; ?>" />
1241
            <link rel="stylesheet" href="./plugins/jstree/themes/default-dark/style.min.css?v=<?php echo TP_VERSION; ?>" />
1242
            <script src="./plugins/jstree/jstree.min.js?v=<?php echo TP_VERSION; ?>" type="text/javascript"></script>
1243
            <!-- countdownTimer -->
1244
            <script src="./plugins/jquery.countdown360/jquery.countdown360.js?v=<?php echo TP_VERSION; ?>"></script>
1245
            <!-- SUMMERNOTE -->
1246
            <link rel="stylesheet" href="./plugins/summernote/summernote-bs4.css?v=<?php echo TP_VERSION; ?>">
1247
            <script src="./plugins/summernote/summernote-bs4.min.js?v=<?php echo TP_VERSION; ?>"></script>
1248
            <!-- date-picker -->
1249
            <link rel="stylesheet" href="./plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css?v=<?php echo TP_VERSION; ?>">
1250
            <script src="./plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js?v=<?php echo TP_VERSION; ?>"></script>
1251
            <!-- time-picker -->
1252
            <link rel="stylesheet" href="./plugins/timepicker/bootstrap-timepicker.min.css?v=<?php echo TP_VERSION; ?>">
1253
            <script src="./plugins/timepicker/bootstrap-timepicker.min.js?v=<?php echo TP_VERSION; ?>"></script>
1254
            <!-- PLUPLOAD -->
1255
            <script type="text/javascript" src="plugins/plupload/js/plupload.full.min.js?v=<?php echo TP_VERSION; ?>"></script>
1256
            <!-- VALIDATE -->
1257
            <script type="text/javascript" src="plugins/jquery-validation/jquery.validate.js?v=<?php echo TP_VERSION; ?>"></script>
1258
            <!-- PWSTRENGHT -->
1259
            <script type="text/javascript" src="plugins/zxcvbn/zxcvbn.js?v=<?php echo TP_VERSION; ?>"></script>
1260
            <script type="text/javascript" src="plugins/jquery.pwstrength/pwstrength-bootstrap.min.js?v=<?php echo TP_VERSION; ?>"></script>
1261
            <!-- TOGGLE -->
1262
            <link rel="stylesheet" href="./plugins/toggles/css/toggles.css?v=<?php echo TP_VERSION; ?>" />
1263
            <link rel="stylesheet" href="./plugins/toggles/css/toggles-modern.css?v=<?php echo TP_VERSION; ?>" />
1264
            <script src="./plugins/toggles/toggles.min.js?v=<?php echo TP_VERSION; ?>" type="text/javascript"></script>
1265
        <?php
1266
        } elseif (in_array($get['page'], ['search', 'folders', 'users', 'roles', 'utilities.deletion', 'utilities.logs', 'utilities.database', 'utilities.renewal', 'tasks']) === true) {
1267
            ?>
1268
            <!-- DataTables -->
1269
            <link rel="stylesheet" src="./plugins/datatables/css/jquery.dataTables.min.css?v=<?php echo TP_VERSION; ?>">
1270
            <link rel="stylesheet" src="./plugins/datatables/css/dataTables.bootstrap4.min.css?v=<?php echo TP_VERSION; ?>">
1271
            <script type="text/javascript" src="./plugins/datatables/js/jquery.dataTables.min.js?v=<?php echo TP_VERSION; ?>"></script>
1272
            <script type="text/javascript" src="./plugins/datatables/js/dataTables.bootstrap4.min.js?v=<?php echo TP_VERSION; ?>"></script>
1273
            <link rel="stylesheet" src="./plugins/datatables/extensions/Responsive-2.2.2/css/responsive.bootstrap4.min.css?v=<?php echo TP_VERSION; ?>">
1274
            <script type="text/javascript" src="./plugins/datatables/extensions/Responsive-2.2.2/js/dataTables.responsive.min.js?v=<?php echo TP_VERSION; ?>"></script>
1275
            <script type="text/javascript" src="./plugins/datatables/extensions/Responsive-2.2.2/js/responsive.bootstrap4.min.js?v=<?php echo TP_VERSION; ?>"></script>
1276
            <script type="text/javascript" src="./plugins/datatables/plugins/select.js?v=<?php echo TP_VERSION; ?>"></script>
1277
            <link rel="stylesheet" src="./plugins/datatables/extensions/Scroller-1.5.0/css/scroller.bootstrap4.min.css?v=<?php echo TP_VERSION; ?>">
1278
            <script type="text/javascript" src="./plugins/datatables/extensions/Scroller-1.5.0/js/dataTables.scroller.min.js?v=<?php echo TP_VERSION; ?>"></script>
1279
            <!-- dater picker -->
1280
            <link rel="stylesheet" href="./plugins/bootstrap-datepicker/css/bootstrap-datepicker3.min.css?v=<?php echo TP_VERSION; ?>">
1281
            <script src="./plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js?v=<?php echo TP_VERSION; ?>"></script>
1282
            <!-- daterange picker -->
1283
            <link rel="stylesheet" href="./plugins/daterangepicker/daterangepicker.css?v=<?php echo TP_VERSION; ?>">
1284
            <script src="./plugins/moment/moment.min.js?v=<?php echo TP_VERSION; ?>"></script>
1285
            <script src="./plugins/daterangepicker/daterangepicker.js?v=<?php echo TP_VERSION; ?>"></script>
1286
            <!-- SlimScroll -->
1287
            <script src="./plugins/slimScroll/jquery.slimscroll.min.js?v=<?php echo TP_VERSION; ?>"></script>
1288
            <!-- FastClick -->
1289
            <script src="./plugins/fastclick/fastclick.min.js?v=<?php echo TP_VERSION; ?>"></script>
1290
        <?php
1291
        } elseif ($get['page'] === 'profile') {
1292
            ?>
1293
            <!-- FILESAVER -->
1294
            <script type="text/javascript" src="plugins/downloadjs/download.js?v=<?php echo TP_VERSION; ?>"></script>
1295
            <!-- PLUPLOAD -->
1296
            <script type="text/javascript" src="plugins/plupload/js/plupload.full.min.js?v=<?php echo TP_VERSION; ?>"></script>
1297
        <?php
1298
        } elseif ($get['page'] === 'export') {
1299
            ?>
1300
            <!-- FILESAVER -->
1301
            <script type="text/javascript" src="plugins/downloadjs/download.js?v=<?php echo TP_VERSION; ?>"></script>
1302
            <!-- PWSTRENGHT -->
1303
            <script type="text/javascript" src="plugins/zxcvbn/zxcvbn.js?v=<?php echo TP_VERSION; ?>"></script>
1304
            <script type="text/javascript" src="plugins/jquery.pwstrength/pwstrength-bootstrap.min.js?v=<?php echo TP_VERSION; ?>"></script>
1305
        <?php
1306
        }
1307
    }
1308
    ?>
1309
    <!-- functions -->
1310
    <script type="text/javascript" src="includes/js/functions.js?v=<?php echo TP_VERSION; ?>"></script>
1311
    <script type="text/javascript" src="includes/js/CreateRandomString.js?v=<?php echo TP_VERSION; ?>"></script>
1312
    <input type="hidden" id="encryptClientServer" value="<?php echo $SETTINGS['encryptClientServer'] ?? 1; ?>" />
1313
1314
    </body>
1315
1316
</html>
1317
1318
<script type="text/javascript">
1319
    //override defaults
1320
    /*alertify.defaults.transition = "slide";
1321
    alertify.defaults.theme.ok = "btn btn-primary";
1322
    alertify.defaults.theme.cancel = "btn btn-danger";
1323
    alertify.defaults.theme.input = "form-control";*/
1324
1325
    toastr.options = {
1326
        "closeButton": false,
1327
        "debug": false,
1328
        "newestOnTop": false,
1329
        "progressBar": false,
1330
        "positionClass": "toast-bottom-right",
1331
        "preventDuplicates": true,
1332
        "onClick": "close",
1333
        "showDuration": "300",
1334
        "hideDuration": "1000",
1335
        "timeOut": "0",
1336
        "extendedTimeOut": "0",
1337
        "showEasing": "swing",
1338
        "hideEasing": "linear",
1339
        "showMethod": "fadeIn",
1340
        "hideMethod": "fadeOut"
1341
    }
1342
</script>
1343
1344
1345
<?php
1346
//$get = [];
1347
//$get['page'] = $request->query->get('page') === null ? '' : $request->query->get('page');
1348
1349
// Load links, css and javascripts
1350
if (isset($SETTINGS['cpassman_dir']) === true) {
1351
    include_once $SETTINGS['cpassman_dir'] . '/includes/core/load.js.php';
1352
    if ($menuAdmin === true) {
1353
        include_once $SETTINGS['cpassman_dir'] . '/pages/admin.js.php';
1354
        if ($get['page'] === '2fa') {
1355
            include_once $SETTINGS['cpassman_dir'] . '/pages/2fa.js.php';
1356
        } elseif ($get['page'] === 'api') {
1357
            include_once $SETTINGS['cpassman_dir'] . '/pages/api.js.php';
1358
        } elseif ($get['page'] === 'backups') {
1359
            include_once $SETTINGS['cpassman_dir'] . '/pages/backups.js.php';
1360
        } elseif ($get['page'] === 'emails') {
1361
            include_once $SETTINGS['cpassman_dir'] . '/pages/emails.js.php';
1362
        } elseif ($get['page'] === 'ldap') {
1363
            include_once $SETTINGS['cpassman_dir'] . '/pages/ldap.js.php';
1364
        } elseif ($get['page'] === 'uploads') {
1365
            include_once $SETTINGS['cpassman_dir'] . '/pages/uploads.js.php';
1366
        } elseif ($get['page'] === 'fields') {
1367
            include_once $SETTINGS['cpassman_dir'] . '/pages/fields.js.php';
1368
        } elseif ($get['page'] === 'options') {
1369
            include_once $SETTINGS['cpassman_dir'] . '/pages/options.js.php';
1370
        } elseif ($get['page'] === 'statistics') {
1371
            include_once $SETTINGS['cpassman_dir'] . '/pages/statistics.js.php';
1372
        } elseif ($get['page'] === 'tasks') {
1373
            include_once $SETTINGS['cpassman_dir'] . '/pages/tasks.js.php';
1374
        } elseif ($get['page'] === 'oauth' && WIP === true) {
1375
            include_once $SETTINGS['cpassman_dir'] . '/pages/oauth.js.php';        
1376
        } elseif ($get['page'] === 'tools') {
1377
            include_once $SETTINGS['cpassman_dir'] . '/pages/tools.js.php';
1378
        }
1379
    } elseif (isset($get['page']) === true && $get['page'] !== '') {
1380
        if ($get['page'] === 'items') {
1381
            include_once $SETTINGS['cpassman_dir'] . '/pages/items.js.php';
1382
        } elseif ($get['page'] === 'import') {
1383
            include_once $SETTINGS['cpassman_dir'] . '/pages/import.js.php';
1384
        } elseif ($get['page'] === 'export') {
1385
            include_once $SETTINGS['cpassman_dir'] . '/pages/export.js.php';
1386
        } elseif ($get['page'] === 'offline') {
1387
            include_once $SETTINGS['cpassman_dir'] . '/pages/offline.js.php';
1388
        } elseif ($get['page'] === 'search') {
1389
            include_once $SETTINGS['cpassman_dir'] . '/pages/search.js.php';
1390
        } elseif ($get['page'] === 'profile') {
1391
            include_once $SETTINGS['cpassman_dir'] . '/pages/profile.js.php';
1392
        } elseif ($get['page'] === 'favourites') {
1393
            include_once $SETTINGS['cpassman_dir'] . '/pages/favorites.js.php';
1394
        } elseif ($get['page'] === 'folders') {
1395
            include_once $SETTINGS['cpassman_dir'] . '/pages/folders.js.php';
1396
        } elseif ($get['page'] === 'users') {
1397
            include_once $SETTINGS['cpassman_dir'] . '/pages/users.js.php';
1398
        } elseif ($get['page'] === 'roles') {
1399
            include_once $SETTINGS['cpassman_dir'] . '/pages/roles.js.php';
1400
        } elseif ($get['page'] === 'utilities.deletion') {
1401
            include_once $SETTINGS['cpassman_dir'] . '/pages/utilities.deletion.js.php';
1402
        } elseif ($get['page'] === 'utilities.logs') {
1403
            include_once $SETTINGS['cpassman_dir'] . '/pages/utilities.logs.js.php';
1404
        } elseif ($get['page'] === 'utilities.database') {
1405
            include_once $SETTINGS['cpassman_dir'] . '/pages/utilities.database.js.php';
1406
        } elseif ($get['page'] === 'utilities.renewal') {
1407
            include_once $SETTINGS['cpassman_dir'] . '/pages/utilities.renewal.js.php';
1408
        }
1409
    } else {
1410
        include_once $SETTINGS['cpassman_dir'] . '/includes/core/login.js.php';
1411
    }
1412
}
1413