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();