<?php
class AuthPlugin extends Yaf_Plugin_Abstract
{
public function routerShutdown(Yaf_Request_Abstract $request, Yaf_Response_Abstract $response)
{
/* routing is done, so the target controller and action are
* known: check whether the user may access them */
$public = array("Index" => array("index"), "User" => array("login"));
$controller = $request->getControllerName();
$action = $request->getActionName();
if (isset($public[$controller]) && in_array($action, $public[$controller])) {
return;
}
if (!Yaf_Session::getInstance()->has("login")) {
$response->setRedirect("/user/login");
$request->setDispatched(true); // do not dispatch the request
}
}
}
/* plugins are registered in the bootstrap */
class Bootstrap extends Yaf_Bootstrap_Abstract
{
public function _initPlugin(Yaf_Dispatcher $dispatcher)
{
$dispatcher->registerPlugin(new AuthPlugin());
}
}
?>