|
37 | 37 | use Laminas\ServiceManager\ServiceLocatorInterface; |
38 | 38 | use Laminas\View\Renderer\PhpRenderer; |
39 | 39 | use Teams\Mvc\Controller\Plugin\TeamAuth; |
| 40 | +use function Symfony\Component\String\b; |
40 | 41 |
|
41 | 42 | class Module extends AbstractModule |
42 | 43 | { |
@@ -200,6 +201,8 @@ public function handleConfigForm(AbstractController $controller) |
200 | 201 | $globalSettings->set('teams_site_admin_make_site', $params['teams_site_admin_make_site']); |
201 | 202 | $globalSettings->set('teams_editor_make_site', $params['teams_editor_make_site']); |
202 | 203 | $globalSettings->set('teams_site_admin_make_user', $params['teams_site_admin_make_user']); |
| 204 | + $globalSettings->set('teams_filter_bypass_roles', $params['teams_filter_bypass_roles']); |
| 205 | + |
203 | 206 | } |
204 | 207 |
|
205 | 208 | public function getConfigForm(PhpRenderer $renderer) |
@@ -736,8 +739,15 @@ public function teamSelectorNav(Event $event) |
736 | 739 |
|
737 | 740 | public function bypassTeamsSortSelector(Event $event) |
738 | 741 | { |
| 742 | + $globalSettings = $this->getServiceLocator()->get('Omeka\Settings'); |
| 743 | + $roles = $globalSettings->get('teams_filter_bypass_roles'); |
| 744 | + |
| 745 | + if (!is_array($roles)) { |
| 746 | + $roles[] = $roles; |
| 747 | + } |
| 748 | + |
739 | 749 | $user = $this->getUser(); |
740 | | - if ($user && $user->getRole() == 'global_admin'){ |
| 750 | + if ($user && in_array($user->getRole(),$roles) ){ |
741 | 751 | $view = $event->getTarget(); |
742 | 752 | $params = $view->params(); |
743 | 753 | $bypassTeams = $params->fromQuery('bypass_team_filter'); |
@@ -875,9 +885,15 @@ public function filterByTeam(Event $event) |
875 | 885 | //TODO: if is set (search_everywhere) and ACL check passes as global admin, bypass the join |
876 | 886 | //for times when the admin needs to turn off the filter by teams (e.g. when adding resources to a new team) |
877 | 887 |
|
| 888 | + $globalSettings = $this->getServiceLocator()->get('Omeka\Settings'); |
| 889 | + $bypass_teams_filter_roles = $globalSettings->get('teams_filter_bypass_roles'); |
| 890 | + |
| 891 | + if (!is_array($bypass_teams_filter_roles)) { |
| 892 | + $bypass_teams_filter_roles[] = $bypass_teams_filter_roles; |
| 893 | + } |
878 | 894 | if (isset($query['bypass_team_filter']) |
879 | 895 | && $query['bypass_team_filter'] |
880 | | - && $this->getUser()->getRole() == 'global_admin' |
| 896 | + && in_array($this->getUser()->getRole(), $bypass_teams_filter_roles) |
881 | 897 | ) { |
882 | 898 | return; |
883 | 899 | } |
|
0 commit comments