Add "directory_hidden" permission to account types
authorNicolas Iooss <nicolas.iooss_git@polytechnique.org>
Sat, 8 Mar 2014 16:42:26 +0000 (17:42 +0100)
committerNicolas Iooss <nicolas.iooss_git@polytechnique.org>
Sat, 8 Mar 2014 17:00:28 +0000 (18:00 +0100)
classes/user.php
upgrade/1.1.12/08_add_directory_hidden_to_account_types.sql [new file with mode: 0644]

index 10e131c..e380dac 100644 (file)
@@ -24,6 +24,7 @@ class User extends PlUser
     const PERM_API_USER_READONLY = 'api_user_readonly';
     const PERM_DIRECTORY_AX      = 'directory_ax';
     const PERM_DIRECTORY_PRIVATE = 'directory_private';
+    const PERM_DIRECTORY_HIDDEN  = 'directory_hidden';
     const PERM_EDIT_DIRECTORY    = 'edit_directory';
     const PERM_FORUMS            = 'forums';
     const PERM_GROUPS            = 'groups';
@@ -230,14 +231,14 @@ class User extends PlUser
      *
      * Rules are:
      *  - Everyone can view 'public'
-     *  - directory_ax gives access to 'AX' level
+     *  - directory_ax gives access to 'AX' level, ie. the printed directory
      *  - directory_private gives access to 'private' level
-     *  - admin gives access to 'hidden' level
+     *  - admin and directory_hidden gives access to 'hidden' level
      */
     public function readVisibility()
     {
         $level = Visibility::VIEW_NONE;
-        if ($this->is_admin) {
+        if ($this->is_admin || $this->checkPerms('directory_hidden')) {
             $level = Visibility::VIEW_ADMIN;
         } elseif ($this->checkPerms('directory_private')) {
             $level = Visibility::VIEW_PRIVATE;
diff --git a/upgrade/1.1.12/08_add_directory_hidden_to_account_types.sql b/upgrade/1.1.12/08_add_directory_hidden_to_account_types.sql
new file mode 100644 (file)
index 0000000..9aefb6a
--- /dev/null
@@ -0,0 +1,8 @@
+ALTER TABLE account_types CHANGE COLUMN perms perms
+    SET('groups', 'mail', 'directory_ax', 'directory_private', 'directory_hidden',
+        'edit_directory', 'forums', 'lists', 'payment', 'api_user_readonly', 'gapps', 'user') NOT NULL;
+
+-- AX needs directory_ax to access some pages and directory_hidden for admin visibility level
+UPDATE account_types SET perms = 'groups,directory_ax,directory_hidden,edit_directory,user' WHERE type = 'ax';
+
+-- vim:set syntax=mysql: