Profilesetup

This commit is contained in:
“VeLiTi”
2024-10-03 16:02:33 +02:00
9 changed files with 247 additions and 8 deletions

View File

@@ -608,7 +608,7 @@ function getProfile($profile, $permission){
else {
switch ($permission) {
case '4': //Admin++
$profile = admin_profile;
$profile = adminplus_profile;
break;
case '3': //Admin
$profile = admin_profile;

151
profiles.php Normal file
View File

@@ -0,0 +1,151 @@
<?php
defined(page_security_key) or exit;
// Configuration file
$file = './settings/settingsprofiles.php';
$page = 'profiles';
//Check if allowed
if (isAllowed($page,$_SESSION['profile'],$_SESSION['permission'],'R') === 0){
header('location: index.php');
exit;
}
// Open the configuration file for reading
$contents = file_get_contents($file);
//empty view
$view = '';
// Format key function
function format_key($key) {
$key = str_replace(
['_', 'url', 'db ', ' pass', ' user', 'ipn', 'paypal'],
[' ', 'URL', 'Database ', ' Password', ' Username', 'IPN', 'PayPal'],
strtolower($key)
);
return ucwords($key);
}
// Format HTML output function
function format_var_html($key, $value) {
include dirname(__FILE__).'/settings/settingsviews.php';
$html = '';
$value = htmlspecialchars(trim($value, '\''), ENT_QUOTES);
$profile_contents = explode(',',$value);
foreach ($all_views as $view){
$html .= '<div>';
if (in_array($view, $profile_contents)){
$html .= '<input type="checkbox" id="'.$key .'" name="'.$key .'[]" value="'.$view.'" checked> '.$view;
} else {
$html .= '<input type="checkbox" id="'.$key .'" name="'.$key .'[]" value="'.$view.'"> '.$view;
}
$html .= '</div>';
}
return $html;
}
// Format tabs
function format_tabs($contents) {
$rows = explode("\n", $contents);
$tab = '<div class="tabs">';
$tab .= '<a href="#" class="active">General</a>';
for ($i = 0; $i < count($rows); $i++) {
preg_match('/\/\*(.*?)\*\//', $rows[$i], $match);
if ($match) {
$tab .= '<a href="#">' . $match[1] . '</a>';
}
}
$tab .= '</div>';
return $tab;
}
// Format form
function format_form($contents) {
$rows = explode("\n", $contents);
$form = '<div class="tab-content active">Each tab represents a profile. Each element in a profile represents a view and or API access.';
for ($i = 0; $i < count($rows); $i++) {
preg_match('/\/\*(.*?)\*\//', $rows[$i], $match);
if ($match) {
$form .= '</div><div class="tab-content">';
}
preg_match('/define\(\'(.*?)\', ?(.*?)\)/', $rows[$i], $match);
if ($match) {
$form .= format_var_html($match[1], $match[2]);
}
}
$form .= '</div>';
return $form;
}
if (isset($_POST['submit']) && !empty($_POST)) {
//remove submit from POST
unset($_POST['submit']);
//Make POST ready for save into definition
foreach($_POST as $profile_name => $profile_views){
$view_input = '';
foreach($profile_views as $profile_view){
$view_input .= $profile_view.',';
}
$view_input = "'".substr($view_input,0,-1)."'";
// Update the configuration file with the new keys and values
$contents = preg_replace('/define\(\'' . $profile_name . '\'\, ?(.*?)\)/s', 'define(\'' . $profile_name . '\',' . $view_input . ')', $contents);
}
//SAVE TO FILE
file_put_contents('./settings/settingsprofiles.php', $contents);
//Return succesmessage
header('Location: index.php?page=profiles&success_msg=1');
exit;
}
// Handle success messages
if (isset($_GET['success_msg'])) {
if ($_GET['success_msg'] == 1) {
$success_msg = 'Profiles updated successfully!';
}
}
template_header('Profiles', 'profiles');
$view .= '
<form action="" method="post">
<div class="content-title responsive-flex-wrap responsive-pad-bot-3">
<h2 class="responsive-width-100">Profiles</h2>
<input type="submit" name="submit" value="Save" class="btn">
</div>
';
if (isset($success_msg)){
$view .= ' <div class="msg success">
<i class="fas fa-check-circle"></i>
<p>'.$success_msg.'</p>
<i class="fas fa-times"></i>
</div>';
}
$view .= format_tabs($contents);
$view .= '<div class="content-block">
<div class="form responsive-width-100">
';
$view .= format_form($contents);
$view .= '
</div>
</div>
</form>
';
//Output
echo $view;
template_footer();
?>

View File

@@ -16,7 +16,7 @@ $equipments_sub = array('equipments','servicereports','histories','firmwaretool'
$sales_sub = array('accounts','contracts');
$admin_sub = array('users','communications','partners');
$reporting_sub = array('report_build','report_healthindex','report_usage');
$settings_sub = array('config','language','log','maintenance');
$settings_sub = array('config','language','log','maintenance','profiles');
//URLS
$urls = array(
@@ -134,6 +134,12 @@ $urls = array(
"icon" => "fas fa-tachometer-alt",
"name" => "menu_maintenance"
),
"profiles" => array(
"url" => "profiles",
"selected" => "profiles",
"icon" => "fas fa-tachometer-alt",
"name" => "menu_profiles"
),
"marketing" => array(
"url" => "marketing&product_group=Emergency_Plug&product_content=Images",
"selected" => "marketing",

View File

@@ -0,0 +1,20 @@
<?php
/*Standard*/
define('standard_profile','dashboard,profile,equipments,equipment,histories,history,firmwaretool,servicereports,servicereport,application');
/*Superuser*/
define('superuser_profile','dashboard,profile,sales,contracts,contract,contract_manage,assets,equipments,equipment,equipment_manage,equipment_manage_edit,equipments_mass_update,histories,history,history_manage,firmwaretool,products,products_versions,product,product_manage,servicereports,servicereport,admin,partners,partner,users,user,user_manage,marketing,application');
/*Service*/
define('service','dashboard,profile,assets,equipments,equipment,equipment_manage,histories,history,history_manage,firmwaretool,servicereports,servicereport,admin,partners,partner,marketing,application');
/*Admin*/
define('admin_profile','dashboard,profile,buildtool,sales,accounts,account,contracts,contract,contract_manage,cartests,cartest,cartest_manage,assets,equipments,equipment,equipment_healthindex,equipment_data,equipment_manage,equipment_manage_edit,equipments_mass_update,histories,history,history_manage,firmwaretool,buildtool,products,products_versions,product,product_manage,servicereports,servicereport,admin,partners,partner,users,user,user_manage,communications,communication,communication_send,marketing,reporting,report_build,report_healthindex,report_usage,application');
/*AdminPlus*/
define('adminplus_profile','dashboard,profile,buildtool,sales,accounts,account,contracts,contract,contract_manage,cartests,cartest,cartest_manage,assets,equipments,equipment,equipment_healthindex,equipment_data,equipment_manage,equipment_manage_edit,equipments_mass_update,histories,history,history_manage,firmwaretool,buildtool,products,products_versions,product,product_manage,servicereports,servicereport,admin,partners,partner,users,user,user_manage,communications,communication,communication_send,marketing,reporting,report_build,report_healthindex,report_usage,config,settings,logfile,changelog,language,application,maintenance,profiles');
/*Build*/
define('build','buildtool,buildtool,application');
/*Distribution*/
define('distribution','');
/*Firmware*/
define('firmware','firmwaretool,application');
/*Interface*/
define('interface','application');
?>

View File

@@ -0,0 +1,63 @@
<?php
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// All individual views and APIs - Profile ++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
$all_views = [
"dashboard",
"profile",
"buildtool",
"sales",
"accounts",
"account",
"contracts",
"contract",
"contract_manage",
"cartests",
"cartest",
"cartest_manage",
"assets",
"equipments",
"equipment",
"equipment_healthindex",
"equipment_data",
"equipment_manage",
"equipment_manage_edit",
"equipments_mass_update",
"histories",
"history",
"history_manage",
"firmwaretool",
"buildtool",
"products",
"products_versions",
"product",
"product_manage",
"servicereports",
"servicereport",
"admin",
"partners",
"partner",
"users",
"user",
"user_manage",
"communications",
"communication",
"communication_send",
"marketing",
"reporting",
"report_build",
"report_healthindex",
"report_usage",
"config",
"settings",
"logfile",
"changelog",
"language",
"application",
"maintenance",
"profiles"
];
?>

View File

@@ -26,7 +26,7 @@ $menu_report_build = 'Bestand und Produktion';
$menu_report_healthindex= 'Healthindex';
$menu_report_usage = 'Systemnutzung';
$menu_maintenance = 'Maintenance';
$menu_profiles = 'Profiles';
//TABS
$tab1 = 'Allgemein';

View File

@@ -26,6 +26,7 @@ $menu_report_build = 'Voorraad en Productie';
$menu_report_healthindex= 'Healthindex';
$menu_report_usage = 'Systeemgebruik';
$menu_maintenance = 'Maintenance';
$menu_profiles = 'Profielen';
//TABS

View File

@@ -26,6 +26,7 @@ $menu_report_build = 'Stock and Production';
$menu_report_healthindex= 'Healthindex';
$menu_report_usage = 'System usage';
$menu_maintenance = 'Maintenance';
$menu_profiles = 'Profiles';
//TABS
$tab1 = 'General';

View File

@@ -9,10 +9,7 @@ include './settings/config.php';
include_once './settings/translations/translations_US.php';
include_once './settings/systemfirmware.php';
//define('standard_profile','dashboard,profile,equipments,equipment,histories,history,servicereports,servicereport,firmwaretool,application');
$allviews = ["dashboard","profile","equipments","equipment","equipmentmanage","equipment_item"];
$allviews = explode(',' , standard_profile);
$admin_profile = ["dashboard","profile","equipments","equipment"];
@@ -20,7 +17,7 @@ $view = '<html><form action="" method="post">';
foreach ($allviews as $view){
if (in_array($view,$admin_profile)){
if (in_stir($view,$admin_profile)){
$view .= '<input type="checkbox" id="'.$view.'" name="" value="'.$view.'" checked>';
} else {
$view .= '<input type="checkbox" id="'.$view.'" name="profile[]" value="'.$view.'">';