Loading session_inspector.routing.yml +10 −10 Original line number Diff line number Diff line Loading @@ -11,10 +11,18 @@ session_inspector.manage: type: entity:user _admin_route: TRUE session_inspector.config: path: '/admin/config/people/session_inspector' defaults: _form: '\Drupal\session_inspector\Form\SessionInspectorConfigForm' _title: 'Session Inspector Configuration' requirements: _permission: 'administer session inspector configuration' session_inspector.delete: path: '/user/{user}/sessions/{sid}/delete' defaults: _form: '\Drupal\session_inspector\Form\UserSessionDeleteForm' _form: '\Drupal\session_inspector\Form\DeleteSessionForm' _title: 'Delete session' requirements: _session_inspector_access_check: 'TRUE' Loading @@ -24,16 +32,8 @@ session_inspector.delete: type: entity:user _admin_route: TRUE session_inspector.config: path: '/admin/config/people/session_inspector' defaults: _form: '\Drupal\session_inspector\Form\SessionInspectorConfigForm' _title: 'Session Inspector Configuration' requirements: _permission: 'administer session inspector configuration' session_inspector.delete_all: path: '/user/{user}/sessions/{sid}/delete-all' path: '/user/{user}/sessions/delete-all' defaults: _form: '\Drupal\session_inspector\Form\DeleteAllSessionsForm' _title: 'Delete all active sessions' Loading session_inspector.services.yml +3 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,6 @@ services: class: Drupal\session_inspector\Plugin\HostnameFormatManager parent: default_plugin_manager session_inspector.delete_all_sessions: class: Drupal\session_inspector\SessionInspectorDeleteAllSessions arguments: ['@entity_type.manager', '@session_inspector', '@database'] session_inspector.session_deletion: class: Drupal\session_inspector\SessionDeletion arguments: ['@entity_type.manager', '@session_inspector', '@database', '@event_dispatcher'] src/Controller/UserSessionInspector.php +18 −32 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Drupal\session_inspector\Controller; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Link; use Drupal\Core\Url; use Drupal\session_inspector\Plugin\BrowserFormatManager; use Drupal\session_inspector\Plugin\HostnameFormatManager; use Drupal\session_inspector\SessionInspectorInterface; Loading Loading @@ -106,6 +107,8 @@ class UserSessionInspector extends ControllerBase { * The renderable array for the page output. */ public function inspectSessionPage(UserInterface $user) { $build = []; $config = $this->configFactory->get($this->configName); $sessions = $this->sessionInspector->getSessions($user); Loading Loading @@ -143,16 +146,6 @@ class UserSessionInspector extends ControllerBase { ], ]; } $rows[] = [ $this->t('Delete all active sessions listed, except the current session'), NULL, NULL, NULL, [ 'data' => $this->deleteAllSessionsLink($user, $session['sid']), 'data-test' => ['session-operation'], ], ]; } $sessionsTable = [ Loading @@ -172,11 +165,25 @@ class UserSessionInspector extends ControllerBase { ], ]; return [ $build['session_table'] = [ '#theme' => 'sessions', '#description' => $this->t('Here is a list of sessions registered to your user account'), '#sessions' => $sessionsTable, ]; $build['delete_all_sessions_link'] = [ '#type' => 'link', '#url' => Url::fromRoute('session_inspector.delete_all', ['user' => $user->id()]), '#title' => $this->t('Delete all sessions'), '#attributes' => [ 'class' => [ 'button', 'button--danger', ], ], ]; return $build; } /** Loading Loading @@ -226,25 +233,4 @@ class UserSessionInspector extends ControllerBase { return $linkObject->toRenderable(); } /** * Create a delete all sessions link. * * Given a user object to create a delete all sessions link for the * sessions table. * * @param \Drupal\user\UserInterface $user * The current user. * @param string $sessionId * The session ID. * * @return array * The link as a render array. */ public function deleteAllSessionsLink(UserInterface $user, string $sessionId) { $options = ['user' => $user->id(), 'sid' => $sessionId]; $linkObject = Link::createFromRoute('Delete all sessions', 'session_inspector.delete_all', $options); return $linkObject->toRenderable(); } } src/Form/DeleteAllSessionsForm.php +8 −16 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ namespace Drupal\session_inspector\Form; use Drupal\Core\Form\ConfirmFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface; use Drupal\session_inspector\SessionDeletionInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** Loading @@ -22,36 +22,28 @@ class DeleteAllSessionsForm extends ConfirmFormBase { */ protected $user; /** * The session ID. * * @var string */ protected $sessionId; /** * The session inspector delete all sessions service. * * @var \Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface * @var \Drupal\session_inspector\SessionDeletionInterface */ protected $deleteAllSessionsService; /** * Constructs a DeleteAllSessionsForm object. * * @param \Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface $deleteAllSessionsService * @param \Drupal\session_inspector\SessionDeletionInterface $deleteAllSessionsService * The session inspector delete all sessions service. */ public function __construct(SessionInspectorDeleteAllSessionsInterface $deleteAllSessionsService) { public function __construct(SessionDeletionInterface $deleteAllSessionsService) { $this->deleteAllSessionsService = $deleteAllSessionsService; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state, $user = NULL, $sid = NULL) { public function buildForm(array $form, FormStateInterface $form_state, $user = NULL) { $this->user = $user; $this->sessionId = $sid; return parent::buildForm($form, $form_state); } Loading @@ -60,7 +52,7 @@ class DeleteAllSessionsForm extends ConfirmFormBase { */ public static function create(ContainerInterface $container) { return new static( $container->get('session_inspector.delete_all_sessions') $container->get('session_inspector.session_deletion') ); } Loading @@ -75,7 +67,7 @@ class DeleteAllSessionsForm extends ConfirmFormBase { * {@inheritDoc} */ public function getDescription() { return $this->t('This action will delete all active sessions and cannot be undone.'); return $this->t('This action will delete all other active sessions and cannot be undone.'); } /** Loading @@ -96,7 +88,7 @@ class DeleteAllSessionsForm extends ConfirmFormBase { * {@inheritDoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $this->deleteAllSessionsService->deleteAllSessions($this->user, $this->sessionId); $this->deleteAllSessionsService->deleteAllSessions($this->user); $form_state->setRedirectUrl($this->getCancelUrl()); } Loading src/Form/UserSessionDeleteForm.php→src/Form/DeleteSessionForm.php +8 −26 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\session_inspector\Event\SessionEvent; use Drupal\session_inspector\Event\SessionInspectorEvents; use Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface; use Drupal\session_inspector\SessionDeletionInterface; use Drupal\session_inspector\SessionInspectorInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; Loading @@ -17,7 +17,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface; * * @package Drupal\session_inspector\Form */ class UserSessionDeleteForm extends ConfirmFormBase { class DeleteSessionForm extends ConfirmFormBase { /** * The user Id. Loading @@ -40,33 +40,23 @@ class UserSessionDeleteForm extends ConfirmFormBase { */ protected $sessionInspector; /** * The event dispatcher. * * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface */ protected $eventDispatcher; /** * The session inspector delete all sessions service. * * @var \Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface * @var \Drupal\session_inspector\SessionDeletionInterface */ protected $deleteAllSessionsService; /** * Constructs a UserSessionDeleteForm object. * Constructs a DeleteSessionForm object. * * @param \Drupal\session_inspector\SessionInspectorInterface $session_inspector * The SessionInspector service. * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher * The event dispatcher. * @param \Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface $deleteAllSessionsService * @param \Drupal\session_inspector\SessionDeletionInterface $deleteAllSessionsService * The session delete interface. */ public function __construct(SessionInspectorInterface $session_inspector, EventDispatcherInterface $event_dispatcher, SessionInspectorDeleteAllSessionsInterface $deleteAllSessionsService) { public function __construct(SessionInspectorInterface $session_inspector, SessionDeletionInterface $deleteAllSessionsService) { $this->sessionInspector = $session_inspector; $this->eventDispatcher = $event_dispatcher; $this->deleteAllSessionsService = $deleteAllSessionsService; } Loading @@ -85,8 +75,7 @@ class UserSessionDeleteForm extends ConfirmFormBase { public static function create(ContainerInterface $container) { return new static( $container->get('session_inspector'), $container->get('event_dispatcher'), $container->get('session_inspector.delete_all_sessions') $container->get('session_inspector.session_deletion') ); } Loading Loading @@ -122,15 +111,8 @@ class UserSessionDeleteForm extends ConfirmFormBase { * {@inheritDoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { // Get the session data we are about to delete. $sessionData = $this->sessionInspector->getSession($this->sessionId); $sessionEvent = new SessionEvent($sessionData['uid'], $sessionData['sid'], $sessionData['hostname'], $sessionData['timestamp']); // Destroy the session. $this->deleteAllSessionsService->destroySession($this->sessionId); // Trigger the session event. $this->eventDispatcher->dispatch($sessionEvent, SessionInspectorEvents::SESSION_DESTROYED); $this->deleteAllSessionsService->deleteSession($this->sessionId); // Redirect the user back to the session list. $form_state->setRedirectUrl($this->getCancelUrl()); Loading Loading
session_inspector.routing.yml +10 −10 Original line number Diff line number Diff line Loading @@ -11,10 +11,18 @@ session_inspector.manage: type: entity:user _admin_route: TRUE session_inspector.config: path: '/admin/config/people/session_inspector' defaults: _form: '\Drupal\session_inspector\Form\SessionInspectorConfigForm' _title: 'Session Inspector Configuration' requirements: _permission: 'administer session inspector configuration' session_inspector.delete: path: '/user/{user}/sessions/{sid}/delete' defaults: _form: '\Drupal\session_inspector\Form\UserSessionDeleteForm' _form: '\Drupal\session_inspector\Form\DeleteSessionForm' _title: 'Delete session' requirements: _session_inspector_access_check: 'TRUE' Loading @@ -24,16 +32,8 @@ session_inspector.delete: type: entity:user _admin_route: TRUE session_inspector.config: path: '/admin/config/people/session_inspector' defaults: _form: '\Drupal\session_inspector\Form\SessionInspectorConfigForm' _title: 'Session Inspector Configuration' requirements: _permission: 'administer session inspector configuration' session_inspector.delete_all: path: '/user/{user}/sessions/{sid}/delete-all' path: '/user/{user}/sessions/delete-all' defaults: _form: '\Drupal\session_inspector\Form\DeleteAllSessionsForm' _title: 'Delete all active sessions' Loading
session_inspector.services.yml +3 −3 Original line number Diff line number Diff line Loading @@ -16,6 +16,6 @@ services: class: Drupal\session_inspector\Plugin\HostnameFormatManager parent: default_plugin_manager session_inspector.delete_all_sessions: class: Drupal\session_inspector\SessionInspectorDeleteAllSessions arguments: ['@entity_type.manager', '@session_inspector', '@database'] session_inspector.session_deletion: class: Drupal\session_inspector\SessionDeletion arguments: ['@entity_type.manager', '@session_inspector', '@database', '@event_dispatcher']
src/Controller/UserSessionInspector.php +18 −32 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ namespace Drupal\session_inspector\Controller; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Controller\ControllerBase; use Drupal\Core\Link; use Drupal\Core\Url; use Drupal\session_inspector\Plugin\BrowserFormatManager; use Drupal\session_inspector\Plugin\HostnameFormatManager; use Drupal\session_inspector\SessionInspectorInterface; Loading Loading @@ -106,6 +107,8 @@ class UserSessionInspector extends ControllerBase { * The renderable array for the page output. */ public function inspectSessionPage(UserInterface $user) { $build = []; $config = $this->configFactory->get($this->configName); $sessions = $this->sessionInspector->getSessions($user); Loading Loading @@ -143,16 +146,6 @@ class UserSessionInspector extends ControllerBase { ], ]; } $rows[] = [ $this->t('Delete all active sessions listed, except the current session'), NULL, NULL, NULL, [ 'data' => $this->deleteAllSessionsLink($user, $session['sid']), 'data-test' => ['session-operation'], ], ]; } $sessionsTable = [ Loading @@ -172,11 +165,25 @@ class UserSessionInspector extends ControllerBase { ], ]; return [ $build['session_table'] = [ '#theme' => 'sessions', '#description' => $this->t('Here is a list of sessions registered to your user account'), '#sessions' => $sessionsTable, ]; $build['delete_all_sessions_link'] = [ '#type' => 'link', '#url' => Url::fromRoute('session_inspector.delete_all', ['user' => $user->id()]), '#title' => $this->t('Delete all sessions'), '#attributes' => [ 'class' => [ 'button', 'button--danger', ], ], ]; return $build; } /** Loading Loading @@ -226,25 +233,4 @@ class UserSessionInspector extends ControllerBase { return $linkObject->toRenderable(); } /** * Create a delete all sessions link. * * Given a user object to create a delete all sessions link for the * sessions table. * * @param \Drupal\user\UserInterface $user * The current user. * @param string $sessionId * The session ID. * * @return array * The link as a render array. */ public function deleteAllSessionsLink(UserInterface $user, string $sessionId) { $options = ['user' => $user->id(), 'sid' => $sessionId]; $linkObject = Link::createFromRoute('Delete all sessions', 'session_inspector.delete_all', $options); return $linkObject->toRenderable(); } }
src/Form/DeleteAllSessionsForm.php +8 −16 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ namespace Drupal\session_inspector\Form; use Drupal\Core\Form\ConfirmFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface; use Drupal\session_inspector\SessionDeletionInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** Loading @@ -22,36 +22,28 @@ class DeleteAllSessionsForm extends ConfirmFormBase { */ protected $user; /** * The session ID. * * @var string */ protected $sessionId; /** * The session inspector delete all sessions service. * * @var \Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface * @var \Drupal\session_inspector\SessionDeletionInterface */ protected $deleteAllSessionsService; /** * Constructs a DeleteAllSessionsForm object. * * @param \Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface $deleteAllSessionsService * @param \Drupal\session_inspector\SessionDeletionInterface $deleteAllSessionsService * The session inspector delete all sessions service. */ public function __construct(SessionInspectorDeleteAllSessionsInterface $deleteAllSessionsService) { public function __construct(SessionDeletionInterface $deleteAllSessionsService) { $this->deleteAllSessionsService = $deleteAllSessionsService; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state, $user = NULL, $sid = NULL) { public function buildForm(array $form, FormStateInterface $form_state, $user = NULL) { $this->user = $user; $this->sessionId = $sid; return parent::buildForm($form, $form_state); } Loading @@ -60,7 +52,7 @@ class DeleteAllSessionsForm extends ConfirmFormBase { */ public static function create(ContainerInterface $container) { return new static( $container->get('session_inspector.delete_all_sessions') $container->get('session_inspector.session_deletion') ); } Loading @@ -75,7 +67,7 @@ class DeleteAllSessionsForm extends ConfirmFormBase { * {@inheritDoc} */ public function getDescription() { return $this->t('This action will delete all active sessions and cannot be undone.'); return $this->t('This action will delete all other active sessions and cannot be undone.'); } /** Loading @@ -96,7 +88,7 @@ class DeleteAllSessionsForm extends ConfirmFormBase { * {@inheritDoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $this->deleteAllSessionsService->deleteAllSessions($this->user, $this->sessionId); $this->deleteAllSessionsService->deleteAllSessions($this->user); $form_state->setRedirectUrl($this->getCancelUrl()); } Loading
src/Form/UserSessionDeleteForm.php→src/Form/DeleteSessionForm.php +8 −26 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Url; use Drupal\session_inspector\Event\SessionEvent; use Drupal\session_inspector\Event\SessionInspectorEvents; use Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface; use Drupal\session_inspector\SessionDeletionInterface; use Drupal\session_inspector\SessionInspectorInterface; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface; Loading @@ -17,7 +17,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface; * * @package Drupal\session_inspector\Form */ class UserSessionDeleteForm extends ConfirmFormBase { class DeleteSessionForm extends ConfirmFormBase { /** * The user Id. Loading @@ -40,33 +40,23 @@ class UserSessionDeleteForm extends ConfirmFormBase { */ protected $sessionInspector; /** * The event dispatcher. * * @var \Symfony\Component\EventDispatcher\EventDispatcherInterface */ protected $eventDispatcher; /** * The session inspector delete all sessions service. * * @var \Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface * @var \Drupal\session_inspector\SessionDeletionInterface */ protected $deleteAllSessionsService; /** * Constructs a UserSessionDeleteForm object. * Constructs a DeleteSessionForm object. * * @param \Drupal\session_inspector\SessionInspectorInterface $session_inspector * The SessionInspector service. * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $event_dispatcher * The event dispatcher. * @param \Drupal\session_inspector\SessionInspectorDeleteAllSessionsInterface $deleteAllSessionsService * @param \Drupal\session_inspector\SessionDeletionInterface $deleteAllSessionsService * The session delete interface. */ public function __construct(SessionInspectorInterface $session_inspector, EventDispatcherInterface $event_dispatcher, SessionInspectorDeleteAllSessionsInterface $deleteAllSessionsService) { public function __construct(SessionInspectorInterface $session_inspector, SessionDeletionInterface $deleteAllSessionsService) { $this->sessionInspector = $session_inspector; $this->eventDispatcher = $event_dispatcher; $this->deleteAllSessionsService = $deleteAllSessionsService; } Loading @@ -85,8 +75,7 @@ class UserSessionDeleteForm extends ConfirmFormBase { public static function create(ContainerInterface $container) { return new static( $container->get('session_inspector'), $container->get('event_dispatcher'), $container->get('session_inspector.delete_all_sessions') $container->get('session_inspector.session_deletion') ); } Loading Loading @@ -122,15 +111,8 @@ class UserSessionDeleteForm extends ConfirmFormBase { * {@inheritDoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { // Get the session data we are about to delete. $sessionData = $this->sessionInspector->getSession($this->sessionId); $sessionEvent = new SessionEvent($sessionData['uid'], $sessionData['sid'], $sessionData['hostname'], $sessionData['timestamp']); // Destroy the session. $this->deleteAllSessionsService->destroySession($this->sessionId); // Trigger the session event. $this->eventDispatcher->dispatch($sessionEvent, SessionInspectorEvents::SESSION_DESTROYED); $this->deleteAllSessionsService->deleteSession($this->sessionId); // Redirect the user back to the session list. $form_state->setRedirectUrl($this->getCancelUrl()); Loading