From b798040704d7ca0a9d0f89e7f64d27bd79a3ca44 Mon Sep 17 00:00:00 2001 From: Torben Haack Date: Thu, 10 Oct 2024 15:33:11 +0200 Subject: [PATCH] fix auth, update image --- .../docker/myp-rp_latest.tar.xz | 4 ++-- .../src/app/auth/login/callback/route.ts | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/reservation-platform/docker/myp-rp_latest.tar.xz b/packages/reservation-platform/docker/myp-rp_latest.tar.xz index 9085c1a..939bb34 100644 --- a/packages/reservation-platform/docker/myp-rp_latest.tar.xz +++ b/packages/reservation-platform/docker/myp-rp_latest.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b7b83144d4f3c2aacf229f6cb55193c4013160461021fe1798e7fb73b872f9bb -size 284401864 +oid sha256:f8ddf9e7240c8a828ad7600076e2c9de0bcbfe68c9480247754c542f843f32d0 +size 284422260 diff --git a/packages/reservation-platform/src/app/auth/login/callback/route.ts b/packages/reservation-platform/src/app/auth/login/callback/route.ts index 2969309..5c0dc4c 100644 --- a/packages/reservation-platform/src/app/auth/login/callback/route.ts +++ b/packages/reservation-platform/src/app/auth/login/callback/route.ts @@ -9,6 +9,13 @@ import { cookies } from "next/headers"; export const dynamic = "force-dynamic"; +interface GithubEmailResponse { + email: string; + primary: boolean; + verified: boolean; + visibility: string; +} + export async function GET(request: Request): Promise { const url = new URL(request.url); const code = url.searchParams.get("code"); @@ -35,7 +42,16 @@ export async function GET(request: Request): Promise { }); const githubUser: GitHubUserResult = await githubUserResponse.json(); - // Replace this with your own DB client. + // Sometimes email can be null in the user query. + if (githubUser.email === null || githubUser.email === undefined) { + const githubEmailResponse = await fetch("https://git.i.mercedes-benz.com/api/v3/user/emails", { + headers: { + Authorization: `Bearer ${tokens.accessToken}`, + }, + }); + const githubUserEmail: GithubEmailResponse[] = await githubEmailResponse.json(); + githubUser.email = githubUserEmail[0].email; + } const existingUser = await db.query.users.findFirst({ where: eq(users.github_id, githubUser.id), });