/** * Used to set a session variable that can be used to output messages in the view. * * In your controller: $this->Flash->set('flash-name', 'Fragment/Flash/success', ['message' => "my message"]); * * @param string $name Flash message name * @param string $fragment The fragment used to render the flash message * @param array $params An array of variables to make available when using an fragment * @return void */ public function set(string $name, string $fragment, array $params = []) { $session = Session::getInstance(); $flashStack = $session->get('FlashStack'); $flashStack[$name] = ["fragment" => $fragment, "params" => $params]; $session->set('FlashStack', $flashStack); }
public function flashMessages($names = []) { $names = (array) $names; $session = Session::getInstance(); if (!$session->has("FlashStack")) { return []; } $flashStack = $session->get("FlashStack"); if (!is_array($flashStack)) { throw new UnexpectedValueException('Value for flash stack must be an array.'); } $flashMessages = []; if (empty($names)) { $names = array_keys($flashStack); } foreach ($names as $name) { if (isset($flashStack[$name])) { $flashMessages[$name] = $flashStack[$name]; unset($flashStack[$name]); } } if (empty($flashStack)) { $session->delete("FlashStack"); } else { $session->set("FlashStack", $flashStack); } return $flashMessages; }
/** * Return current User * * @return \CoreTyson\Auth\User | null */ public function getUser() { $session = Session::getInstance(); if ($this->_user == null and $session->has("Auth/user")) { $this->_user = $session->get("Auth/user"); } return $this->_user; }
/** * Handle an incoming request. * * @param Request $request * @param \Closure $next * @return Response */ public function handle(Request $request, Closure $next) : Response { $result = $this->_sentinel->authenticateFromRequest($request); if ($result instanceof User) { $this->_setUser($result); } if (!$this->_isAllowed($request->param('action'))) { if (!$this->isAuthenticated()) { Session::getInstance()->set("Auth/redirect", $request->url); if ($request->is('ajax')) { $response = new Response(); $response->statusCode(401); return $response; } else { return Response::redirect(Configuration::getInstance()->get("Auth/loginUrl", "/")); } } if (!$this->_sentinel->isAuthorized($result, $request)) { if ($request->is('ajax')) { $response = new Response(); $response->statusCode(403); return $response; } else { return Response::redirect($request->referer()); } } } return $next($request); }