]> git.agnieray.net Git - galette.git/commitdiff
Factorize visibility check for core fields
authorJohan Cwiklinski <johan@x-tnd.be>
Tue, 28 Sep 2021 05:29:29 +0000 (07:29 +0200)
committerJohan Cwiklinski <johan@x-tnd.be>
Tue, 28 Sep 2021 05:29:29 +0000 (07:29 +0200)
galette/lib/Galette/Controllers/Crud/MembersController.php
galette/lib/Galette/Entity/FieldsConfig.php

index 22e0ab6b72ed59ed505918be834f83292724190c..20932f4e3bb511a32f204ae944d3f490c085a2b4 100644 (file)
@@ -768,25 +768,7 @@ class MembersController extends CrudController
         //we want only visibles fields
         $fields = $this->members_fields;
         $fc = $this->fields_config;
-        $visibles = $fc->getVisibilities();
-        $access_level = $this->login->getAccessLevel();
-
-        //remove not searchable fields
-        unset($fields['mdp_adh']);
-
-        foreach ($fields as $k => $f) {
-            if (
-                $visibles[$k] == FieldsConfig::NOBODY ||
-                ($visibles[$k] == FieldsConfig::ADMIN &&
-                    $access_level < Authentication::ACCESS_ADMIN) ||
-                ($visibles[$k] == FieldsConfig::STAFF &&
-                    $access_level < Authentication::ACCESS_STAFF) ||
-                ($visibles[$k] == FieldsConfig::MANAGER &&
-                    $access_level < Authentication::ACCESS_MANAGER)
-            ) {
-                unset($fields[$k]);
-            }
-        }
+        $fc->filterVisible($this->login, $fields);
 
         //add status label search
         if ($pos = array_search(Status::PK, array_keys($fields))) {
@@ -1097,7 +1079,7 @@ class MembersController extends CrudController
         } elseif ($id !== null) {
             //load requested member
             $member->load($id);
-            if (!$member->canEdit($this->login) || $member->id != $id) {
+            if (!$member->canEdit($this->login)) {
                 $this->flash->addMessage(
                     'error_detected',
                     _T("You do not have permission for requested URL.")
index 580802e96bdd7796155e82fbcffa4ae5c4faf601..46e9c0ac88ce265f7e257b636dbbe1a1d7b7753c 100644 (file)
@@ -961,18 +961,17 @@ class FieldsConfig
     }
 
     /**
-     * Get fields for massive changes
-     * @see FieldsConfig::getFormElements
+     * Filter visible fields
      *
-     * @param array $fields Member fields
      * @param Login $login  Login instance
+     * @param array $fields Fields list
      *
-     * @return array
+     * @return void
      */
-    public function getMassiveFormElements(array $fields, Login $login)
+    public function filterVisible(Login $login, array &$fields): void
     {
-        $visibles = $this->getVisibilities();
         $access_level = $login->getAccessLevel();
+        $visibles = $this->getVisibilities();
 
         //remove not searchable fields
         unset($fields['mdp_adh']);
@@ -991,6 +990,21 @@ class FieldsConfig
             }
         }
 
+    }
+
+    /**
+     * Get fields for massive changes
+     * @see FieldsConfig::getFormElements
+     *
+     * @param array $fields Member fields
+     * @param Login $login  Login instance
+     *
+     * @return array
+     */
+    public function getMassiveFormElements(array $fields, Login $login)
+    {
+        $this->filterVisible($login, $fields);
+
         $mass_fields = [
             'titre_adh',
             'sexe_adh',