Laravel: Как мне использовать другие данные, кроме электронной почты и пароля? - PullRequest
0 голосов
/ 18 января 2019

Я хочу использовать только номер CPF для входа в систему. CPF похож на номер социального обеспечения или на что-то похожее, и это уникальный номер в Бразилии. У меня уже есть таблица данных с этим номером, поэтому регистрация не требуется.

Где я могу изменить код, чтобы принимать CPF вместо электронной почты и пароля, пожалуйста?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Шаг 1: открыть файл AuthenticatesUsers.php

Шаг 2: обновите функцию username(), по умолчанию вы увидите электронную почту. вам нужно обновить его до cpf.

   public function username()
    {
        return 'cpf';
    }

Шаг 3: обновить функцию credentials(Request $request), по умолчанию это пароль. Вы можете изменить в соответствии с вашим подходом. если вы не хотите этого, вы также можете удалить поле для пароля!

    protected function credentials(Request $request)
    {
        //return $request->only($this->username(), 'password');
        return $request->only($this->username());
    }
0 голосов
/ 18 января 2019

Вам придется переопределить эти методы в вашем LoginController, просто вставьте это и измените соответствующим образом.

Изменить значение по умолчанию email на cpf имя поля:

public function username()
{
    return 'cpf'; // or whatever field you use to login
}

Выполните проверку здесь с учетными данными:

protected function validateLogin(Request $request)
{
    $request->validate([
        $this->username() => 'required|string|exists:users,cpf',
    ]);
}

Сделайте запрос на вход. Здесь мы ищем пользователя, затем регистрируем его вручную и перенаправляем на панель управления (домой), в случае сбоя вы будете перенаправлены обратно с вводом, который был вставлен в форму:

public function login(Request $request)
{
    $this->validateLogin($request);

    $user = User::where('cpf', $request->cpf)->first();

    if ($user) {
        Auth::login($user);
        return redirect()->intended('home');
    }

    return redirect()->back()->withInput($request->all());
}

Таблица БД, с которой я тестировал:

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('cpf')->unique();
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->rememberToken();
    $table->timestamps();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...