<?php namespace App\Http\Controllers\Base; use Illuminate\Http\Request; use Illuminate\Http\RedirectResponse; use Laravel\Socialite\Facades\Socialite; use App\Http\Controllers\Controller; use App\Services\Users\UserUpdateService; use Illuminate\Http\Response; class OAuthController extends Controller { /** * OAuthController constructor. */ public function __construct( private UserUpdateService $updateService ) { } /** * Link a new OAuth */ protected function link(Request $request): RedirectResponse { $driver = $request->get('driver'); return Socialite::with($driver)->redirect(); } /** * Remove a OAuth link */ protected function unlink(Request $request): Response { $oauth = $request->user()->oauth; unset($oauth[$request->get('driver')]); $this->updateService->handle($request->user(), ['oauth' => $oauth]); return new Response('', Response::HTTP_NO_CONTENT); } }