Изменение имени таблицы авторизации Laravel и имен столбцов - PullRequest
1 голос
/ 11 апреля 2019

Я хочу изменить имя таблицы и некоторые имена столбцов таблицы аутентификации laravel.

  • Изменить имя таблицы с «пользователи» на «учетные записи»
  • Изменить имя столбца таблицы с «имя» на «имя пользователя»
  • Измените имя столбца таблицы с 'email' на 'email_addr'
  • Изменить имя столбца таблицы с «updated_at» на «last_updated_at»

Какие шаги я предпринимаю или какой код редактировать, ничего не нарушая?

Я пробовал это раньше, и регистрация работала, но логин не помог. Всякий раз, когда я пытался войти в систему, меня перенаправляли обратно на страницу входа.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2019

Вы можете выполнить следующие шаги:

  1. Создание / изменение миграции для изменения таблицы users на account
  2. Создайте миграцию, чтобы изменить имя столбца в соответствии с вашими требованиями к таблице account . Убедитесь, что этот вызов модели расширяет Authenticatable
  3. Создание класса модели для счетов таблиц.
  4. Обязательно добавьте заполненные и скрытые атрибуты таблицы.
  5. Теперь проверьте файл login.blade.php и измените имя поля ввода email на email_address.

С учетом всех вышеперечисленных шагов мы готовы к представлению части, теперь давайте начнем с настройки Auth

  1. Теперь откройте config / auth.php

    • Изменение с 'model' => App\Account::class, на 'model' => App\Account:class внутри providers массива.
  2. Теперь нам нужно добавить новую функцию внутри app / Http / Auth / LoginController.php , как показано ниже:

    public function username(){ return 'email_address'; // this string is column of accounts table which we are going use for login }

Теперь мы закончили со всеми настройками, вы можете проверить функциональность.

Я проверил функционал и его работу как шарм:)

2 голосов
/ 11 апреля 2019

Вы должны расширить «Осветить \ Основание \ Аутентификация \ Пользователь» в своей модели учетной записи.

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);
  }
}

и изменение в файле конфигурации в "config / auth.php" в массиве провайдеров

'users' => [
        'driver' => 'eloquent',
        'model' => App\Account::class,  //replace User to Account
    ],
...