Forked from amamarul/Laravel-login-username-default-auth.md
Created
November 24, 2021 11:52
-
-
Save vaporic/a662b35ef99f446f52469b8553ce04af to your computer and use it in GitHub Desktop.
Revisions
-
amamarul created this gist
May 6, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,46 @@ # 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. <div class="form-group row"> <label for="username" class="col-sm-4 col-form-label text-md-right">{{ __('Username') }}</label> <div class="col-md-6"> <input id="email" type="text" class="form-control{{ $errors->has('username') ? ' is-invalid' : '' }}" name="username" value="{{ old('username') }}" required autofocus> @if ($errors->has('username')) <span class="invalid-feedback"> <strong>{{ $errors->first('username') }}</strong> </span> @endif </div> </div> Y listo, podemos utilizar el auth por defecto de Laravel pero ahora nos logueamos utilizando el **username** en lugar del **email**