У меня есть собственная таблица пользователей, которую я хочу использовать при авторизации, но проблема в том, что поле электронной почты — это «userEmail» вместо «email».
Для страницы входа я переоценил метод ниже в LoginController.php
public function username()
{
return 'userEmail';
}
и изменил имя в поле ввода.
<input id="userEmail" type="email" name="userEmail" value="{{ old('userEmail') }}" class="{{ $errors->has('userEmail') ? 'is-invalid' : '' }}">
это нормально работает для входа в систему, Нужно решение для форм Забыли пароль и Сброс пароля, так как они не работают.
Так что любое решение для этого в Laravel 5.6
Вы можете добавить методы доступа и мутатора к пользовательской модели:
public function getEmailAttribute() {
return $this->attributes['userEmail'];
}
public function setEmailAttribute($value) {
$this->attributes['userEmail'] = $value;
}
Я думаю, что вы можете использовать Laravel Mutators:
https://laravel.com/docs/5.6/eloquent-mutators
У вас нет времени, чтобы проверить следующее, но это должно быть то, что вы ищете:
class User extends Model
{
/**
* Get the user's email.
*
* @param string $value
* @return string
*/
public function getEmailAttribute($value)
{
return $this->userEmail;
}
}
Чтобы сохранить модифицирующий php-код (и что-то сломать), может быть проще создать sql-представление вашей таблицы пользователей и сопоставить действительные имена полей с именами, которые использует класс User, например.
CREATE VIEW v_user_auth AS
SELECT user_id AS id
, user_created_time AS created_at
, user_updated_time AS updated_at
, user_name AS name
, user_email AS email
, user_password AS password
, user_remember_token AS remember_token
FROM t_user
В User.class добавьте следующее, чтобы заставить его использовать представление:
protected $table = 'v_user_auth';