Getting rid of the dependency on the legacy role value for users.
authorNik Okuntseff <support@anuko.com>
Thu, 15 Mar 2018 00:14:59 +0000 (00:14 +0000)
committerNik Okuntseff <support@anuko.com>
Thu, 15 Mar 2018 00:14:59 +0000 (00:14 +0000)
WEB-INF/lib/ttUser.class.php
WEB-INF/templates/footer.tpl
initialize.php
role_add.php
role_edit.php

index f468f55..61680b9 100644 (file)
@@ -31,7 +31,10 @@ class ttUser {
   var $name = null;             // User name.
   var $id = null;               // User id.
   var $team_id = null;          // Team id.
-  var $role = null;             // User role (user, client, comanager, manager, admin). TODO: remove when new roles are done.
+  var $legacy_role = null;      // Old user role (user, client, comanager, manager, admin). TODO: remove when new roles are done.
+                                // Complete removal requires refactoring migrateLegacyRole, which is used in dbinstall.php.
+                                // Perhaps, after doing an installer?
+
   var $role_id = null;          // Role id.
   var $rank = null;             // User role rank.
   var $client_id = null;        // Client id for client user role.
@@ -94,17 +97,13 @@ class ttUser {
       $this->name = $val['name'];
       $this->id = $val['id'];
       $this->team_id = $val['team_id'];
-      $this->role = $val['role'];
+      $this->legacy_role = $val['role'];
       $this->role_id = $val['role_id'];
       $this->rights = explode(',', $val['rights']);
       $this->is_client = !in_array('track_own_time', $this->rights);
       $this->rank = $val['rank'];
-      // Downgrade rank to legacy role, if it is still in use.
-      if ($this->role > 0 && $this->rank > $this->role)
-        $this->rank = $this->role; // TODO: remove after roles revamp.
-      // Upgrade rank from legacy role, for user who does not yet have a role_id.
-      if (!$this->rank && !$this->role_id && $this->role > 0)
-        $this->rank = $this->role; // TODO: remove after roles revamp.
+      // Downgrade rank to legacy ROLE_MANAGER rank, until we have sub-groups implemented.
+      if ($this->rank > ROLE_MANAGER) $this->rank = ROLE_MANAGER;
       $this->client_id = $val['client_id'];
       $this->email = $val['email'];
       $this->lang = $val['lang'];
@@ -158,13 +157,17 @@ class ttUser {
   }
 
   // isManager - determines whether current user is team manager.
+  // This is a legacy function that we are getting rid of by replacing with rights check.
   function isManager() {
-    return (ROLE_MANAGER == $this->role);
+    return $this->can('export_data'); // By default this is assigned to managers but not co-managers.
+                                      // Which is sufficient for now until we refactor all calls
+                                      // to this function and then remove it.
   }
 
   // isCoManager - determines whether current user is team comanager.
+  // This is a legacy function that we are getting rid of by replacing with rights check.
   function isCoManager() {
-    return (ROLE_COMANAGER == $this->role);
+    return ($this->can('manage_users') && !$this->can('export_data'));
   }
 
   // isClient - determines whether current user is a client.
@@ -173,8 +176,11 @@ class ttUser {
   }
 
   // canManageTeam - determines whether current user is manager or co-manager.
+  // This is a legacy function that we are getting rid of by replacing with rights check.
   function canManageTeam() {
-    return (right_manage_team & $this->role);
+    return $this->can('manage_users'); // By default this is assigned to co-managers (an managers).
+                                       // Which is sufficient for now until we refactor all calls
+                                       // to this function and then remove it.
   }
 
   // isPluginEnabled checks whether a plugin is enabled for user.
@@ -235,7 +241,7 @@ class ttUser {
     if (!ttRoleHelper::rolesExist()) ttRoleHelper::createDefaultRoles(); // TODO: refactor or remove after roles revamp.
 
     // Obtain new role id based on legacy role.
-    $role_id = ttRoleHelper::getRoleByRank($this->role);
+    $role_id = ttRoleHelper::getRoleByRank($this->legacy_role);
     if (!$role_id) return false; // Role not found, nothing to do.
 
     $mdb2 = getConnection();
index d6f868a..7960c6e 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.44.4079 | 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.45.4080 | 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 5dcd6ff..5d721b8 100644 (file)
@@ -199,13 +199,6 @@ if (!$lang) {
 // Load i18n file.
 $i18n->load($lang);
 
-// Temporary code to assign role_id to users who don't yet have it.
-if ($user->login && !$user->role_id) {
-  $user->migrateLegacyRole(); // Note: this requires initialized $i18n.
-  // Recycle User object, now with proper role_id.
-  $user = new ttUser(null, $auth->getUserId());
-}
-
 // Assign things for smarty to use in template files.
 $smarty->assign('i18n', $i18n->keys);
 $smarty->assign('err', $err);
index 7a01cfc..420b44d 100644 (file)
@@ -46,8 +46,7 @@ if ($request->isPost()) {
 $form = new Form('roleForm');
 $form->addInput(array('type'=>'text','maxlength'=>'100','name'=>'name','style'=>'width: 250px;','value'=>$cl_name));
 $form->addInput(array('type'=>'textarea','name'=>'description','style'=>'width: 250px; height: 40px;','value'=>$cl_description));
-for ($i = 0; $i < $user->role; $i++) {
-  $existing_role_name = null;
+for ($i = 0; $i < $user->rank; $i++) {
   $rank_data[] = $i;
 }
 $form->addInput(array('type'=>'combobox','name'=>'rank','data'=>$rank_data));
index ea0699a..25970bd 100644 (file)
@@ -62,8 +62,7 @@ $form = new Form('roleForm');
 $form->addInput(array('type'=>'hidden','name'=>'id','value'=>$cl_role_id));
 $form->addInput(array('type'=>'text','maxlength'=>'100','name'=>'name','style'=>'width: 250px;','value'=>$cl_name));
 $form->addInput(array('type'=>'textarea','name'=>'description','style'=>'width: 250px; height: 40px;','value'=>$cl_description));
-for ($i = 0; $i < $user->role; $i++) {
-  $existing_role_name = null;
+for ($i = 0; $i < $user->rank; $i++) {
   $rank_data[] = $i;
 }
 $form->addInput(array('type'=>'combobox','name'=>'rank','data'=>$rank_data,'value'=>$cl_rank));