Improved input checking for role editor.
authorNik Okuntseff <support@anuko.com>
Mon, 26 Mar 2018 19:45:10 +0000 (19:45 +0000)
committerNik Okuntseff <support@anuko.com>
Mon, 26 Mar 2018 19:45:10 +0000 (19:45 +0000)
WEB-INF/templates/footer.tpl
role_add.php
role_delete.php
role_edit.php
roles.php

index 6646f12..7c8bd63 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.17.74.4181 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.17.74.4182 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>
index e4cbb96..d26cb6a 100644 (file)
@@ -40,7 +40,7 @@ if (!ttAccessAllowed('manage_roles')) {
 if ($request->isPost()) {
   $cl_name = trim($request->getParameter('name'));
   $cl_description = trim($request->getParameter('description'));
-  $cl_rank = (int) $request->getParameter('rank');
+  $cl_rank = (int)$request->getParameter('rank');
 }
 
 $form = new Form('roleForm');
@@ -56,6 +56,7 @@ if ($request->isPost()) {
   // Validate user input.
   if (!ttValidString($cl_name)) $err->add($i18n->get('error.field'), $i18n->get('label.thing_name'));
   if (!ttValidString($cl_description, true)) $err->add($i18n->get('error.field'), $i18n->get('label.description'));
+  if ($cl_rank >= $user->rank || $cl_rank < 0) $err->add($i18n->get('error.field'), $i18n->get('form.roles.rank'));
 
   if ($err->no()) {
     $existing_role = ttRoleHelper::getRoleByRank($cl_rank, $user->team_id);
index 086e7af..a3ce298 100644 (file)
@@ -35,9 +35,14 @@ if (!ttAccessAllowed('manage_roles')) {
   header('Location: access_denied.php');
   exit();
 }
-
 $cl_role_id = (int)$request->getParameter('id');
 $role = ttRoleHelper::get($cl_role_id);
+if (!$role) {
+  header('Location: access_denied.php');
+  exit();
+}
+// End of access checks.
+
 $role_to_delete = $role['name'];
 
 $form = new Form('roleDeleteForm');
index f5f3762..972d454 100644 (file)
@@ -28,8 +28,6 @@
 
 require_once('initialize.php');
 import('form.Form');
-import('ttTeamHelper'); // TODO: remove this?
-import('ttTaskHelper'); // TODO: remove this?
 import('ttRoleHelper');
 
 // Access checks.
@@ -43,6 +41,7 @@ if (!$role) {
   header('Location: access_denied.php');
   exit();
 }
+// End of access checks.
 
 $assigned_rights = explode(',', $role['rights']);
 $available_rights = array_diff($user->rights, $assigned_rights);
@@ -82,6 +81,7 @@ if ($request->isPost()) {
     // Validate user input.
     if (!ttValidString($cl_name)) $err->add($i18n->get('error.field'), $i18n->get('label.thing_name'));
     if (!ttValidString($cl_description, true)) $err->add($i18n->get('error.field'), $i18n->get('label.description'));
+    if ($cl_rank >= $user->rank || $cl_rank < 0) $err->add($i18n->get('error.field'), $i18n->get('form.roles.rank'));
 
     if ($err->no()) {
       $existing_role = ttRoleHelper::getRoleByName($cl_name);
index ec79020..cd17da3 100644 (file)
--- a/roles.php
+++ b/roles.php
@@ -31,11 +31,12 @@ import('form.Form');
 import('ttTeamHelper');
 import('ttRoleHelper');
 
-// Access check.
+// Access checks.
 if (!ttAccessAllowed('manage_roles')) {
   header('Location: access_denied.php');
   exit();
 }
+// End of access checks.
 
 $smarty->assign('active_roles', ttTeamHelper::getActiveRolesForUser());
 $smarty->assign('inactive_roles', ttTeamHelper::getInactiveRolesForUser());