# Como hacer login con `username` en lugar de por `email` El controlador `App\Http\Controllers\Auth\LoginController` implementa el trait `AuthenticatesUsers` y este es el encargado de realizar la validación del Login. El método `validateLogin()` valida el campo `email` por defecto pero este lo obtiene del método `username()` que retorna el campo `email` por eso si lo que queremos es validar el login por otro campo (En este ejemplo será el campo **'username'**) debemos: 1- En la migracion de la tabla `users` (`2014_10_12_000000_create_users_table.php`) agregar el campo `username` es importante que este sea de tipo `unique` Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('username')->unique(); $table->string('name'); $table->string('email')->unique(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); 2- En el modelo `App\User` agregar el campo `username` a los fillables. protected $fillable = [ 'username', 'name', 'email', 'password', ]; 3- En el controlador `App\Http\Controllers\Auth\LoginController` agregar el método `username()` public function username() { return 'username'; } 4- En la vista blade `auth/login.blade.php` modificar el formulario de login. En lugar de un campo de tipo `email` colocamos como campo `text` y además tenemos que cambiar el name.
@if ($errors->has('username')) {{ $errors->first('username') }} @endif
Y listo, podemos utilizar el auth por defecto de Laravel pero ahora nos logueamos utilizando el **username** en lugar del **email**