Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Cambiar campos de login Laravel 5.1

Estas en el tema de Cambiar campos de login Laravel 5.1 en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos, Esta es una de las preguntas que abunda por la red, necesito adicionar campos a la tabla user y además que los campos ...
  #1 (permalink)  
Antiguo 19/07/2015, 20:50
 
Fecha de Ingreso: diciembre-2006
Mensajes: 213
Antigüedad: 13 años, 5 meses
Puntos: 3
Cambiar campos de login Laravel 5.1

Hola amigos,

Esta es una de las preguntas que abunda por la red, necesito adicionar campos a la tabla user y además que los campos para hacer loginno sean correo y password sino username (nuevo campo a agregar) y password con laravel 5.1

encontré una posible solución acá:

http://laraveles.com/foro/viewtopic.php?id=3498

Pero dentro de la misma alguien contesta que no es lo más correcto, pues se esta modificando el núcleo del framework, sino que lo correcto sería implementar algo de herencia.

¿Cuál y cómo sería la mejor forma de implementar esto?

Gracias desde ya por su aporte
  #2 (permalink)  
Antiguo 20/07/2015, 09:16
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 7 años
Puntos: 379
Respuesta: Cambiar campos de login Laravel 5.1

Mencionan eso por que el autor de ese hilo afecto los traits que viene en el core de Laravel y generalmente no tienes que hacer eso a menos que este enviando un pull request para un cambio que consideras seria util en esos Traits.
Que puedes hacer ? crear nuevos traits que hagan lo que necesitas o sobre escribiendo los métodos que necesites y que incorpora el Traits en la clase AuthController. Si no tenes idea de lo ultimo te invito a leer el manual http://php.net/manual/es/language.oop5.traits.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 24/07/2015, 23:54
 
Fecha de Ingreso: diciembre-2006
Mensajes: 213
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Cambiar campos de login Laravel 5.1

Hola,

Pues yo me fui por algo que encontré en la documentación de laravel 5.1:

En el UserController agregué el siguiente método:

Código PHP:
Ver original
  1. public function authenticate()
  2.     {
  3.         if (Auth::attempt(['usuario' => $usuario, 'pass' => $pass])) {
  4.             // Authentication passed...
  5.             return redirect()->intended('Welcome');
  6.         }
  7.     }

Luego, en el el Auth.php el único cambio que hago es que le espcifico cómo se llama mi tabla de usuarios:

Código PHP:
Ver original
  1. 'table' => 'contactos',

Respecto al modelo User.php los cambios que le he hecho son:

Código PHP:
Ver original
  1. protected $table = 'contactos';
  2. protected $fillable = ['usuario', 'pass'];
  3. protected $hidden = ['pass', 'remember_token'];


Pero al momento de probarlo me lanza el siguiente error:

Código PHP:
Ver original
  1. SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email' in 'where clause' (SQL: select * from `contactos` where `email` = prueba limit 1)

En algún lado se me ha quedado pegado el campo email, aunque lo de la documentación de laravel 5.1 solamente menciona lo del método Auth::attempt

No sé si se refiere a esto mismo de los Traits que mencionas en la respuesta?
  #4 (permalink)  
Antiguo 26/07/2015, 13:10
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 7 años
Puntos: 379
Respuesta: Cambiar campos de login Laravel 5.1

estas haciendo los cambios en el controlador original (AuthController) o creaste uno propio ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 27/07/2015, 09:56
 
Fecha de Ingreso: diciembre-2006
Mensajes: 213
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Cambiar campos de login Laravel 5.1

Hola,

Pues estoy haciendo los cambios en el AuthController original.

Saludos
  #6 (permalink)  
Antiguo 27/07/2015, 11:07
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 7 años
Puntos: 379
Respuesta: Cambiar campos de login Laravel 5.1

Si es así, solo tienes que agregar la propiedad username al AuthController
Código PHP:
Ver original
  1. class AuthController extends Controller
  2. {
  3.     protected $username = 'username';
  4.    
  5.     /*
  6.     |--------------------------------------------------------------------------
  7.     | Registration & Login Controller
  8.     |--------------------------------------------------------------------------
  9.     |
  10.     | This controller handles the registration of new users, as well as the
  11.     | authentication of existing users. By default, this controller uses
  12.     | a simple trait to add these behaviors. Why don't you explore it?
  13.     |
  14.     */
  15.  
  16.     use AuthenticatesAndRegistersUsers;
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 28/07/2015, 22:16
 
Fecha de Ingreso: diciembre-2006
Mensajes: 213
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Cambiar campos de login Laravel 5.1

Hola,

Mantengo el mismo problema por lo que he realizado algunos cambios y aún persisto con lo mismo

En mi formulario tango lo siguiente:

Código PHP:
Ver original
  1. {!! Form::text('usr', '', ['class'=> 'form-control']) !!}

El AuthController es el siguiente:


Código PHP:
Ver original
  1. <?php
  2.  
  3. namespace App\Http\Controllers\Auth;
  4.  
  5. use App\User;
  6. use Validator;
  7. use App\Http\Controllers\Controller;
  8. use Illuminate\Foundation\Auth\ThrottlesLogins;
  9. use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
  10.  
  11. class AuthController extends Controller
  12. {
  13.     /*
  14.     |--------------------------------------------------------------------------
  15.     | Registration & Login Controller
  16.     |--------------------------------------------------------------------------
  17.     |
  18.     | This controller handles the registration of new users, as well as the
  19.     | authentication of existing users. By default, this controller uses
  20.     | a simple trait to add these behaviors. Why don't you explore it?
  21.     |
  22.     */
  23.     protected $username = 'usr';
  24.     protected $redirectTo = 'home';
  25.  
  26.     use AuthenticatesAndRegistersUsers, ThrottlesLogins;
  27.  
  28.     /**
  29.      * Create a new authentication controller instance.
  30.      *
  31.      * @return void
  32.      */
  33.     public function __construct()
  34.     {
  35.         $this->middleware('guest', ['except' => 'getLogout']);
  36.     }  
  37.    
  38.    
  39.     public function authenticate()
  40.     {
  41.         if (Auth::attempt(['usuario' => $usr, 'pass' => $pass])) {
  42.             // Authentication passed...
  43.             return redirect()->intended('Welcome');
  44.         }
  45.     }
  46. }

Pero sigo obteniendo el mismo mensaje de error:

Código PHP:
Ver original
  1. SQL: select * from `contactos` where `usr` = admin limit 1


Me da la impresión de que el nombre del campo para el username en el formulario web debería ser igual al nombre del campo en la tabla. ¿En qué estaré mal?

Además, más adelante, necesitaría verificar si un usuario esta activo o no por lo que tendría que agregrarle otro campo dentro de la funcción attemp (usuario y pass son los nombres de los campos en la tabla de contactos utilizada para hacer el login)
  #8 (permalink)  
Antiguo 30/07/2015, 16:20
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 7 años
Puntos: 379
Respuesta: Cambiar campos de login Laravel 5.1

Nunca te va a funcionar de esa forma por que no entiendes como funciona la autenticación de usuarios, el método authenticate() nunca se llama y la consulta que te manda el error es por que tienes esto
Código PHP:
Ver original
  1. protected $username = 'usr'
Al inicio y el Auth de laravel busca ese campo que no existe en tu base de datos. Te aconseje que revisaras los Traits y te vuelvo a sugerir lo mismo ya que si no entiendes como funciona laravel en ese aspecto vas a tener problemas para hacer lo que necesitas. La otra opción es que hagas tu propia versión de autenticación.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: campos, framework, laravel, login, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:29.