Changing Laravel auth table name and column names
You can follow the below given steps:
- Create/modify migration to change the users table to accounts
- Create migration to change the column name as per your requirements for table accounts. Make sure this model call is extends
Authenticatable
- Create model class for accounts table.
- Make sure to add fillable and hidden attributes of table.
- Now check the login.blade.php file and change the
email
input text field name toemail_address
.
With the above all steps, we are ready with View part now let's start with customising the Auth
Now open config/auth.php
- Change from
'model' => App\User::class,
to'model' => App\Account:class
insideproviders
array.
- Change from
Now we need to add new function inside app/Http/Auth/LoginController.php like below:
public function username(){ return 'email_address'; // this string is column of accounts table which we are going use for login }
Now we are done with all adjustment, you can test the functionality.
I have tested the functionality and its working like charm :)
you have to extend "Illuminate\Foundation\Auth\User" in your Account model.
namespace App;use Illuminate\Notifications\Notifiable;use Illuminate\Foundation\Auth\User as Authenticatable;class Account extends Authenticatable{ use Notifiable; //code here public function getEmailAttribute() { return $this->email_addr; } public function setEmailAttribute($value) { $this->attributes['email_addr'] = strtolower($value); }}
and change in configuration file in "config/auth.php" in providers array
'users' => [ 'driver' => 'eloquent', 'model' => App\Account::class, //replace User to Account ],