Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
OpenServer:
1. Версия Laravel Framework 5.5.19
2. Версия PHP 7
3. MySQL 5.7
4. Apache-PHP-7
Авторизация для форума через Wargaming:
При написании форума, столкнулись с проблемой. Авторизация! Можно использовать "из коробки" с регистрацией и тп. Но гораздо лучше, когда авторизация идет через WG!
Задача:
Авторизация через WG, после успешной авторизации регистрация пользователя в БД, дать доступ к закрытым разделам и вывод сообщения: Привет username!
В SocialiteProviders нет готового решения. На github нашел этот пакет: Wargaming authentication for laravel 5.
Скачал, установил, все необходимые настройки выполнил.
routes/web.php
Route::get('login', 'AuthController@loginwg')->name('login'); //Авторизация
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home'); //Закрыт раздел
AuthController
Как указан в Usage example на GitHub
Тест авторизации:
Начали тестировать, ClickAuth>Идем на WG>Авторизируемся>Возвращаемся на сайт
После успешной авторизации, мы должны вернуться на сайт, если пользователь новый записать его в БД. И дать доступ к закрытым разделам + Приветствие: Привет username!
Но:
Ответ от WG приходит в браузерную строку в виде:
http://wg.com/?&status=ok&access_token=ee6a6d669d7a23333b77809375309494dac&nickname=NICKNAME&account_id=1111111&expires_at=111111111
Скрипт не записывает пользователя в БД и не дает доступ к закрытым разделам!
Помогите настроить авторизацию Пожалуйста!
Не в сети
Приходит верный ответ. Пример дальнейшей реализации:
Вам нужно создать в таблице users - provider (string) - хранится тип соц.сети, provider_id (int) - ид аккаунта соц.сети (1111111 у вас).
Затем должен быть роут на колбек.
Route::get('auth/{driver}/callback', 'AuthController@callback');
AuthController::callback - примерно:
$user = Socialite::driver(WargamingDriver::class)->user();
$findUser = User::where('provider_id', $user->getId())->where('provider', 'wargaming')->first();
if ($findUser) {
return auth()->login($findUser);
}
$newUser = $this->register([
'email' => $user->getEmail(),
'password' => str_random(32),
'provider' => request()->route('driver'),
'provider_id' => $user->id
]);
return auth()->login($newUser);
Изменено andrei24 (28.10.2017 15:08:00)
Не в сети
Страницы 1