X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=user_delete.php;h=97b255725298e6b8e65a7df26e31b21160cc923b;hb=8d79e78a49803d07856cd68ab733157dfed6f793;hp=092dcb43d9436e7ba7bc94315264dd2e41f39779;hpb=9e82b53fc5d8cb1e54b5fde774fa68a916f28b4c;p=timetracker.git diff --git a/user_delete.php b/user_delete.php index 092dcb43..97b25572 100644 --- a/user_delete.php +++ b/user_delete.php @@ -31,7 +31,7 @@ import('form.Form'); import('ttUserHelper'); // Access check. -if (!ttAccessCheck(right_manage_team)) { +if (!ttAccessAllowed('manage_users')) { header('Location: access_denied.php'); exit(); } @@ -39,23 +39,20 @@ if (!ttAccessCheck(right_manage_team)) { // Get user id we are deleting from the request. // A cast to int is for safety against manipulation of request parameter (sql injection). $user_id = (int) $request->getParameter('id'); - // We need user name and login to display. $user_details = ttUserHelper::getUserDetails($user_id); // Security checks. -$ok_to_go = $user->canManageTeam(); // Are we authorized for user deletes? -if ($ok_to_go) $ok_to_go = $ok_to_go && $user_details; // Are we deleting a real user? -if ($ok_to_go) $ok_to_go = $ok_to_go && ($user->team_id == $user_details['team_id']); // User belongs to our team? -if ($ok_to_go && $user->isCoManager() && (ROLE_COMANAGER == $user_details['role'])) - $ok_to_go = ($user->id == $user_details['id']); // Comanager is not allowed to delete other comanagers. -if ($ok_to_go && $user->isCoManager() && (ROLE_MANAGER == $user_details['role'])) - $ok_to_go = false; // Comanager is not allowed to delete a manager. +if (!$user_details || // No details. + $user_details['team_id'] <> $user->team_id || // User not in team. + $user_details['rank'] > $user->rank || // User has a bigger rank. + ($user_details['rank'] == $user->rank && $user_details['id'] <> $user->id) // Same rank but not us. + ) { + header('Location: access_denied.php'); + exit(); +} -if (!$ok_to_go) - die ($i18n->getKey('error.sys')); -else - $smarty->assign('user_to_delete', $user_details['name']." (".$user_details['login'].")"); +$smarty->assign('user_to_delete', $user_details['name']." (".$user_details['login'].")"); // Create confirmation form. $form = new Form('userDeleteForm'); @@ -91,7 +88,7 @@ if ($request->isPost()) { header('Location: users.php'); exit(); } -} // POST +} // isPost $smarty->assign('forms', array($form->getName()=>$form->toArray())); $smarty->assign('title', $i18n->getKey('title.delete_user'));