Refactored, no more redirects. Improved error messaging system
This commit is contained in:
212
options.php
212
options.php
@@ -8,8 +8,119 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*****************************************************************************/
|
||||
|
||||
include("includes.php");
|
||||
|
||||
// ========== ACTIONS START ===================================================
|
||||
switch ($submit = form_get_action()) {
|
||||
|
||||
case NULL: break;
|
||||
|
||||
case 'edit': $action = ACT_EDIT; break;
|
||||
case 'pass': $action = ACT_PASSWORD; break;
|
||||
|
||||
case 'update':
|
||||
$id = $_SESSION['suser_id'];
|
||||
$language = $_POST['user_language'];
|
||||
$imagesize = sanitize($_POST['user_imagesize']);
|
||||
$imagecount = sanitize($_POST['user_imagecount']);
|
||||
$mac = sanitize($_POST['user_mac']);
|
||||
$dateformat = sanitize($_POST['user_dateformat']);
|
||||
$dns1suffix = sanitize($_POST['user_dns1suffix']);
|
||||
$dns2suffix = sanitize($_POST['user_dns2suffix']);
|
||||
$tooltips = sanitize($_POST['user_tooltips']);
|
||||
|
||||
$menu_assets = sanitize($_POST['user_menu_assets']);
|
||||
$menu_assetclasses = sanitize($_POST['user_menu_assetclasses']);
|
||||
$menu_assetclassgroups = sanitize($_POST['user_menu_assetclassgroups']);
|
||||
$menu_cables = sanitize($_POST['user_menu_cables']);
|
||||
$menu_locations = sanitize($_POST['user_menu_locations']);
|
||||
$menu_nodes = sanitize($_POST['user_menu_nodes']);
|
||||
$menu_subnets = sanitize($_POST['user_menu_subnets']);
|
||||
$menu_vlans = sanitize($_POST['user_menu_vlans']);
|
||||
$menu_zones = sanitize($_POST['user_menu_zones']);
|
||||
|
||||
// construct menu set
|
||||
$menu = array();
|
||||
if ($menu_assets) $menu[] = 'asset';
|
||||
if ($menu_assetclasses) $menu[] = 'class';
|
||||
if ($menu_assetclassgroups) $menu[] = 'group';
|
||||
if ($menu_cables) $menu[] = 'cable';
|
||||
if ($menu_locations) $menu[] = 'location';
|
||||
if ($menu_nodes) $menu[] = 'node';
|
||||
if ($menu_subnets) $menu[] = 'subnet';
|
||||
if ($menu_vlans) $menu[] = 'vlan';
|
||||
if ($menu_zones) $menu[] = 'zone';
|
||||
|
||||
$sql = "UPDATE user SET
|
||||
user_language=?, user_imagesize=?, user_imagecount=?,
|
||||
user_mac=?, user_dateformat=?, user_dns1suffix=?,
|
||||
user_dns2suffix=?, user_tooltips=?, user_menu=?
|
||||
WHERE
|
||||
user_id=?";
|
||||
$sth = $dbh->prepare($sql);
|
||||
$sth->execute([$language, $imagesize, $imagecount,
|
||||
$mac, $dateformat, $dns1suffix,
|
||||
$dns2suffix, $tooltips, implode(',', $menu),
|
||||
$id]);
|
||||
|
||||
$_SESSION['suser_language'] = $language;
|
||||
$_SESSION['suser_imagesize'] = $imagesize;
|
||||
$_SESSION['suser_imagecount'] = $imagecount;
|
||||
$_SESSION['suser_mac'] = $mac;
|
||||
$_SESSION['suser_dateformat'] = $dateformat;
|
||||
$_SESSION['suser_dns1suffix'] = $dns1suffix;
|
||||
$_SESSION['suser_dns2suffix'] = $dns2suffix;
|
||||
$_SESSION['suser_menu_assets'] = $menu_assets;
|
||||
$_SESSION['suser_menu_assetclasses'] = $menu_assetclasses;
|
||||
$_SESSION['suser_menu_assetclassgroups'] = $menu_assetclassgroups;
|
||||
$_SESSION['suser_menu_cables'] = $menu_cables;
|
||||
$_SESSION['suser_menu_locations'] = $menu_locations;
|
||||
$_SESSION['suser_menu_nodes'] = $menu_nodes;
|
||||
$_SESSION['suser_menu_subnets'] = $menu_subnets;
|
||||
$_SESSION['suser_menu_vlans'] = $menu_vlans;
|
||||
$_SESSION['suser_menu_zones'] = $menu_zones;
|
||||
$_SESSION['suser_tooltips'] = $tooltips;
|
||||
|
||||
$action = ACT_DEFAULT;
|
||||
break;
|
||||
|
||||
case 'exec-pass':
|
||||
$user_id = $_SESSION['suser_id'];
|
||||
$currentpass = sanitize($_POST['user_currentpass']);
|
||||
$newpass1 = sanitize($_POST['user_newpass1']);
|
||||
$newpass2 = sanitize($_POST['user_newpass2']);
|
||||
$sth = $dbh->prepare("SELECT user_pass FROM user WHERE user_id=?");
|
||||
$sth->execute([$user_id]);
|
||||
$userpass = $sth->fetchColumn();
|
||||
$action = ACT_PASSWORD;
|
||||
if (password_verify($currentpass, $userpass)) {
|
||||
if (strlen($newpass1) >= 5) {
|
||||
if (!strcmp($newpass1, $newpass2)) {
|
||||
$sth = $dbh->prepare("UPDATE user SET user_pass=? WHERE user_id=?");
|
||||
$newhash = password_hash($newpass1, PASSWORD_BCRYPT);
|
||||
$sth->execute([$newhash, $user_id]);
|
||||
$action = ACT_DEFAULT;
|
||||
} else {
|
||||
$g_error->Add('New passwords do not match!');
|
||||
}
|
||||
} else {
|
||||
$g_error->Add('New password is to simple!');
|
||||
}
|
||||
} else {
|
||||
$g_error->Add('Current password wrong!');
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
$g_error->Add(submit_error($submit));
|
||||
$valid = FALSE;
|
||||
}
|
||||
|
||||
// ========== ACTIONS END =====================================================
|
||||
include("header.php");
|
||||
|
||||
if ($action == ACT_DEFAULT):
|
||||
// ========== VARIANT: default behavior =======================================
|
||||
|
||||
$smarty->assign('realm', $_SESSION['suser_realm']);
|
||||
$smarty->assign('role_add', $_SESSION['suser_role_add']);
|
||||
$smarty->assign('role_edit', $_SESSION['suser_role_edit']);
|
||||
@@ -18,5 +129,104 @@ $smarty->assign('role_manage', $_SESSION['suser_role_manage']);
|
||||
$smarty->assign('role_admin', $_SESSION['suser_role_admin']);
|
||||
$smarty->display("options.tpl");
|
||||
|
||||
include("footer.php");
|
||||
elseif ($action == ACT_EDIT):
|
||||
// ========== VARIANT: edit display options ===================================
|
||||
|
||||
$smarty->assign("language", $language);
|
||||
|
||||
if($_SESSION['suser_menu_assets']=='on') {
|
||||
$user_menu_assets_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_assets_checked = '';
|
||||
}
|
||||
// assetclasses
|
||||
if($_SESSION['suser_menu_assetclasses']=='on') {
|
||||
$user_menu_assetclasses_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_assetclasses_checked = '';
|
||||
}
|
||||
// assetclassgroups
|
||||
if($_SESSION['suser_menu_assetclassgroups']=='on') {
|
||||
$user_menu_assetclassgroups_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_assetclassgroups_checked = '';
|
||||
}
|
||||
// cables
|
||||
if($_SESSION['suser_menu_cables']=='on') {
|
||||
$user_menu_cables_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_cables_checked = '';
|
||||
}
|
||||
// locations
|
||||
if($_SESSION['suser_menu_locations']=='on') {
|
||||
$user_menu_locations_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_locations_checked = '';
|
||||
}
|
||||
// nodes
|
||||
if($_SESSION['suser_menu_nodes']=='on') {
|
||||
$user_menu_nodes_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_nodes_checked = '';
|
||||
}
|
||||
// subnets
|
||||
if($_SESSION['suser_menu_subnets']=='on') {
|
||||
$user_menu_subnets_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_subnets_checked = '';
|
||||
}
|
||||
// vlans
|
||||
if($_SESSION['suser_menu_vlans']=='on') {
|
||||
$user_menu_vlans_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_vlans_checked = '';
|
||||
}
|
||||
// zones
|
||||
if($_SESSION['suser_menu_zones']=='on') {
|
||||
$user_menu_zones_checked = 'checked';
|
||||
} else {
|
||||
$user_menu_zones_checked = '';
|
||||
}
|
||||
// tooltips
|
||||
if($_SESSION['suser_tooltips']=='on') {
|
||||
$user_tooltips_checked = 'checked';
|
||||
} else {
|
||||
$user_tooltips_checked = '';
|
||||
}
|
||||
|
||||
$smarty->assign("user_id", $_SESSION['suser_id']);
|
||||
$smarty->assign("user_imagesize", $_SESSION['suser_imagesize']);
|
||||
$smarty->assign("user_imagecount", $_SESSION['suser_imagecount']);
|
||||
$smarty->assign("user_mac", $_SESSION['suser_mac']);
|
||||
$smarty->assign("user_dateformat", $_SESSION['suser_dateformat']);
|
||||
$smarty->assign("user_dns1suffix", $_SESSION['suser_dns1suffix']);
|
||||
$smarty->assign("user_dns2suffix", $_SESSION['suser_dns2suffix']);
|
||||
$smarty->assign("user_language", $_SESSION['suser_language']);
|
||||
$smarty->assign("user_menu_assets_checked", $user_menu_assets_checked);
|
||||
$smarty->assign("user_menu_assetclasses_checked", $user_menu_assetclasses_checked);
|
||||
$smarty->assign("user_menu_assetclassgroups_checked", $user_menu_assetclassgroups_checked);
|
||||
$smarty->assign("user_menu_cables_checked", $user_menu_cables_checked);
|
||||
$smarty->assign("user_menu_locations_checked", $user_menu_locations_checked);
|
||||
$smarty->assign("user_menu_nodes_checked", $user_menu_nodes_checked);
|
||||
$smarty->assign("user_menu_subnets_checked", $user_menu_subnets_checked);
|
||||
$smarty->assign("user_menu_vlans_checked", $user_menu_vlans_checked);
|
||||
$smarty->assign("user_menu_zones_checked", $user_menu_zones_checked);
|
||||
$smarty->assign("user_tooltips_checked", $user_tooltips_checked);
|
||||
|
||||
$smarty->display("optionseditdisplay.tpl");
|
||||
|
||||
elseif ($action == ACT_PASSWORD):
|
||||
// ========== VARIANT: password ===============================================
|
||||
|
||||
$smarty->display("optionseditpassword.tpl");
|
||||
|
||||
else:
|
||||
// ========== ERROR UNKNOWN VARIANT ===========================================
|
||||
|
||||
echo "<p>Unknown function call: Please report to system development!</p>\n";
|
||||
|
||||
endif; // $action == ...
|
||||
// ========== END OF VARIANTS =================================================
|
||||
|
||||
$smarty->display('footer.tpl');
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user