diff --git a/core/modules/tracker/lib/Drupal/tracker/Access/UserTrackerAccessCheck.php b/core/modules/tracker/lib/Drupal/tracker/Access/UserTrackerAccessCheck.php new file mode 100644 index 0000000..c53d293 --- /dev/null +++ b/core/modules/tracker/lib/Drupal/tracker/Access/UserTrackerAccessCheck.php @@ -0,0 +1,36 @@ +getRequirements()); + } + + /** + * Implements AccessCheckInterface::access(). + */ + public function access(Route $route, Request $request) { + // The user object from the User ID in the path. + $account = $request->attributes->get('user'); + $user = \Drupal::currentUser(); + return $user->hasPermission('access content') && $account->access('view', $user); + } +} + diff --git a/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php b/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php new file mode 100644 index 0000000..1bc288b --- /dev/null +++ b/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php @@ -0,0 +1,36 @@ +getRequirements()); + } + + /** + * Implements AccessCheckInterface::access(). + */ + public function access(Route $route, Request $request) { + // The user object from the User ID in the path. + $account = $request->attributes->get('user'); + $user = \Drupal::currentUser(); + return $user->isAuthenticated() && ($user->id() == $account->id()) && $user->hasPermission('access content'); + } +} + diff --git a/core/modules/tracker/lib/Drupal/tracker/Controller/TrackerPage.php b/core/modules/tracker/lib/Drupal/tracker/Controller/TrackerPage.php new file mode 100644 index 0000000..eab9494 --- /dev/null +++ b/core/modules/tracker/lib/Drupal/tracker/Controller/TrackerPage.php @@ -0,0 +1,17 @@ +currentUserId = $current_user_id; + parent::__construct($configuration, $plugin_id, $plugin_definition, $string_translation, $route_provider); + } + + /** + * {@inheritdoc} + */ + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { + return new static( + $configuration, + $plugin_id, + $plugin_definition, + $container->get('string_translation'), + $container->get('router.route_provider'), + $container->get('current_user')->id() + ); + } + + /** + * {@inheritdoc} + */ + public function getRouteParameters(Request $request) { + return array('user' => $this->currentUserId); + } + +} diff --git a/core/modules/tracker/tracker.local_tasks.yml b/core/modules/tracker/tracker.local_tasks.yml new file mode 100644 index 0000000..b06f342 --- /dev/null +++ b/core/modules/tracker/tracker.local_tasks.yml @@ -0,0 +1,10 @@ +tracker_page_tab: + route_name: tracker.page + title: 'Recent content' + tab_root_id: tracker_page_tab + +tracker_users_recent_tab: + route_name: tracker.users_recent_content + title: 'My recent content' + tab_root_id: tracker_page_tab + class: '\Drupal\tracker\Plugin\Menu\UserTrackerTab' diff --git a/core/modules/tracker/tracker.module b/core/modules/tracker/tracker.module index b17b11f..a3d04aa 100644 --- a/core/modules/tracker/tracker.module +++ b/core/modules/tracker/tracker.module @@ -69,7 +69,7 @@ function tracker_menu() { 'type' => MENU_DEFAULT_LOCAL_TASK, ); - return $items; + return array(); } /** diff --git a/core/modules/tracker/tracker.routing.yml b/core/modules/tracker/tracker.routing.yml new file mode 100644 index 0000000..80716a2 --- /dev/null +++ b/core/modules/tracker/tracker.routing.yml @@ -0,0 +1,23 @@ +tracker.page: + path: '/tracker' + defaults: + _content: '\Drupal\tracker\Controller\TrackerPage::getContent' + _title: 'Recent content' + requirements: + _permission: 'access content' + +tracker.users_recent_content: + path: '/tracker/{user}' + defaults: + _content: '\Drupal\tracker\Controller\TrackerUserRecent::getContent' + _title: 'My recent content' + requirements: + _access_tracker_own_information: 'TRUE' + +tracker.user_tab: + path: '/user/{user}/track' + defaults: + _content: '\Drupal\tracker\Controller\TrackerUserTab::getContent' + _title_callback: '\Drupal\tracker\Controller\TrackerUserTab::getTitle' + requirements: + _access_tracker_user_tab: 'TRUE' diff --git a/core/modules/tracker/tracker.services.yml b/core/modules/tracker/tracker.services.yml new file mode 100644 index 0000000..834eb62 --- /dev/null +++ b/core/modules/tracker/tracker.services.yml @@ -0,0 +1,10 @@ +services: + access_check.tracker.view_own: + class: Drupal\tracker\Access\ViewOwnTrackerAccessCheck + tags: + - { name: access_check } + access_check.tracker.user_tab: + class: Drupal\tracker\Access\UserTrackerAccessCheck + tags: + - { name: access_check } +