From 378d31a7802f98caced6cb263b01dc8864fd3531 Mon Sep 17 00:00:00 2001 From: LamboCreeper <12111454+LamboCreeper@users.noreply.github.com> Date: Sat, 19 Oct 2024 16:22:58 +0100 Subject: [PATCH] Change login to be pop-up over redirect --- .gitignore | 1 + firestore.rules | 2 +- hosting/.env | 3 --- hosting/src/hooks/useLogin.ts | 7 +++++-- hosting/src/hooks/useUser.ts | 16 +++------------- 5 files changed, 10 insertions(+), 19 deletions(-) delete mode 100644 hosting/.env diff --git a/.gitignore b/.gitignore index a5ba44f..14fdad7 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ ui-debug.log .idea node_modules/ hosting/build +hosting/.env diff --git a/firestore.rules b/firestore.rules index a3e1dc1..4bcae0d 100644 --- a/firestore.rules +++ b/firestore.rules @@ -7,7 +7,7 @@ service cloud.firestore { } match /crt_repositories/{repository} { - allow read: if (request.auth.uid in request.resource.data.reviewers) || (request.auth.uid == request.resource.data.user); + allow read: if (request.auth.uid in request.resource.data.reviewers) || (request.auth.uid == resource.data.user); allow write: if request.auth.uid == request.resource.data.user && hasUniqueFieldValue(database, "crt_repositories", request, "hash"); } diff --git a/hosting/.env b/hosting/.env deleted file mode 100644 index 132088a..0000000 --- a/hosting/.env +++ /dev/null @@ -1,3 +0,0 @@ -VITE_FIREBASE_AUTH_EMULATOR_URL=http://127.0.0.1:9099 -VITE_FIREBASE_FIRESTORE_EMULATOR_HOST=127.0.0.1 -VITE_FIREBASE_FIRESTORE_EMULATOR_PORT=8080 diff --git a/hosting/src/hooks/useLogin.ts b/hosting/src/hooks/useLogin.ts index e9d1725..649f33e 100644 --- a/hosting/src/hooks/useLogin.ts +++ b/hosting/src/hooks/useLogin.ts @@ -1,5 +1,5 @@ import { useCallback, useState } from "react"; -import { getAuth, GithubAuthProvider, signInWithRedirect } from "firebase/auth"; +import { getAuth, GithubAuthProvider, signInWithPopup } from "firebase/auth"; import { app } from "../firebase"; const auth = getAuth(app); @@ -18,7 +18,10 @@ export function useLogin(): UseLoginHook { provider.addScope("read:user"); provider.addScope("public_repo"); - await signInWithRedirect(auth, provider); + const result = await signInWithPopup(auth, provider); + const credential = GithubAuthProvider.credentialFromResult(result); + + sessionStorage.setItem("github_token", import.meta.env.VITE_LOCAL_GITHUB_TOKEN ?? credential!.accessToken!); setLoading(false); }, diff --git a/hosting/src/hooks/useUser.ts b/hosting/src/hooks/useUser.ts index 2cf6608..90ef817 100644 --- a/hosting/src/hooks/useUser.ts +++ b/hosting/src/hooks/useUser.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from "react"; -import { getAuth, onAuthStateChanged, getRedirectResult, GithubAuthProvider, type User } from "firebase/auth"; +import { getAuth, onAuthStateChanged, type User } from "firebase/auth"; import { app } from "../firebase"; const auth = getAuth(app); @@ -8,18 +8,8 @@ export function useUser() { const [user, setUser] = useState(); useEffect(() => { - (async () => { - const result = await getRedirectResult(auth); - - if (!result) return; - - const credential = GithubAuthProvider.credentialFromResult(result); - - sessionStorage.setItem("github_token", import.meta.env.VITE_LOCAL_GITHUB_TOKEN ?? credential!.accessToken!); - })(); - - const listener = onAuthStateChanged(auth, (user) => { - setUser(user ?? undefined); + const listener = onAuthStateChanged(auth, (authUser) => { + setUser(authUser ?? undefined); }); return () => listener();