check()) { session()->set('redirect_url', current_url()); return redirect('login'); } helper('misc'); $authorize = Services::authorization(); $router = Services::router(); $routerParams = $router->params(); $result = false; // Check if user has at least one of the permissions foreach ($params as $permission) { // check if permission is for a specific podcast if ( (str_starts_with($permission, 'podcast-') || str_starts_with($permission, 'podcast_episodes-')) && count($routerParams) > 0 ) { if ( ($groupId = (new PodcastModel())->getContributorGroupId( $authenticate->id(), $routerParams[0], )) && $authorize->groupHasPermission($permission, $groupId) ) { $result = true; break; } } elseif ( $authorize->hasPermission($permission, $authenticate->id()) ) { $result = true; break; } } if (! $result) { if ($authenticate->silent()) { $redirectURL = session('redirect_url') ?? '/'; unset($_SESSION['redirect_url']); return redirect() ->to($redirectURL) ->with('error', lang('Auth.notEnoughPrivilege')); } throw new PermissionException(lang('Auth.notEnoughPrivilege')); } } //-------------------------------------------------------------------- /** * Allows After filters to inspect and modify the response object as needed. This method does not allow any way to * stop execution of other after filters, short of throwing an Exception or Error. * * @param string[]|null $arguments */ public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void { } //-------------------------------------------------------------------- }