কার্নেল এভেন্টস :: রিকুয়েস্ট সাবস্ক্রাইব করে একটি কাস্টম মডিউলে ইভেন্ট গ্রাহকের সাথে আপনি খুব শীঘ্রই ব্যবহারকারীর স্ট্যাটাসটি পরীক্ষা করতে পারেন।
প্রথমত, আপনি ইভেন্টের গ্রাহককে mymodule.services.yml
আপনার মডিউল ফোল্ডারে নিবন্ধন করুন:
services:
mymodule.event_subscriber:
class: Drupal\mymodule\EventSubscriber\RedirectAnonymousSubscriber
arguments: []
tags:
- {name: event_subscriber}
তারপরে ফোল্ডারে RedirectAnonymousSubscriber.php
আপনার মডিউলে আপনার কাস্টম ইভেন্টের গ্রাহকের জন্য যুক্ত করুন /src/EventSubscriber/
।
namespace Drupal\mymodule\EventSubscriber;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Event subscriber subscribing to KernelEvents::REQUEST.
*/
class RedirectAnonymousSubscriber implements EventSubscriberInterface {
public function __construct() {
$this->account = \Drupal::currentUser();
}
public function checkAuthStatus(GetResponseEvent $event) {
if ($this->account->isAnonymous() && \Drupal::routeMatch()->getRouteName() != 'user.login') {
// add logic to check other routes you want available to anonymous users,
// otherwise, redirect to login page.
$route_name = \Drupal::routeMatch()->getRouteName();
if (strpos($route_name, 'view') === 0 && strpos($route_name, 'rest_') !== FALSE) {
return;
}
$response = new RedirectResponse('/user/login', 301);
$event->setResponse($response);
$event->stopPropagation();
}
}
public static function getSubscribedEvents() {
$events[KernelEvents::REQUEST][] = array('checkAuthStatus');
return $events;
}
}
KernelEvents::REQUEST
এবং তারপরে লগইন পৃষ্ঠার জন্য একটি রিডাইরেক্টরেসপনসে প্রতিক্রিয়া সেট করবেন।