Content Security Policy (CSP) Improvements.

This commit is contained in:
2026-06-20 22:52:21 +02:00
parent e96d6b9a70
commit 229d2b4a15
35 changed files with 167 additions and 354 deletions

View File

@@ -26,11 +26,11 @@ if (!$API->checkPermissions('admin-devices', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'] = true;
$jsScriptLoadData['slugify'] = true;
$jsScriptLoadData['/src/js/sentri/slugify.js'] = true;
$jsScriptLoadData['datepicker'] = true;
$jsScriptLoadData['multiple_select'] = true;
$jsScriptLoadData['validateJson'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/multiple_select.js'] = true;
$jsScriptLoadData['/src/js/sentri/validateJson.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -27,9 +27,9 @@ if (!$API->checkPermissions('admin-devices', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'][] = true;
$jsScriptLoadData['datepicker'] = true;
$jsScriptLoadData['multiple_select'] = true;
$jsScriptLoadData['validateJson'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/multiple_select.js'] = true;
$jsScriptLoadData['/src/js/sentri/validateJson.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -23,10 +23,10 @@ if (!$API->checkPermissions('admin-devices', 'RO', true)) {
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['multiFilterSelect'] = true;
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['datatables'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/multiFilterSelect.js'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/plugin/datatables/datatables.min.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(false, '<i class="fas fa-fax"></i> ' . __('devices'));

View File

@@ -102,10 +102,10 @@ function render_template_controls($template_uuid, $device_uuid, $default_templat
}
# JS Scripts to load for this page
$jsScriptLoadData['delete_confirmation'][] = true;
$jsScriptLoadData['load_dropzone'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/sentri/load_dropzone.js'] = true;
$jsScriptLoadData['form'][] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -25,8 +25,8 @@ if (!$API->checkPermissions('admin-access-control-permissions', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'] = true;
$jsScriptLoadData['slugify'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/slugify.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -27,7 +27,7 @@ if (!$API->checkPermissions('admin-platforms', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -24,8 +24,8 @@ if (!$API->checkPermissions('admin-vendors', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'] = true;
$jsScriptLoadData['slugify'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/slugify.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -27,7 +27,7 @@ if (!$API->checkPermissions('admin-vendors', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -30,10 +30,10 @@ if (!$API_servers->checkPermissions('customer-companies', 'RO', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['datepicker'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['datatables'] = true;
$jsScriptLoadData['multiFilterSelectServers'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/plugin/datatables/datatables.min.js'] = true;
$jsScriptLoadData['/src/js/sentri/multiFilterSelectServers.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -25,11 +25,11 @@ if (!$API->checkPermissions('customer-companies', 'RO', true)) {
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['datatables'] = true;
$jsScriptLoadData['multiFilterSelect'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/plugin/datatables/datatables.min.js'] = true;
$jsScriptLoadData['/src/js/sentri/multiFilterSelect.js'] = true;
$jsScriptLoadData['datepicker'] = true;
$jsScriptLoadData['activateCompany'] = true;
$jsScriptLoadData['/src/js/sentri/activateCompany.js'] = true;
# PageClasses Setup

View File

@@ -26,10 +26,11 @@ if (!$API->checkPermissions('office-stompjes', 'RO', true)) {
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['stompjes'] = true;
$jsScriptLoadData['datatables'] = true;
$jsScriptLoadData['multiFilterSelect'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/plugin/chart.js/chart.min.js'] = true;
$jsScriptLoadData['/src/js/sentri/stompjes.js'] = true;
$jsScriptLoadData['/src/js/plugin/datatables/datatables.min.js'] = true;
$jsScriptLoadData['/src/js/sentri/multiFilterSelect.js'] = true;
$jsScriptLoadData['datepicker'] = true;
# PageClasses Setup

View File

@@ -14,11 +14,11 @@ require_once "{$_SERVER['DOCUMENT_ROOT']}/bin/php/Classes/formBuilder.php";
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['Generatepassword'] = true;
$jsScriptLoadData['passwordShowHide'] = true;
$jsScriptLoadData['passwordRegen'] = true;
$jsScriptLoadData['enableButtonOnImageUpload'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/Generatepassword.js'] = true;
$jsScriptLoadData['/src/js/sentri/passwordShowHide.js'] = true;
$jsScriptLoadData['/src/js/sentri/passwordRegen.js'] = true;
$jsScriptLoadData['/src/js/sentri/enableButtonOnImageUpload.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -18,10 +18,10 @@ require_once "{$_SERVER['DOCUMENT_ROOT']}/api/classes/API_apitoken.php";
# JS Scripts to load for this page
$jsScriptLoadData['enableButtonOnImageUpload'] = true;
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['CopyTargetData'] = true;
$jsScriptLoadData['updateToggle'] = true;
$jsScriptLoadData['/src/js/sentri/enableButtonOnImageUpload.js'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/sentri/CopyTargetData.js'] = true;
$jsScriptLoadData['/src/js/sentri/updateToggle.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(false, '<i class="fa-solid fa-address-card"></i> ' . $_SESSION['user']['user_full_name'] . ' ' . strtolower(__('user_profile')));
@@ -207,19 +207,19 @@ if ($user_data) { ?>
<h4><?php echo __('user_management') ?></h4>
</div>
<div class="card-body">
<div id="mfa-enabled-row" class="row" style="display: <?php echo(($_SESSION['user']['user_two_factor_enabled'] == 1) ? '' : 'none') ?>">
<div id="mfa-enabled-row" class="row <?= ($_SESSION['user']['user_two_factor_enabled'] ? '' : 'd-none') ?>">
<div class="col-auto">
<a href="#" class="btn btn-danger delete-btn" data-item-uuid="<?php echo $user_uuid ?>" data-api-url="/api/v1/user/mfa/" data-delete-action='{"mfa-enabled-row":"hide", "mfa-disabled-row":"show"}' data-item-name='user_uuid'>
<i class="fa-solid fa-lock"></i> <?php echo __('reset_mfa') ?>
<a href="#" class="btn btn-danger delete-btn" data-item-uuid="<?= $user_uuid ?>" data-api-url="/api/v1/user/mfa/" data-item-name="user_uuid" data-delete-action='{"mfa-enabled-row":"hide", "mfa-disabled-row":"show"}'>
<i class="fa-solid fa-lock"></i> <?= __('reset_mfa') ?>
</a>
</div>
</div>
<div id="mfa-disabled-row" class="row" style="display: <?php echo(($_SESSION['user']['user_two_factor_enabled'] == 1) ? 'none' : '') ?>">
<div id="mfa-disabled-row" class="row <?= ($_SESSION['user']['user_two_factor_enabled'] ? 'd-none' : '') ?>">
<div class="col-auto">
<a class="btn btn-primary" href="/login/mfaSetup.php">
<i class="fa-solid fa-lock"></i> <?php echo __('set_mfa') ?>
</a>
<button class="btn btn-danger delete-btn" disabled>
<i class="fa-solid fa-lock"></i> <?= __('reset_mfa') ?>
</button>
</div>
</div>
@@ -299,9 +299,9 @@ if ($user_data) { ?>
<tbody>
<?php foreach ($apitokens as $token_data) { ?>
<tr>
<td class="text-nowrap" style="max-width: 100%;">
<div class="d-flex align-items-center gap-2" style="max-width: 100%;">
<div class="text-truncate" style="max-width: 200px;" id="<?php echo $token_data['api_token_uuid'] ?>" data-copy-data="<?php echo $token_data['api_token_uuid']; ?>">
<td class="text-nowrap w-100">
<div class="d-flex align-items-center gap-2 w-100">
<div class="text-truncate" id="<?php echo $token_data['api_token_uuid'] ?>" data-copy-data="<?php echo $token_data['api_token_uuid']; ?>">
<?php echo $token_data['api_token_uuid']; ?>
</div>
<button type="button" class="btn btn-sm btn-outline-secondary" data-copy-target="<?php echo $token_data['api_token_uuid'] ?>" title="Copy ID">

View File

@@ -24,11 +24,11 @@ if (!$API->checkPermissions('admin-access-admins', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'] = true;
$jsScriptLoadData['Generatepassword'] = true;
$jsScriptLoadData['passwordGenOnLoad'] = true;
$jsScriptLoadData['passwordShowHide'] = true;
$jsScriptLoadData['passwordRegen'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/Generatepassword.js'] = true;
$jsScriptLoadData['/src/js/sentri/passwordGenOnLoad.js'] = true;
$jsScriptLoadData['/src/js/sentri/passwordShowHide.js'] = true;
$jsScriptLoadData['/src/js/sentri/passwordRegen.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -25,7 +25,7 @@ if (!$API->checkPermissions('admin-access-admins', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -23,13 +23,13 @@ if (!$API->checkPermissions('admin-access-admins', 'RO', true)) {
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['Generatepassword'] = true;
$jsScriptLoadData['passwordShowHide'] = true;
$jsScriptLoadData['passwordRegen'] = true;
$jsScriptLoadData['enableButtonOnImageUpload'] = true;
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['updateToggle'] = true;
$jsScriptLoadData['/src/js/sentri/Generatepassword.js'] = true;
$jsScriptLoadData['/src/js/sentri/passwordShowHide.js'] = true;
$jsScriptLoadData['/src/js/sentri/passwordRegen.js'] = true;
$jsScriptLoadData['/src/js/sentri/enableButtonOnImageUpload.js'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
$jsScriptLoadData['/src/js/sentri/updateToggle.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -25,8 +25,8 @@ if (!$API->isSuperuser()) {
# JS Scripts to load for this page
$jsScriptLoadData['form'][] = true;
$jsScriptLoadData['slugify'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/slugify.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -28,7 +28,7 @@ if (!$API->isSuperuser()) {
# JS Scripts to load for this page
$jsScriptLoadData['form'][] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -24,10 +24,10 @@ if (!$API->checkPermissions('admin-access-control-permissions', 'RO', true)) {
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['datatables'] = true;
$jsScriptLoadData['updatePermissions'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/plugin/datatables/datatables.min.js'] = true;
$jsScriptLoadData['/src/js/sentri/updatePermissions.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -25,8 +25,8 @@ if (!$API->checkPermissions('admin-access-control-user-groups', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'][] = true;
$jsScriptLoadData['slugify'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/slugify.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -27,8 +27,8 @@ if (!$API->checkPermissions('admin-access-control-user-groups', 'RW', true)) {
# JS Scripts to load for this page
$jsScriptLoadData['form'] = true;
$jsScriptLoadData['slugify'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/slugify.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -22,8 +22,8 @@ if (!$API->checkPermissions('admin-access-control-user-groups', 'RO', true)) {
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['updatePermissions'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
$jsScriptLoadData['/src/js/sentri/updatePermissions.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -17,10 +17,10 @@ $API = new API();
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['activeTabOnRefresh'] = true;
$jsScriptLoadData['multiFilterSelect'] = true;
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['datatables'] = true;
$jsScriptLoadData['/src/js/sentri/activeTabOnRefresh.js'] = true;
$jsScriptLoadData['/src/js/sentri/multiFilterSelect.js'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/plugin/datatables/datatables.min.js'] = true;
# PageClasses Setup

View File

@@ -3,7 +3,7 @@ if (!defined('APP_INIT')) {
exit;
}
$jsScriptLoadData['activeTabOnRefresh'] = true;
$jsScriptLoadData['/src/js/sentri/activeTabOnRefresh.js'] = true;
?>
<div class="card-body activeTabOnRefresh">

View File

@@ -18,9 +18,9 @@ $API = new API();
# JS Scripts to load for this page
$jsScriptLoadData['activeTabOnRefresh'] = true;
$jsScriptLoadData['copyInputValue'] = true;
$jsScriptLoadData['updateToggle'] = true;
$jsScriptLoadData['/src/js/sentri/activeTabOnRefresh.js'] = true;
$jsScriptLoadData['/src/js/sentri/copyInputValue.js'] = true;
$jsScriptLoadData['/src/js/sentri/updateToggle.js'] = true;
# PageClasses Setup

View File

@@ -20,12 +20,12 @@ $API->checkPermissions('admin-sources', 'RO');
# JS Scripts to load for this page
$jsScriptLoadData['activeTabOnRefresh'] = true;
$jsScriptLoadData['copyInputValue'] = true;
$jsScriptLoadData['updateToggle'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['inserve_source'] = true;
$jsScriptLoadData['validateJson'] = true;
$jsScriptLoadData['/src/js/sentri/activeTabOnRefresh.js'] = true;
$jsScriptLoadData['/src/js/sentri/copyInputValue.js'] = true;
$jsScriptLoadData['/src/js/sentri/updateToggle.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
$jsScriptLoadData['/src/js/sentri/inserve_source.js'] = true;
$jsScriptLoadData['/src/js/sentri/validateJson.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -27,10 +27,10 @@ if (!$API->checkPermissions('servers', 'RO', true)) {
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['breadCrumbs'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/sentri/breadCrumbs.js'] = true;
$jsScriptLoadData['codeblocks'] = true;
$jsScriptLoadData['serverView'] = true;
$jsScriptLoadData['/src/js/sentri/serverView.js'] = true;
# PageClasses Setup
$pageNavbar = new pageNavbar(true);

View File

@@ -27,9 +27,9 @@ if (!$API_servers->checkPermissions('servers', 'RO', true)) {
# Page functions
# JS Scripts to load for this page
$jsScriptLoadData['delete_confirmation'] = true;
$jsScriptLoadData['datatables'] = true;
$jsScriptLoadData['multiFilterSelectServers'] = true;
$jsScriptLoadData['/src/js/sentri/delete_confirmation.js'] = true;
$jsScriptLoadData['/src/js/plugin/datatables/datatables.min.js'] = true;
$jsScriptLoadData['/src/js/sentri/multiFilterSelectServers.js'] = true;
# PageClasses Setup
$serverOverview = new serverOverviewBuilder();

View File

@@ -336,34 +336,37 @@ class pageBuilder
<!-- jQuery Scrollbar -->
<script src="/src/js/plugin/jquery-scrollbar/jquery.scrollbar.min.js"></script>
<!-- Chart JS
<script src="/src/js/plugin/chart.js/chart.min.js"></script>
-->
<!-- jQuery Sparkline
<script src="/src/js/plugin/jquery.sparkline/jquery.sparkline.min.js"></script>
-->
<!-- Chart Circle
<script src="/src/js/plugin/chart-circle/circles.min.js"></script>
-->
<!-- jQuery Vector Maps
<script src="/src/js/plugin/jsvectormap/jsvectormap.min.js"></script>
<script src="/src/js/plugin/jsvectormap/world.js"></script>
-->
<!-- Load Other Js scripts -->
<?php
if (isset($this->jsScriptLoadData)) {
foreach ($this->jsScriptLoadData as $key => $script) {
if ($key === 'form') { ?>
<script src="/src/js/plugin/select2/select2.full.min.js"></script><!-- Bootstrap Tagsinput -->
<script src="/src/js/plugin/bootstrap-tagsinput/bootstrap-tagsinput.min.js"></script><!-- jQuery Moment.JS -->
<script src="/src/js/plugin/moment/moment.min.js"></script><!-- Bootstrap datetimepicker -->
<script src="/src/js/plugin/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js"></script><!-- validate forms -->
<script src="/src/js/plugin/jquery.validate/jquery.validate.min.js"></script><!-- dropzone -->
<script src="/src/js/plugin/dropzone/dropzone.min.js"></script>
<script src="/src/js/sentri/form.js"></script>
<?php } elseif ($key === 'codeblocks') { ?>
<link rel="stylesheet" href="/src/css/prism.css">
<script src="https://cdn.jsdelivr.net/npm/prismjs/prism.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/components/prism-json.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs/plugins/toolbar/prism-toolbar.css">
<script src="https://cdn.jsdelivr.net/npm/prismjs/plugins/toolbar/prism-toolbar.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js"></script>
<?php } elseif ($key === 'datepicker') { ?>
<script src="/src/js/plugin/moment/moment.min.js"></script>
<script src="/src/js/plugin/datepicker/bootstrap-datetimepicker.min.js"></script>
<script src="/src/js/sentri/datepicker.js"></script>
<?php } else { ?>
<script src="<?php echo $key ?>"></script>
<?php } ?><?php }
}
# keeps refreshing the timeZoneCookie
setTimeZoneCookie();
if (isset($this->jsScriptLoadData)) {
require_once "{$_SERVER['DOCUMENT_ROOT']}/bin/php/jsScripts.php";
}
# process response from actions
if (isset($_SESSION['response'])) { ?>
<script src="/src/js/sentri/response.js"></script>
<?php }
}
}

View File

@@ -1,130 +0,0 @@
<?php
if (!defined('APP_INIT')) {
exit;
}
if (isset($this->jsScriptLoadData['form'])) { ?>
<!-- Select2 -->
<script src="/src/js/plugin/select2/select2.full.min.js"></script><!-- Bootstrap Tagsinput -->
<script src="/src/js/plugin/bootstrap-tagsinput/bootstrap-tagsinput.min.js"></script><!-- jQuery Moment.JS -->
<script src="/src/js/plugin/moment/moment.min.js"></script><!-- Bootstrap datetimepicker -->
<script src="/src/js/plugin/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js"></script><!-- valicate forms -->
<script src="/src/js/plugin/jquery.validate/jquery.validate.min.js"></script><!-- dropzone -->
<script src="/src/js/plugin/dropzone/dropzone.min.js"></script>
<script src="/src/js/sentri/form.js"></script>
<?php }
if (isset($this->jsScriptLoadData['datatables'])) { ?>
<script src="/src/js/plugin/datatables/datatables.min.js"></script>
<?php }
if (isset($this->jsScriptLoadData['codeblocks'])) { ?>
<link rel="stylesheet" href="/src/css/prism.css">
<script src="https://cdn.jsdelivr.net/npm/prismjs/prism.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/components/prism-json.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs/plugins/toolbar/prism-toolbar.css">
<script src="https://cdn.jsdelivr.net/npm/prismjs/plugins/toolbar/prism-toolbar.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard.min.js"></script>
<?php } ?>
<?php
# Filter datatables
if (isset($this->jsScriptLoadData['multiFilterSelect'])) { ?>
<script src="/src/js/sentri/multiFilterSelect.js"></script>
<?php }
// multipleselect loading
if (isset($this->jsScriptLoadData['multiple_select'])) { ?>
<script src="/src/js/sentri/multiple_select.js"></script>
<?php }
// Function to generate a random password
if (isset($this->jsScriptLoadData['Generatepassword'])) { ?>
<script src="/src/js/sentri/Generatepassword.js"></script>
<?php }
if (isset($this->jsScriptLoadData['passwordGenOnLoad'])) { ?>
<script src="/src/js/sentri/passwordGenOnLoad.js"></script>
<?php }
if (isset($this->jsScriptLoadData['passwordShowHide'])) { ?>
<script src="/src/js/sentri/passwordShowHide.js"></script>
<?php }
if (isset($this->jsScriptLoadData['passwordRegen'])) { ?>
<script src="/src/js/sentri/passwordRegen.js"></script>
<?php }
// Create an datepicker input
if (isset($this->jsScriptLoadData['datepicker'])) { ?>
<script src="/src/js/plugin/moment/moment.min.js"></script>
<script src="/src/js/plugin/datepicker/bootstrap-datetimepicker.min.js"></script>
<script src="/src/js/sentri/datepicker.js"></script>
<?php }
// Activate the right panel and tab on refresh based on the #hash in the url
if (isset($this->jsScriptLoadData['activeTabOnRefresh'])) { ?>
<script src="/src/js/sentri/activeTabOnRefresh.js"></script>
<?php }
if (isset($this->jsScriptLoadData['activateCompany'])) { ?>
<script src="/src/js/sentri/activateCompany.js"></script>
<?php }
if (isset($this->jsScriptLoadData['multiFilterSelectServers'])) { ?>
<script src="/src/js/sentri/multiFilterSelectServers.js"></script>
<?php }
if (isset($this->jsScriptLoadData['inserve_source'])) { ?>
<script src="/src/js/sentri/inserve_source.js"></script>
<?php }
if (isset($this->jsScriptLoadData['serverView'])) { ?>
<script src="/src/js/sentri/serverView.js"></script>
<?php }
// slugify an input field
if (isset($this->jsScriptLoadData['slugify'])) { ?>
<script src="/src/js/sentri/slugify.js"></script>
<?php }
// Clicking on a btn will copy the value of an input to the clipboard
if (isset($this->jsScriptLoadData['copyInputValue'])) { ?>
<script src="/src/js/sentri/copyInputValue.js"></script>
<?php }
if (isset($this->jsScriptLoadData['CopyTargetData'])) { ?>
<script src="/src/js/sentri/CopyTargetData.js"></script>
<?php }
if (isset($this->jsScriptLoadData['validateJson'])) { ?>
<script src="/src/js/sentri/validateJson.js"></script>
<?php }
if (isset($this->jsScriptLoadData['stompjes'])) { ?>
<script src="/src/js/plugin/chart.js/chart.min.js"></script>
<script src="/src/js/sentri/stompjes.js"></script>
<?php }
if (isset($this->jsScriptLoadData['delete_confirmation'])) { ?>
<script src="/src/js/sentri/delete_confirmation.js"></script>
<?php }
if (isset($this->jsScriptLoadData['load_dropzone'])) { ?>
<script src="/src/js/sentri/load_dropzone.js"></script>
<?php }
if (isset($this->jsScriptLoadData['updateToggle'])) { ?>
<script src="/src/js/sentri/updateToggle.js"></script>
<?php }
if (isset($this->jsScriptLoadData['updatePermissions'])) { ?>
<script src="/src/js/sentri/updatePermissions.js"></script>
<?php }
if (isset($this->jsScriptLoadData['enableButtonOnImageUpload'])) { ?>
<script src="/src/js/sentri/enableButtonOnImageUpload.js"></script>
<?php }
if (isset($this->jsScriptLoadData['breadCrumbs'])) { ?>
<script src="/src/js/sentri/breadCrumbs.js"></script>
<?php } ?>

View File

@@ -29,36 +29,6 @@ $loginAttempts = checkLoginAttempts();
<link rel="apple-touch-icon" sizes="180x180" href="/src/images/favicon/apple-touch-icon.png">
<link rel="manifest" href="/src/images/favicon/site.webmanifest">
<style>
body {
font-family: Arial, sans-serif;
background-color: #1d222b;
}
.portal-image {
width: 100%;
height: auto;
aspect-ratio: 3 / 1;
object-fit: contain;
display: block;
min-height: 200px; /* Prevent layout shift during image load */
}
#code-container {
display: flex;
justify-content: center;
gap: 10px;
}
.code-input {
width: 40px;
height: 40px;
font-size: 24px;
text-align: center;
margin: 5px;
}
</style>
<link rel="stylesheet" href="css/style.full.css" as="style">
</head>
<body>
@@ -105,7 +75,7 @@ $loginAttempts = checkLoginAttempts();
<div class="card col-md-5 text-white bg-transparent py-0 border-0">
<div class="card-body text-center pt-5">
<div>
<img class="pt-3 w-100 portal-image" alt="portal-image" src="" width="500" height="265" style="height: auto;">
<img class="pt-3 w-100 portal-image" alt="portal-image" src="" width="500" height="265">
</div>
</div>
</div>

View File

@@ -139,7 +139,7 @@ if ($loginAttemptCount = checkLoginAttempts() > 3) {
<div class="card col-md-5 text-white bg-transparent py-5 border-0">
<div class="card-body text-center pt-3">
<div>
<img class="pt-3 w-100 portal-image" alt="portal-image" width="500" height="265" style="height: auto;" src="">
<img class="pt-3 w-100 portal-image" alt="portal-image" width="500" height="265" src="">
</div>
</div>
</div>

View File

@@ -0,0 +1,36 @@
const password = document.getElementById("password");
const confirmPassword = document.getElementById("confirmPassword");
const submitBtn = document.getElementById("submitBtn");
const passwordHelp = document.getElementById("passwordHelp");
const passwordPolicyError = document.getElementById("passwordPolicyError");
function checkPasswords() {
const pwValue = password.value;
const confirmValue = confirmPassword.value;
// Check length
if (pwValue.length < 13) {
passwordPolicyError.classList.remove("d-none");
submitBtn.disabled = true;
return;
} else {
passwordPolicyError.classList.add("d-none");
}
// Check match
if (pwValue && confirmValue) {
if (pwValue === confirmValue) {
passwordHelp.classList.add("d-none");
submitBtn.disabled = false;
} else {
passwordHelp.classList.remove("d-none");
submitBtn.disabled = true;
}
} else {
passwordHelp.classList.add("d-none");
submitBtn.disabled = true;
}
}
password.addEventListener("input", checkPasswords);
confirmPassword.addEventListener("input", checkPasswords);

View File

@@ -56,36 +56,6 @@ if (checkLoginAttempts() > 20) {
<link rel="apple-touch-icon" sizes="180x180" href="/src/images/favicon/apple-touch-icon.png">
<link rel="manifest" href="/src/images/favicon/site.webmanifest">
<style>
body {
font-family: Arial, sans-serif;
background-color: #1d222b;
}
.portal-image {
width: 100%;
height: auto;
aspect-ratio: 3 / 1;
object-fit: contain;
display: block;
min-height: 200px; /* Prevent layout shift during image load */
}
#code-container {
display: flex;
justify-content: center;
gap: 10px;
}
.code-input {
width: 40px;
height: 40px;
font-size: 24px;
text-align: center;
margin: 5px;
}
</style>
<link rel="stylesheet" href="css/style.full.css" as="style">
</head>
<body>
@@ -143,7 +113,7 @@ if (checkLoginAttempts() > 20) {
<div class="card col-md-5 text-white bg-transparent py-5">
<div class="card-body text-center pt-5">
<div>
<img class="pt-3 w-100 portal-image" alt="portal-image" src="" width="500" height="265" style="height: auto;">
<img class="pt-3 w-100 portal-image" alt="portal-image" src="" width="500" height="265">
</div>
</div>
</div>
@@ -153,43 +123,6 @@ if (checkLoginAttempts() > 20) {
</div>
</div>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<script>
const password = document.getElementById("password");
const confirmPassword = document.getElementById("confirmPassword");
const submitBtn = document.getElementById("submitBtn");
const passwordHelp = document.getElementById("passwordHelp");
const passwordPolicyError = document.getElementById("passwordPolicyError");
function checkPasswords() {
const pwValue = password.value;
const confirmValue = confirmPassword.value;
// Check length
if (pwValue.length < 13) {
passwordPolicyError.classList.remove("d-none");
submitBtn.disabled = true;
return;
} else {
passwordPolicyError.classList.add("d-none");
}
// Check match
if (pwValue && confirmValue) {
if (pwValue === confirmValue) {
passwordHelp.classList.add("d-none");
submitBtn.disabled = false;
} else {
passwordHelp.classList.remove("d-none");
submitBtn.disabled = true;
}
} else {
passwordHelp.classList.add("d-none");
submitBtn.disabled = true;
}
}
password.addEventListener("input", checkPasswords);
confirmPassword.addEventListener("input", checkPasswords);
</script>
<script src="/login/js/checkPasswords.js"></script>
</body>
</html>

View File

@@ -98,7 +98,7 @@ if (checkLoginAttempts() > 20) {
<div class="card col-md-5 text-white bg-transparent py-5">
<div class="card-body text-center pt-5">
<div>
<img class="pt-3 w-100 portal-image" alt="portal-image" src="" width="500" height="265" style="height: auto;">
<img class="pt-3 w-100 portal-image" alt="portal-image" src="" width="500" height="265">
</div>
</div>
</div>