Issue #1987894 by ParisLiakos, vijaycs85: Convert user_logout() to a new style controller.
parent
f94711cd56
commit
e21c1a135f
|
@ -0,0 +1,33 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Contains \Drupal\user\Access\LoginStatusCheck.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Drupal\user\Access;
|
||||||
|
|
||||||
|
use Drupal\Core\Access\AccessCheckInterface;
|
||||||
|
use Symfony\Component\Routing\Route;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines access to routes based on login status of current user.
|
||||||
|
*/
|
||||||
|
class LoginStatusCheck implements AccessCheckInterface {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function applies(Route $route) {
|
||||||
|
return array_key_exists('_user_is_logged_in', $route->getRequirements());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function access(Route $route, Request $request) {
|
||||||
|
return (bool) $GLOBALS['user']->uid;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -2,15 +2,16 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file
|
* @file
|
||||||
* Contains \Drupal\user\UserAutocompleteController.
|
* Contains \Drupal\user\Controller\UserAutocompleteController.
|
||||||
*/
|
*/
|
||||||
namespace Drupal\user;
|
namespace Drupal\user\Controller;
|
||||||
|
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||||
|
|
||||||
use Drupal\Core\ControllerInterface;
|
use Drupal\Core\ControllerInterface;
|
||||||
|
use Drupal\user\UserAutocomplete;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controller routines for taxonomy user routes.
|
* Controller routines for taxonomy user routes.
|
||||||
|
@ -79,4 +80,3 @@ class UserAutocompleteController implements ControllerInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Contains \Drupal\user\Controller\UserController.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Drupal\user\Controller;
|
||||||
|
|
||||||
|
use Symfony\Component\DependencyInjection\ContainerInterface;
|
||||||
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||||
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Drupal\Core\ControllerInterface;
|
||||||
|
use Drupal\Core\Extension\ModuleHandlerInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controller routines for user routes.
|
||||||
|
*/
|
||||||
|
class UserController implements ControllerInterface {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The module handler service.
|
||||||
|
*
|
||||||
|
* @var \Drupal\Core\Extension\ModuleHandlerInterface
|
||||||
|
*/
|
||||||
|
protected $moduleHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs an UserController object.
|
||||||
|
*
|
||||||
|
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
|
||||||
|
* The module handler service.
|
||||||
|
*/
|
||||||
|
public function __construct(ModuleHandlerInterface $module_handler) {
|
||||||
|
$this->moduleHandler = $module_handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public static function create(ContainerInterface $container) {
|
||||||
|
return new static(
|
||||||
|
$container->get('module_handler')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs the current user out.
|
||||||
|
*
|
||||||
|
* @param \Symfony\Component\HttpFoundation\Request $request
|
||||||
|
* The current request.
|
||||||
|
*
|
||||||
|
* @return \Symfony\Component\HttpFoundation\RedirectResponse
|
||||||
|
* A redirection to home page.
|
||||||
|
*/
|
||||||
|
public function logout(Request $request) {
|
||||||
|
global $user;
|
||||||
|
|
||||||
|
watchdog('user', 'Session closed for %name.', array('%name' => $user->name));
|
||||||
|
$this->moduleHandler->invokeAll('user_logout', array($user));
|
||||||
|
// Destroy the current session, and reset $user to the anonymous user.
|
||||||
|
session_destroy();
|
||||||
|
// @todo Remove the destination check once drupal.org/node/1668866 is in.
|
||||||
|
$url = $request->query->get('destination') ?: '<front>';
|
||||||
|
return new RedirectResponse(url($url, array('absolute' => TRUE)));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -906,11 +906,9 @@ function user_menu() {
|
||||||
|
|
||||||
$items['user/logout'] = array(
|
$items['user/logout'] = array(
|
||||||
'title' => 'Log out',
|
'title' => 'Log out',
|
||||||
'access callback' => 'user_is_logged_in',
|
'route_name' => 'user_logout',
|
||||||
'page callback' => 'user_logout',
|
|
||||||
'weight' => 10,
|
'weight' => 10,
|
||||||
'menu_name' => 'account',
|
'menu_name' => 'account',
|
||||||
'file' => 'user.pages.inc',
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// User listing pages.
|
// User listing pages.
|
||||||
|
|
|
@ -164,7 +164,7 @@ function user_pass_reset($form, &$form_state, $uid, $timestamp, $hashed_pass, $a
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Menu callback; logs the current user out, and redirects to the home page.
|
* Logs the current user out, and redirects to the home page.
|
||||||
*/
|
*/
|
||||||
function user_logout() {
|
function user_logout() {
|
||||||
global $user;
|
global $user;
|
||||||
|
|
|
@ -5,17 +5,24 @@ user_register:
|
||||||
requirements:
|
requirements:
|
||||||
_access_user_register: 'TRUE'
|
_access_user_register: 'TRUE'
|
||||||
|
|
||||||
|
user_logout:
|
||||||
|
pattern: '/user/logout'
|
||||||
|
defaults:
|
||||||
|
_controller: '\Drupal\user\Controller\UserController::logout'
|
||||||
|
requirements:
|
||||||
|
_user_is_logged_in: 'TRUE'
|
||||||
|
|
||||||
user_autocomplete:
|
user_autocomplete:
|
||||||
pattern: '/user/autocomplete'
|
pattern: '/user/autocomplete'
|
||||||
defaults:
|
defaults:
|
||||||
_controller: '\Drupal\user\UserAutocompleteController::autocompleteUser'
|
_controller: '\Drupal\user\Controller\UserAutocompleteController::autocompleteUser'
|
||||||
requirements:
|
requirements:
|
||||||
_permission: 'access user profiles'
|
_permission: 'access user profiles'
|
||||||
|
|
||||||
user_autocomplete_anonymous:
|
user_autocomplete_anonymous:
|
||||||
pattern: '/user/autocomplete/anonymous'
|
pattern: '/user/autocomplete/anonymous'
|
||||||
defaults:
|
defaults:
|
||||||
_controller: '\Drupal\user\UserAutocompleteController::autocompleteUserAnonymous'
|
_controller: '\Drupal\user\Controller\UserAutocompleteController::autocompleteUserAnonymous'
|
||||||
requirements:
|
requirements:
|
||||||
_permission: 'access user profiles'
|
_permission: 'access user profiles'
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,10 @@ services:
|
||||||
class: Drupal\user\Access\RoleAccessCheck
|
class: Drupal\user\Access\RoleAccessCheck
|
||||||
tags:
|
tags:
|
||||||
- { name: access_check }
|
- { name: access_check }
|
||||||
|
access_check.user.login_status:
|
||||||
|
class: Drupal\user\Access\LoginStatusCheck
|
||||||
|
tags:
|
||||||
|
- { name: access_check }
|
||||||
user.data:
|
user.data:
|
||||||
class: Drupal\user\UserData
|
class: Drupal\user\UserData
|
||||||
arguments: ['@database']
|
arguments: ['@database']
|
||||||
|
|
Loading…
Reference in New Issue