From bb7a73eb73048b377f9c0eeb235f8c82df249533 Mon Sep 17 00:00:00 2001 From: Johan Cwiklinski Date: Mon, 22 Nov 2021 21:53:39 +0100 Subject: [PATCH] Rework getSelectizedMembers to take care of group managers --- galette/includes/routes/ajax.routes.php | 2 +- .../Controllers/Crud/ContributionsController.php | 1 + .../Galette/Controllers/Crud/MembersController.php | 2 ++ .../Controllers/Crud/TransactionsController.php | 1 + galette/lib/Galette/Middleware/MembersNavigate.php | 10 +++++++++- galette/lib/Galette/Repository/Members.php | 12 ++++++++++-- 6 files changed, 24 insertions(+), 4 deletions(-) diff --git a/galette/includes/routes/ajax.routes.php b/galette/includes/routes/ajax.routes.php index bcfac2d71..4b2deeba7 100644 --- a/galette/includes/routes/ajax.routes.php +++ b/galette/includes/routes/ajax.routes.php @@ -282,7 +282,7 @@ $app->group('/ajax', function () use ($authenticate) { } $m = new Members($filters); - $list_members = $m->getSelectizedMembers($this->get('zdb')); + $list_members = $m->getSelectizedMembers($this->get('zdb'), $this->get('login')); $members = []; if (count($list_members) > 0) { diff --git a/galette/lib/Galette/Controllers/Crud/ContributionsController.php b/galette/lib/Galette/Controllers/Crud/ContributionsController.php index 78f78ae45..bb4aa5e07 100644 --- a/galette/lib/Galette/Controllers/Crud/ContributionsController.php +++ b/galette/lib/Galette/Controllers/Crud/ContributionsController.php @@ -118,6 +118,7 @@ class ContributionsController extends CrudController $m = new Members(); $members = $m->getSelectizedMembers( $this->zdb, + $this->login, $contrib->member > 0 ? $contrib->member : null ); diff --git a/galette/lib/Galette/Controllers/Crud/MembersController.php b/galette/lib/Galette/Controllers/Crud/MembersController.php index eb7328896..1061009e2 100644 --- a/galette/lib/Galette/Controllers/Crud/MembersController.php +++ b/galette/lib/Galette/Controllers/Crud/MembersController.php @@ -140,6 +140,7 @@ class MembersController extends CrudController $m = new Members(); $members = $m->getSelectizedMembers( $this->zdb, + $this->login, $member->hasParent() ? $member->parent->id : null ); @@ -1156,6 +1157,7 @@ class MembersController extends CrudController } $members = $m->getSelectizedMembers( $this->zdb, + $this->login, $pid ); diff --git a/galette/lib/Galette/Controllers/Crud/TransactionsController.php b/galette/lib/Galette/Controllers/Crud/TransactionsController.php index bc58aa6c6..6f557249c 100644 --- a/galette/lib/Galette/Controllers/Crud/TransactionsController.php +++ b/galette/lib/Galette/Controllers/Crud/TransactionsController.php @@ -173,6 +173,7 @@ class TransactionsController extends ContributionsController $m = new Members(); $members = $m->getSelectizedMembers( $this->zdb, + $this->login, $trans->member > 0 ? $trans->member : null ); diff --git a/galette/lib/Galette/Middleware/MembersNavigate.php b/galette/lib/Galette/Middleware/MembersNavigate.php index 2f5fac55a..f6907fe05 100644 --- a/galette/lib/Galette/Middleware/MembersNavigate.php +++ b/galette/lib/Galette/Middleware/MembersNavigate.php @@ -110,7 +110,15 @@ class MembersNavigate || $this->login->isGroupManager() ) { $m = new Members($filters); - $ids = $m->getList(false, array(Adherent::PK, 'nom_adh', 'prenom_adh')); + + $ids = array(); + $fields = [Adherent::PK, 'nom_adh', 'prenom_adh']; + if ($this->login->isAdmin() || $this->login->isStaff()) { + $ids = $m->getMembersList(false, $fields); + } else { + $ids = $m->getManagedMembersList(false, $fields); + } + $ids = $ids->toArray(); foreach ($ids as $k => $m) { if ($m['id_adh'] == $args['id']) { diff --git a/galette/lib/Galette/Repository/Members.php b/galette/lib/Galette/Repository/Members.php index 383f8a4b4..09cb8cdd0 100644 --- a/galette/lib/Galette/Repository/Members.php +++ b/galette/lib/Galette/Repository/Members.php @@ -36,6 +36,7 @@ namespace Galette\Repository; +use Galette\Core\Login; use Galette\Entity\Social; use Throwable; use Galette\DynamicFields\DynamicField; @@ -1760,11 +1761,12 @@ class Members * Get members list to instanciate dropdowns * * @param Db $zdb Database instance + * @param Login $login Login instance * @param integer $current Current member * * @return array */ - public function getSelectizedMembers(Db $zdb, $current = null) + public function getSelectizedMembers(Db $zdb, Login $login, $current = null) { $members = []; $required_fields = array( @@ -1773,7 +1775,13 @@ class Members 'prenom_adh', 'pseudo_adh' ); - $list_members = $this->getList(false, $required_fields); + + $list_members = []; + if ($login->isAdmin() || $login->isStaff()) { + $list_members = $this->getList(false, $required_fields); + } elseif ($login->isGroupManager()) { + $list_members = $this->getManagedMembersList(false, $required_fields); + } if (count($list_members) > 0) { foreach ($list_members as $member) { -- 2.39.2