En primer lugar, sugeriría que no utilice el controlador de autenticación central desarrollado por Tylor si tiene una versión 5.1 o inferior. Si está utilizando Laravel 5.2+, entonces seguro que laravel ha mejorado mucho en su controlador de autenticación y ya no necesita leer mi respuesta.
Pero, para Laravel 5.1 o inferior:
Use el paquete Centinela / Centinela.
- ¿Qué es mejor aprender o reaccionar como capa de vista para Meteor.js considerando el futuro?
- Cómo agregar datos que están en idioma nativo (asamés) a la base de datos mySql
- ¿Por qué es Apache Cordova más beneficioso en comparación con otros marcos?
- Cómo implementar el concepto OOP en PHP
- ¿Qué es mejor comenzar como principiante en desarrollo web, Bootstrap o WordPress?
La idea detrás del uso del paquete externo es tener mucha más funcionalidad que solo autenticación.
Consiste en
Usuario y permisos
Roles que pueden vincularse a un grupo de permisos.
Aceleración para evitar cualquier tipo de ataque DDoS o ataque de fuerza bruta en su servidor.
Ahora, llegando a tu pregunta:
$ user = App \ User :: find (1);
Simplemente puede hacer Sentinel :: login ($ user);
Esta es una idea básica, pero ahora si quieres desarrollar esto en producción. Aquí va el código.
En el lado Administrador / Desarrollador, cree una función, agregue una ruta y escriba el siguiente código:
Session :: put (‘old_user_id’, Sentinel :: getUser () -> id);
$ user = Sentinel :: getUserRepository () -> createModel () -> find ($ userId);
Sentinel :: login ($ usuario);
return redirect () -> route (‘home’) -> withSuccess (‘Ha iniciado sesión en’. $ user-> fullName (). ‘\’ s account. ‘);
Este código es el que almacena la ID de usuario actual en la variable de sesión e inicia sesión en la ID de otro usuario.
Ahora, volviendo a la cuenta real, puede modificar su código de cierre de sesión como:
$ usuario = Centinela :: getUser ();
// Cerrar sesión del usuario
Sentry :: logout ();
if (Session :: has (‘old_user_id’) y Session :: get (‘old_user_id’)! = $ user-> id) {
$ user = Sentry :: getUserRepository () -> createModel () -> find (Session :: get (‘old_user_id’));
Sentry :: login ($ usuario);
return redirect () -> route (‘admin’) -> withSuccess (‘Bienvenido de nuevo a la cuenta de administrador’);
}
Para explicar el código anterior, básicamente cierra la sesión del usuario actual y verifica si la sesión tiene una ID de usuario anterior, y si es así, vuelva a iniciar sesión en la cuenta anterior.
PD: Siéntase libre de cambiar el código para usar clases nativas, pero como prefiero usar Sentry / Sentinel, tengo código escrito usando esas clases.
¡Espero que esto te ayude!