nilsteampassnet /
TeamPass
| 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 Symfony\Component\HttpFoundation\Request; |
||||
|
0 ignored issues
–
show
|
|||||
| 28 | use TeampassClasses\SessionManager\SessionManager; |
||||
| 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
Loading history...
|
|||||
| 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 (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:
. |-- OtherDir | |-- Bar.php | `-- Foo.php `-- SomeDir `-- Foo.phpand let?s assume the following content of
Bar.php:If both files
OtherDir/Foo.phpandSomeDir/Foo.phpare 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.phpHowever, as
OtherDir/Foo.phpdoes 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: