Elgg  Version master
PageOwnerGatekeeper.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Router\Middleware;
4 
7 
14 
15  protected \ElggEntity $page_owner;
16 
25  public function __invoke(\Elgg\Request $request): void {
26 
27  $route = $request->getHttpRequest()->getRoute();
28  if (!$route instanceof Route) {
29  return;
30  }
31 
32  // force detection of page owner for legacy routes
33  $route->setDefault('_detect_page_owner', true);
34 
35  $page_owner = $route->resolvePageOwner();
36  if (!$page_owner instanceof \ElggEntity) {
37  throw new EntityNotFoundException();
38  }
39 
40  $this->page_owner = $page_owner;
41  _elgg_services()->pageOwner->setPageOwnerGuid($page_owner->guid);
42 
43  $this->assert($request, $route);
44  }
45 
54  protected function assert(\Elgg\Request $request, Route $route): void {
55  $this->assertPageOwner();
56  }
57 
64  protected function assertPageOwner(): void {
65  if (!empty($this->getType()) && $this->page_owner->getType() !== $this->getType()) {
66  throw new EntityNotFoundException();
67  }
68 
69  if (!empty($this->getSubtype()) && $this->page_owner->getSubtype() !== $this->getType()) {
70  throw new EntityNotFoundException();
71  }
72 
73  _elgg_services()->gatekeeper->assertAccessibleEntity($this->page_owner);
74  }
75 
81  protected function getType(): string {
82  return '';
83  }
84 
90  protected function getSubtype(): string {
91  return '';
92  }
93 }
return[ 'admin/delete_admin_notices'=>['access'=> 'admin'], 'admin/menu/save'=>['access'=> 'admin'], 'admin/plugins/activate'=>['access'=> 'admin'], 'admin/plugins/activate_all'=>['access'=> 'admin'], 'admin/plugins/deactivate'=>['access'=> 'admin'], 'admin/plugins/deactivate_all'=>['access'=> 'admin'], 'admin/plugins/set_priority'=>['access'=> 'admin'], 'admin/security/security_txt'=>['access'=> 'admin'], 'admin/security/settings'=>['access'=> 'admin'], 'admin/security/regenerate_site_secret'=>['access'=> 'admin'], 'admin/site/cache/invalidate'=>['access'=> 'admin'], 'admin/site/flush_cache'=>['access'=> 'admin'], 'admin/site/icons'=>['access'=> 'admin'], 'admin/site/set_maintenance_mode'=>['access'=> 'admin'], 'admin/site/set_robots'=>['access'=> 'admin'], 'admin/site/theme'=>['access'=> 'admin'], 'admin/site/unlock_upgrade'=>['access'=> 'admin'], 'admin/site/settings'=>['access'=> 'admin'], 'admin/upgrade'=>['access'=> 'admin'], 'admin/upgrade/reset'=>['access'=> 'admin'], 'admin/user/ban'=>['access'=> 'admin'], 'admin/user/bulk/ban'=>['access'=> 'admin'], 'admin/user/bulk/delete'=>['access'=> 'admin'], 'admin/user/bulk/unban'=>['access'=> 'admin'], 'admin/user/bulk/validate'=>['access'=> 'admin'], 'admin/user/change_email'=>['access'=> 'admin'], 'admin/user/delete'=>['access'=> 'admin'], 'admin/user/login_as'=>['access'=> 'admin'], 'admin/user/logout_as'=>[], 'admin/user/makeadmin'=>['access'=> 'admin'], 'admin/user/resetpassword'=>['access'=> 'admin'], 'admin/user/removeadmin'=>['access'=> 'admin'], 'admin/user/unban'=>['access'=> 'admin'], 'admin/user/validate'=>['access'=> 'admin'], 'annotation/delete'=>[], 'avatar/upload'=>[], 'comment/save'=>[], 'diagnostics/download'=>['access'=> 'admin'], 'entity/chooserestoredestination'=>[], 'entity/delete'=>[], 'entity/mute'=>[], 'entity/restore'=>[], 'entity/subscribe'=>[], 'entity/trash'=>[], 'entity/unmute'=>[], 'entity/unsubscribe'=>[], 'login'=>['access'=> 'logged_out'], 'logout'=>[], 'notifications/mute'=>['access'=> 'public'], 'plugins/settings/remove'=>['access'=> 'admin'], 'plugins/settings/save'=>['access'=> 'admin'], 'plugins/usersettings/save'=>[], 'register'=>['access'=> 'logged_out', 'middleware'=>[\Elgg\Router\Middleware\RegistrationAllowedGatekeeper::class,],], 'river/delete'=>[], 'settings/notifications'=>[], 'settings/notifications/subscriptions'=>[], 'user/changepassword'=>['access'=> 'public'], 'user/requestnewpassword'=>['access'=> 'public'], 'useradd'=>['access'=> 'admin'], 'usersettings/save'=>[], 'widgets/add'=>[], 'widgets/delete'=>[], 'widgets/move'=>[], 'widgets/save'=>[],]
Definition: actions.php:73
Request container.
Definition: Request.php:12
Check if the current route has a page owner entity.
getType()
Returns the type of the page owner to validate.
assert(\Elgg\Request $request, Route $route)
Performs assertions.
__invoke(\Elgg\Request $request)
Validate the current request.
getSubtype()
Returns the subtype of the page owner to validate.
Route Wrapper.
Definition: Route.php:8
_elgg_services()
Get the global service provider.
Definition: elgglib.php:343
$request
Definition: livesearch.php:12
if(parse_url(elgg_get_site_url(), PHP_URL_PATH) !=='/') if(file_exists(elgg_get_root_path() . 'robots.txt'))
Set robots.txt.
Definition: robots.php:10