$app->register(new Silex\Provider\SecurityServiceProvider());
$app['security.firewalls'] = array(
'admin' => array(
'pattern' => '^/',
'anonymous' => true,
'form' => array(
'login_path' => '/login',
'check_path' => '/admin/login_check',
'default_target_path' => '/list_noticias',
'always_use_default_target_path' => true),
'logout' => array('logout_path' => '/admin/logout', 'invalidate_session' => true),
'users' => $app->share(function () use ($app) {
return new Silex\Provider\UserProvider($app["db"]);
}),
)
);
$app->get('/login', function(Request $request) use ($app) {
return $app['twig']->render('login.twig', array(
'error' => $app['security.last_error']($request),
'last_username' => $app['session']->get('_security.last_username'),
));
});
$app->get('/', function(Request $request) use ($app) {
return $app['twig']->render('login.twig', array(
'error' => $app['security.last_error']($request),
'last_username' => $app['session']->get('_security.last_username'),
));
});
$app->get('/logout', function(Request $request) use ($app) {
// una vez deslogueado que vuelva a mostrar la pantalla de loguearse
return $app->redirect("login", 303);
});
en admin/views/login.twig:
<form action="{{ path('admin_login_check') }}" method="POST">
<h1>AEMIN</h1>
<div>
<input type="text" name="_username" value="{{ last_username }}" class="form-control" placeholder="Nombre de usuario"/>
</div>
<div>
<input type="password" name="_password" class="form-control" placeholder="Contraseña"/>
</div>
<div>
<button type="submit">Iniciar sesion</button>
<p style="color: red;">
{{ error | replace({"Bad credentials": "Usuario y/o contraseña incorrectos."})}}
</p>
</div>
<div class="clearfix"></div>
</form>
Si no tienes UserProvider.php tienes que copiarlo en vendor/silex/silex/src/silex/provider.
Para llamar al logout debe hacerse con el path sustituyendo la / por _
<a href="{{ path('admin_logout') }}">SALIR</a>

No hay comentarios:
Publicar un comentario