/** * Dispatch actions allowed for not authorized users * * @param ActionInterface $subject * @param \Closure $proceed * @param RequestInterface $request * @return mixed */ public function aroundDispatch(ActionInterface $subject, \Closure $proceed, RequestInterface $request) { $action = strtolower($request->getActionName()); $pattern = '/^(' . implode('|', $this->allowedActions) . ')$/i'; if (!preg_match($pattern, $action)) { if (!$this->session->authenticate()) { $subject->getActionFlag()->set('', ActionInterface::FLAG_NO_DISPATCH, true); } } else { $this->session->setNoReferer(true); } $result = $proceed($request); $this->session->unsNoReferer(false); return $result; }