_request = $request; $this->_router = $request->getRouter(); } // // Implement template methods from AuthorizationPolicy // /** * @see AuthorizationPolicy::applies() */ public function applies(): bool { $context = $this->_router->getContext($this->_request); return $context?->getData('restrictSiteAccess') ?? false; } /** * @see AuthorizationPolicy::effect() */ public function effect(): int { $page = $this->_router instanceof PKPPageRouter ? $this->_router->getRequestedPage($this->_request) : null; return Validation::isLoggedIn() || in_array($page, $this->_getLoginExemptions()) ? AuthorizationPolicy::AUTHORIZATION_PERMIT : AuthorizationPolicy::AUTHORIZATION_DENY; } // // Private helper method // /** * Return the pages that can be accessed * even while in restricted site mode. */ private function _getLoginExemptions(): array { $exemptions = ['user', 'login', 'help', 'header', 'sidebar', 'payment']; Hook::call('RestrictedSiteAccessPolicy::_getLoginExemptions', [[&$exemptions]]); return $exemptions; } } if (!PKP_STRICT_MODE) { class_alias('\PKP\security\authorization\RestrictedSiteAccessPolicy', '\RestrictedSiteAccessPolicy'); }