From 96e861e7fec1071729ceaf1e2c55c36ddd60705a Mon Sep 17 00:00:00 2001 From: Craig Williams Date: Tue, 22 Feb 2022 13:52:53 +0000 Subject: [PATCH] Hide some administration columns for basic organisation users (Fixes #3) --- src/Database/Models/User.php | 24 ++++++++++++++++++++++++ templates/tables/organisations.html.twig | 8 +++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/Database/Models/User.php b/src/Database/Models/User.php index b0403fa..d58b390 100644 --- a/src/Database/Models/User.php +++ b/src/Database/Models/User.php @@ -68,6 +68,30 @@ class User extends UFUser ->wherePivot('flag_approved', false); } + /** + * Get all organisations this user is and administrator for (including pending) + * + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function adminForOrganisations($excludePending = false) + { + /** @var \UserFrosting\Sprinkle\Core\Util\ClassMapper $classMapper */ + $classMapper = static::$ci->classMapper; + + $query = $this->belongsToMany( + $classMapper->getClassMapping('organisation'), 'organisation_members', 'user_id', 'organisation_id' + ) + ->orderBy('organisations.name', 'asc') + ->withPivot(['flag_admin', 'flag_approved']) + ->wherePivot('flag_admin', true); + + if ($excludePending === true) { + $query = $query->wherePivot('flag_approved', true); + } + + return $query; + } + /** * Delete this member from the database, along with any links to organisations. * diff --git a/templates/tables/organisations.html.twig b/templates/tables/organisations.html.twig index 866a18b..7b8f32b 100644 --- a/templates/tables/organisations.html.twig +++ b/templates/tables/organisations.html.twig @@ -13,13 +13,17 @@ {{translate('ORGANISATION')}} {{translate("DESCRIPTION")}} + {% if hasRole('site-admin') or hasRole('organisations-admin') or (current_user.adminForOrganisations.count > 0) %} {{translate("STATUS")}} + {% endif %} {% if checkAccess('view_organisation_members') %} {{translate("ORGANISATION.MEMBER_COUNT")}} {{translate("ORGANISATION.ADMIN_COUNT")}} {% endif %} {{translate("JOIN")}}/{{translate("LEAVE")}} + {% if hasRole('site-admin') or hasRole('organisations-admin') or (current_user.adminForOrganisations.count > 0) %} {{translate("ACTIONS")}} + {% endif %} @@ -59,6 +63,7 @@ {% endblock %} {% block table_cell_template_status %} + {% if hasRole('site-admin') or hasRole('organisations-admin') or (current_user.adminForOrganisations.count > 0) %} {% verbatim %} {% endverbatim %} + {% endif %} {% endblock %} {% block table_cell_template_memberCount %} @@ -183,7 +189,7 @@ {% endverbatim %} - {% else %} + {% elseif (current_user.adminForOrganisations.count > 0) %} {% verbatim %}