diff --git a/backend/.env.example b/backend/.env.example index 5d5dc73..f9c7d35 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -67,3 +67,6 @@ VITE_APP_NAME="${APP_NAME}" GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= GOOGLE_REDIRECT_URI= + +PASSWORD_CLINT_ID= +PASSWORD_CLINT_SECRET= diff --git a/backend/app/User/Controllers/Auth/AuthController.php b/backend/app/User/Controllers/Auth/AuthController.php index 69c1e86..e50b709 100644 --- a/backend/app/User/Controllers/Auth/AuthController.php +++ b/backend/app/User/Controllers/Auth/AuthController.php @@ -4,9 +4,11 @@ namespace App\User\Controllers\Auth; use App\Http\Controllers\Controller; use App\Models\User; +use Illuminate\Http\Client\ConnectionException; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Http; use Illuminate\Support\Str; use Laravel\Socialite\Facades\Socialite; @@ -18,11 +20,14 @@ class AuthController extends Controller } + /** + * @throws ConnectionException + */ public function registerGoogle($driver):JsonResponse { $socialUser = Socialite::driver($driver)->user(); - $user = User::updateOrCreate( + $user = User::query()->updateOrCreate( ['email' => $socialUser->getEmail()], [ 'name' => $socialUser->getName(), @@ -30,11 +35,17 @@ class AuthController extends Controller ] ); - $token = $user->createToken('auth_token')->accessToken; + $response = Http::asForm()->post(config('app.url') . '/oauth/token', [ + 'grant_type' => 'password', + 'client_id' => config('passport.password_client_id'), + 'client_secret' => config('passport.password_client_secret'), + 'username' => $user->email, + 'password' => 'dummy_password_because_socialite_authenticated', + 'scope' => '*', + ]); return response()->json([ 'user' => $user, - 'access_token' => $token, - 'token_type' => 'Bearer', + 'token' => $response->json(), ]); }} diff --git a/backend/config/passport.php b/backend/config/passport.php new file mode 100644 index 0000000..30c0911 --- /dev/null +++ b/backend/config/passport.php @@ -0,0 +1,8 @@ + [ + 'id' => env('PASSWORD_CLINT_ID'), + 'secret' => env('PASSWORD_CLINT_SECRET'), + ], + ];