Доброго времени суток. Столкнулся с проблемой при аутентификации через соцсети для нескольких сущностей. Имеются две сущности: Student и Teacher. Для начала опишу рабочий вариант для одной сущности.
Мои роуты аутентификации:
//Socialite auth routes...
Route::middleware('guest')->group(function () {
Route::get('auth/{provider}', 'SocialController@index')->name('auth.provider');
Route::get('auth/{provider}/callback', 'SocialController@callback');
});
Мой контроллер:
class SocialController extends Controller
{
public function index($provider)
{
return Socialite::driver($provider)->redirect();
}
public function callback(SocialService $socialService, $provider)
{
$user = Socialite::driver($provider)->user();
if ($u = $socialService->saveSocialData($user)) {
Auth::guard('student')->login($u);
return redirect()->route('profile.index');
}
return back();
}
}
Мой конфиг :
VKONTAKTE_CLIENT_ID=7864077
VKONTAKTE_CLIENT_SECRET=Z2i92xXe47mGJY3D5DQE
VKONTAKTE_REDIRECT_URI=http://127.0.0.1:8000/auth/vkontakte/callback
Так все прекрасно работает, но для сущности Student.
Я хочу передавать в параметр маршрута еще и название сущности (для выбора соответствующей модели, гварда и редиректа в контроллере), вот так в переменную $client:
//Socialite auth routes...
Route::middleware('guest')->group(function () {
Route::get('auth/{client}/{provider}', 'SocialController@index')->name('auth.provider');
Route::get('auth/{client}/{provider}/callback', 'SocialController@callback');
});
Но, я сталкиваюсь с проблемой конфигурации маршрута REDIRECT_URI:
VKONTAKTE_REDIRECT_URI=http://127.0.0.1:8000/auth/student/vkontakte/callback
VKONTAKTE_REDIRECT_URI=http://127.0.0.1:8000/auth/teacher/vkontakte/callback
Если я пропишу два маршрута в конфиге, то переменная просто переопределится и вернет всегда последний маршрут для любой сущности.
Как можно динамически изменять REDIRECT_URI в зависимости от передаваемых параметров?