Таблица Laravel Fortify password_resets с настраиваемым полем электронной почты для входа
Я использую другую таблицу и имена полей для аутентификации с помощью Fortify.
конфигурация / fortify.php
'username' => 'new_email',
'email' => 'new_email',
Модели / User.php
protected $table = 'new_users';
protected $primaryKey = 'new_id';
public $timestamps = true;
const CREATED_AT = 'new_created';
const UPDATED_AT = 'new_updated';
Сам логин рабочий.
Сброс пароля
Вы можете видеть, что на данный момент у меня есть два поля электронной почты в моей форме, у меня есть «электронная почта» и жестко запрограммировано «new_email», чтобы увидеть, что происходит, когда я отправляю оба поля.
<form action="/forgot-password" method="post">
@csrf
<div>
<label for="new_email">Email</label>
<input type="email" id="new_email" name="new_email" value="{{ old('new_email') }}" autofocus>
</div>
<input type="hidden" name="email" id="email" value="something@something.com">
<div>
<button onclick="alert(document.getElementById('email').value)">
Email Password Reset Link
</button>
</div>
</form>
Когда я сохраняю поле электронной почты таблицы password_resets как «электронная почта», я получаю эту ошибку (даже когда я отправляю «электронную почту») ...
SQLSTATE[23000]: нарушение ограничения целостности: 1048 Столбец «электронная почта» не может быть пустым (SQL: вставить в (,
token
,created_at
) значения (?, $2y$10$0ITPezqPt2on8DSsnvruSeB4qV4k4mcg7Yabty6vW6lF4ryzC2bGm, 2021-03-16 14:16:17))
Если я изменю поле электронной почты в 'password_resets' на 'new_email', я получу эту ошибку ...
SQLSTATE[42S22]: столбец не найден: 1054 Неизвестный столбец «электронная почта» в «предложении где» (SQL: выберите * из
password_resets
куда
Есть ли способ сделать это? Я предполагаю, что это будет в файле ResetUserPassword.php, если это возможно. Я просто использую по умолчанию ...
Действия / Fortify / ResetUserPassword.php
{
use PasswordValidationRules;
public function reset($user, array $input)
{
Validator::make($input, [
'password' => $this->passwordRules(),
])->validate();
$user->forceFill([
'password' => Hash::make($input['password']),
])->save();
}
}
Когда я делаю
php artisan route:list
Я вижу, что когда я отправляю сообщение по маршруту «забыл пароль», он использует ...
Laravel\Fortify\Http\Controllers\PasswordResetLinkController@ store
Могу я опубликовать это, чтобы отредактировать?
Можно ли изменить имя поля электронной почты и при этом сбросить рабочий пароль? Я делаю что-то неправильно?