Integration of auth system
This commit is contained in:
@@ -28,6 +28,10 @@ use Symfony\Component\HttpFoundation\Response;
|
|||||||
|
|
||||||
use Thelia\Form\BaseForm;
|
use Thelia\Form\BaseForm;
|
||||||
use Thelia\Model\ConfigQuery;
|
use Thelia\Model\ConfigQuery;
|
||||||
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||||
|
use Symfony\Component\HttpKernel\HttpKernelInterface;
|
||||||
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
|
use Thelia\Core\Security\Exception\AuthenticationTokenNotFoundException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -41,25 +45,48 @@ use Thelia\Model\ConfigQuery;
|
|||||||
class BaseAdminController extends ContainerAware
|
class BaseAdminController extends ContainerAware
|
||||||
{
|
{
|
||||||
|
|
||||||
|
const TEMPLATE_404 = "404.html";
|
||||||
|
|
||||||
|
public function notFoundAction()
|
||||||
|
{
|
||||||
|
return new Response($this->renderRaw(self::TEMPLATE_404), 404);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $templateName
|
* Render the givent template, and returns the result as an Http Response.
|
||||||
* @param array $args
|
*
|
||||||
|
* @param $templateName the complete template name, with extension
|
||||||
|
* @param array $args the template arguments
|
||||||
* @return \Symfony\Component\HttpFoundation\Response
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
*/
|
*/
|
||||||
public function render($templateName, $args = array())
|
public function render($templateName, $args = array())
|
||||||
{
|
{
|
||||||
$args = array_merge($args, array('lang' => 'fr'));
|
|
||||||
|
|
||||||
$response = new Response();
|
$response = new Response();
|
||||||
|
|
||||||
return $response->setContent($this->renderRaw($templateName, $args));
|
return $response->setContent($this->renderRaw($templateName, $args));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render the givent template, and returns the result as a string.
|
||||||
|
*
|
||||||
|
* @param $templateName the complete template name, with extension
|
||||||
|
* @param array $args the template arguments
|
||||||
|
* @return \Symfony\Component\HttpFoundation\Response
|
||||||
|
*/
|
||||||
public function renderRaw($templateName, $args = array())
|
public function renderRaw($templateName, $args = array())
|
||||||
{
|
{
|
||||||
$args = array_merge($args, array('lang' => 'fr'));
|
$args = array_merge($args, array('lang' => 'fr')); // FIXME
|
||||||
|
|
||||||
return $this->getParser()->render($templateName, $args);
|
try {
|
||||||
|
$data = $this->getParser()->render($templateName, $args);
|
||||||
|
}
|
||||||
|
catch (AuthenticationTokenNotFoundException $ex) {
|
||||||
|
|
||||||
|
// No auth token -> perform login
|
||||||
|
return new RedirectResponse($this->generateUrl('/admin/login'));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,6 +97,10 @@ class BaseAdminController extends ContainerAware
|
|||||||
return $this->container->get('request');
|
return $this->container->get('request');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return a ParserInterface instance parser, as configured.
|
||||||
|
*/
|
||||||
public function getParser()
|
public function getParser()
|
||||||
{
|
{
|
||||||
$parser = $this->container->get("thelia.parser");
|
$parser = $this->container->get("thelia.parser");
|
||||||
@@ -80,13 +111,61 @@ class BaseAdminController extends ContainerAware
|
|||||||
return $parser;
|
return $parser;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFormFactory()
|
protected function getFormFactory()
|
||||||
{
|
{
|
||||||
return BaseForm::getFormFactory($this->getRequest(), ConfigQuery::read("form.secret.admin", md5(__DIR__)));
|
return BaseForm::getFormFactory($this->getRequest(), ConfigQuery::read("form.secret.admin", md5(__DIR__)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getFormBuilder()
|
protected function getFormBuilder()
|
||||||
{
|
{
|
||||||
return $this->getFormFactory()->createBuilder("form");
|
return $this->getFormFactory()->createBuilder("form");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generates a URL from the given parameters.
|
||||||
|
*
|
||||||
|
* @param string $route The name of the route
|
||||||
|
* @param mixed $parameters An array of parameters
|
||||||
|
* @param Boolean|string $referenceType The type of reference (one of the constants in UrlGeneratorInterface)
|
||||||
|
*
|
||||||
|
* @return string The generated URL
|
||||||
|
*
|
||||||
|
* @see UrlGeneratorInterface
|
||||||
|
*/
|
||||||
|
public function generateUrl($route, $parameters = array(), $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
|
||||||
|
{
|
||||||
|
return "$route";
|
||||||
|
|
||||||
|
//return $this->container->get('router')->generate($route, $parameters, $referenceType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forwards the request to another controller.
|
||||||
|
*
|
||||||
|
* @param string $controller The controller name (a string like BlogBundle:Post:index)
|
||||||
|
* @param array $path An array of path parameters
|
||||||
|
* @param array $query An array of query parameters
|
||||||
|
*
|
||||||
|
* @return Response A Response instance
|
||||||
|
*/
|
||||||
|
public function forward($controller, array $path = array(), array $query = array())
|
||||||
|
{
|
||||||
|
$path['_controller'] = $controller;
|
||||||
|
$subRequest = $this->container->get('request')->duplicate($query, null, $path);
|
||||||
|
|
||||||
|
return $this->container->get('http_kernel')->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a RedirectResponse to the given URL.
|
||||||
|
*
|
||||||
|
* @param string $url The URL to redirect to
|
||||||
|
* @param integer $status The status code to use for the Response
|
||||||
|
*
|
||||||
|
* @return RedirectResponse
|
||||||
|
*/
|
||||||
|
public function redirect($url, $status = 302)
|
||||||
|
{
|
||||||
|
return new RedirectResponse($url, $status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user