From 24e19ce488224ae0d31b0c528d06be91bdcf1a4d Mon Sep 17 00:00:00 2001 From: Kevin ANATOLE Date: Thu, 29 Oct 2020 07:50:08 +0000 Subject: [PATCH] Firebase Auth configuration --- app/Http/Middleware/FirebaseMIddleware.php | 67 ++++++++++++++++++++++ bootstrap/app.php | 4 ++ routes/web.php | 1 + 3 files changed, 72 insertions(+) create mode 100644 app/Http/Middleware/FirebaseMIddleware.php diff --git a/app/Http/Middleware/FirebaseMIddleware.php b/app/Http/Middleware/FirebaseMIddleware.php new file mode 100644 index 0000000..178a207 --- /dev/null +++ b/app/Http/Middleware/FirebaseMIddleware.php @@ -0,0 +1,67 @@ +bearerToken(); + if (!$token) { + return response()->json('No token provided', 403); + } + + $user = $this->validateToken($token); + + if ($user === null) { + return response()->json('User not found', 403); + } + $request->request->add(['user' => $user]); + + return $next($request); + } + + public function validateToken($token) + { + try { + $decoded = FirebaseAuth::verifyIdToken($token); + $uid = $decoded->getClaim('sub'); + $user = User::where('provider_id', $uid)->get(); + $user = $user[0] ?? null; + + if (!$user) { + /** @var \Kreait\Firebase\Auth\UserRecord $data */ + $data = FirebaseAuth::getUser($uid); + $user = new User(); + $user->provider_id = $data->uid; + $user->email = $data->email; + $user->name = $data->displayName ?? 'No Name User'; + $user->image = $data->photoUrl ?? ''; + $user->save(); + } + + return $user; + } catch (\Exception $e) { + return null; + }; + } +} diff --git a/bootstrap/app.php b/bootstrap/app.php index bfbf655..76056f9 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -79,6 +79,10 @@ $app->configure('app'); // 'auth' => App\Http\Middleware\Authenticate::class, // ]); +$app->routeMiddleware([ + 'auth' => App\Http\Middleware\FirebaseMiddleware::class, +]); + /* |-------------------------------------------------------------------------- | Register Service Providers diff --git a/routes/web.php b/routes/web.php index 0f73f16..1c81a67 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,6 +11,7 @@ | */ +/** @var $router \Laravel\Lumen\Routing\Router */ $router->get('/', function () use ($router) { return $router->app->version(); });