ccc

Silex: Login en el Admin

web/admin/index.php:
$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