Сервис аутентифицирует только через соцсети - вк ютуб инстаграм. Использую uLogin.
Вот код моего контроллера
<?php
namespace App\Http\Controllers;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use GuzzleHttp\Exception\RequestException;
class LoginController extends Controller
{
public function index()
{
return view('login');
}
public function callback(Request $request)
{
$token = $request->input('token');
$client = new Client();
try {
$response = $client->request('GET', 'http://ulogin.ru/token.php', [
'query' => [
'token' => $token
]
]);
} catch (RequestException $e) {
// ошибка
}
$body = json_decode($response->getBody());
if (isset($body->error)) {
// ошибка
}
if (! in_array($body->network,
['vkontakte', 'youtube', 'instagram'])) {
// ошибка
}
if ($body->network === 'vkontakte') {
$body->network = 'vk';
}
// todo - сделать регистрацию и аутентификацию
}
}
Там, где todo, мне нужно сделать такую вещь:
У меня есть 2 таблицы. Users, где хранятся данные о юзерах и users_socials - связки пользователей и их привязок к соцсетям. Структура users_socials проста - user_id (BIGINT), social (ENUM), id_in_service (varchar)
Я хочу сделать так - нажимает пользователь войти через Инстаграм - система должна проверить - есть ли в users_socials уже такой инстаграм-юзер. Если есть, то просто логиним его, нет - создаем нового пользователя и добавляем в users_socials данные о привязке Инстаграма пользователю. Как максимально просто и красиво такое реализовать средствами Laravel Auth?