Привет, это структура моей модели пользователей,
'name' => 'required|max:255',
'phone' => 'required|numeric',
'email' => 'required|email|max:255|unique:users',
И это структура модели профиля
'username' => 'required|max:255',
'password' => 'required|min:6|confirmed',
Мне нужно следить за этой структурой и входить в систему с именем пользователя и паролем, потому что некоторые пользователи не могут иметь логин и не могут принимать имя пользователя и пароль.
Я меняю Auth на это
public function create(array $data)
{
$user = User::create([
'email' => $data['email'],
'phone' => $data['phone'],
]);
$user->profile()->create(['name' => $data['name'],'password' =>bcrypt($data['password'])]);
return $user;
}
А теперь как мне войти в систему: | ? Я знаю, что нужно изменить метод входа в этот файл laravel\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php
Но я не знаю, что изменилось
2 ответа
Если вам нужно войти в систему сразу после регистрации, просто сделайте это:
Auth::attempt($data['name'], $data['password']);
Если вы просто хотите авторизовать пользователей, вы можете переопределить метод Illuminate\Auth\SessionGuard@attempt
, но можете просто использовать Auth::login
if ($request->login == $loginFromDB && Hash::check($request->password, $passwordFromDB)) {
Auth::login($user, true); // User must be an User model instance
}
Что касается метода create
, похоже, вам нужно изменить name
на username
, например $user->profile()->create(['username' => ...
Для входа в систему, думаю, можно использовать что-то вроде
public function login(Request $request)
{
$profile = Profile::where('username', $request->get('username'))->first();
if(!$profile)
{
// Username doesn't exist
// return error
}
if (Hash::check($request->get('password'), $profile->password))
{
// The passwords match, login by ID
Auth::loginUsingId($profile->user_id);
// return success
}
// return error (invalid password)
}
Похожие вопросы
Новые вопросы
laravel
Платформа Laravel — это веб-инфраструктура PHP с открытым исходным кодом, которая позволяет разработчикам создавать динамические и масштабируемые веб-приложения. Исходный код Laravel размещен на GitHub и выпущен под лицензией MIT.