@kupurim

Как сделать авторизацию пользователя, если данные хранятся в разных таблицах?

Здравствуйте.
Есть таблица User, в ней имя, почта, пароль, почти все что нужно. Но есть еще таблица User_info в которой хранится телефон. Необходимо сделать авторизацию по телефону и паролю.
Как это можно сделать?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 3
xpert13
@xpert13
Full Stack Developer
По телефону ищем id пользователя в таблице User_info, а потом проверяем правильность пароля из таблицы User.

$userInfo = UserInfo::where('phone', $request->get('phone', ''))->firstOrFail();
$user = User::findOrFail($userInfo->user_id);
if(\Hash::check($request->get('password', ''), $user->password))
{
    auth()->login($user, true);
}
Ответ написан
Комментировать
@miki131
$info = UserInfo::where('phone', $request->get('phone'))->with('user')->first();
if ($info && Hash::check($request->get('password'), $info->user->password)) {
	auth()->login($info->user);
}
Ответ написан
Комментировать
@Barmunk
Пример

public function login()
    {
        //находим номер
        $phone = Phones::where('phone', $phone)->with('user')->firstOrFail();

        //BelongTo
        $user = $phone->user;
        
        //проверяем пароль
        if (!Hash::check($password, $user->password)) return false;
        
        //авторизуем
        auth()->login($user, true);
        
        //перенаправляем
        return redirect()->route('home')->with('message', 'Вы успешно вошли');
    }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
JhaoDa
@JhaoDa
LaravelRUS Team
Не костыльное решение — https://laravel.com/docs/5.6/authentication#adding...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы