diff --git a/config/install/moderation_dashboard.settings.yml b/config/install/moderation_dashboard.settings.yml new file mode 100644 index 0000000..226aeb3 --- /dev/null +++ b/config/install/moderation_dashboard.settings.yml @@ -0,0 +1 @@ +redirect_on_login: true diff --git a/config/schema/moderation_dashboard.schema.yml b/config/schema/moderation_dashboard.schema.yml index 1d750be..5d28eeb 100644 --- a/config/schema/moderation_dashboard.schema.yml +++ b/config/schema/moderation_dashboard.schema.yml @@ -3,3 +3,11 @@ condition.plugin.moderation_dashboard_access: condition.plugin.has_moderated_content_type: type: condition.plugin + +moderation_dashboard.settings: + type: config_object + label: 'Moderation dashboard settings' + mapping: + redirect_on_login: + type: boolean + label: 'Redirect to moderation dashboard after login' diff --git a/moderation_dashboard.services.yml b/moderation_dashboard.services.yml index 785c7a1..12b8dd6 100644 --- a/moderation_dashboard.services.yml +++ b/moderation_dashboard.services.yml @@ -3,4 +3,4 @@ services: class: Drupal\moderation_dashboard\Routing\ResponseSubscriber tags: - { name: event_subscriber } - arguments: ['@current_user', '@plugin.manager.condition'] + arguments: ['@current_user', '@plugin.manager.condition', '@config.factory'] diff --git a/src/Routing/ResponseSubscriber.php b/src/Routing/ResponseSubscriber.php index 3b22675..431a6dd 100644 --- a/src/Routing/ResponseSubscriber.php +++ b/src/Routing/ResponseSubscriber.php @@ -3,6 +3,7 @@ namespace Drupal\moderation_dashboard\Routing; use Drupal\Core\Condition\ConditionManager; +use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Session\AccountProxyInterface; use Drupal\Core\Url; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -29,6 +30,8 @@ class ResponseSubscriber implements EventSubscriberInterface { */ protected $conditionManager; + protected $configFactory; + /** * ResponseSubscriber constructor. * @@ -37,9 +40,10 @@ class ResponseSubscriber implements EventSubscriberInterface { * @param \Drupal\Core\Condition\ConditionManager $condition_manager * The condition plugin manager. */ - public function __construct(AccountProxyInterface $current_user, ConditionManager $condition_manager) { + public function __construct(AccountProxyInterface $current_user, ConditionManager $condition_manager, ConfigFactoryInterface $config_factory) { $this->currentUser = $current_user; $this->conditionManager = $condition_manager; + $this->configFactory = $config_factory; } /** @@ -52,7 +56,11 @@ class ResponseSubscriber implements EventSubscriberInterface { $response = $event->getResponse(); $request = $event->getRequest(); - if ($response instanceof RedirectResponse) { + $should_redirect = $this->configFactory + ->get('moderation_dashboard.settings') + ->get('redirect_on_login'); + + if ($should_redirect && $response instanceof RedirectResponse) { $is_login = $request->request->get('form_id') === 'user_login_form'; $has_permission = $this->currentUser->hasPermission('use moderation dashboard'); $has_moderated_content_type = $this->conditionManager->createInstance('has_moderated_content_type')->execute();