Skip to content

Instantly share code, notes, and snippets.

@VTacius
Last active August 29, 2015 14:16
Show Gist options
  • Save VTacius/ff9acda42272fdb466f5 to your computer and use it in GitHub Desktop.
Save VTacius/ff9acda42272fdb466f5 to your computer and use it in GitHub Desktop.
Empezando con usuarios en Silex
<?php
require_once __DIR__.'/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
$app = new Silex\Application();
$app['debug'] = true;
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__
));
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
$app->register(new Silex\Provider\SecurityServiceProvider());
$app->register(new Silex\Provider\SessionServiceProvider());
$app['security.firewalls'] = array(
'secure' => array(
'anonymous' => true,
'pattern' => '^/.*$',
'form' => array('login_path' => '/login', 'check_path' => '/admin/'),
'logout' => array('logout_path' => '/admin/logout'),
'users' => array(
'user' => array('ROLE_USER', '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg=='),
'admin' => array('ROLE_ADMIN', '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg=='),
'alortiz' => array('ROLE_SUPER_ADMIN', '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg==')
)
)
);
$app['security.role_hierarchy'] = array(
'ROLE_SUPER_ADMIN' => array('ROLE_USER', 'ROLE_ADMIN'),
);
$app['security.access_rules'] = array(
array('^/admin', 'ROLE_ADMIN'),
array('^/estadisticas', 'ROLE_USER')
);
$app->get('/', function (Request $request) use ($app){
return $app['twig']->render('main.html.twig', array(
'titulo' => 'Página principal',
'mensaje' => 'Inicio de toda la aplicación'
));
});
$app->get('/estadisticas/', function () use ($app){
return $app['twig']->render('main.html.twig', array(
'titulo' => 'Sitio para estadisticas',
'mensaje' => 'Conjunto de estadísticas proporcionadas por la aplicación. Solo USER y SuperAdmin pueden ver'
));
});
$app->get('/admin/', function () use ($app){
return $app['twig']->render('main.html.twig', array(
'titulo' => 'Sitio para administradores',
'mensaje' => 'Sitio exclusivo para administradores. Sólo ADMIN y SuperAdmin pueden ver'
));
});
$app->get('/login', function(Request $request) use ($app) {
return $app['twig']->render('login.html.twig', array(
'error' => $app['security.last_error']($request),
'last_username' => $app['session']->get('_security.last_username')
));
})->bind('login');
$app->run();
<form action="{{ path('admin_') }}" method="post">
{{ error }}
<input type="text" name="_username" value="{{ last_username }}" />
<input type="password" name="_password" value="" />
<input type="submit" />
</form>
<h2>{{titulo}}</h2>
<h3>{{mensaje}}</h3>
<p>
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
<a href="{{ path('admin_logout') }}">Logout</a>
{% else %}
<a href="{{ path('login') }}">Login</a>
{% endif %}
</p>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment