Skip to content

Instantly share code, notes, and snippets.

@jamesdaniels
Last active December 11, 2024 02:01
Show Gist options
  • Save jamesdaniels/5f6ccbd0a359a8f1b0c12d2a6dd0a4de to your computer and use it in GitHub Desktop.
Save jamesdaniels/5f6ccbd0a359a8f1b0c12d2a6dd0a4de to your computer and use it in GitHub Desktop.
import { getServerAuth } from "@/firebase/server";
import FirebaseClientCookieProvider from "./cookie";
import Image from "next/image";
import SignOutButton from "../sign-out-button";
import SignInButton from "../sign-in-button";
export default async function FirebaseAuthWidget() {
const auth = await getServerAuth();
const currentUser = auth.currentUser;
return (
<>
{ currentUser ?
<>
<Image src={ currentUser.photoURL! } width="48" height="48" alt=""></Image>
<p>{ currentUser.displayName }</p>
<SignOutButton></SignOutButton>
</> :
<SignInButton></SignInButton> }
<FirebaseClientCookieProvider serverUid={currentUser?.uid}></FirebaseClientCookieProvider>
</>
)
}
import "server-only";
import { FirebaseServerApp, initializeServerApp } from 'firebase/app';
import { getAuth } from "firebase/auth";
import { FIREBASE_OPTIONS, COOKIE_NAME } from "./constants";
import { cookies, headers } from "next/headers";
async function getServerApp() {
const authIdToken = (await cookies()).get(COOKIE_NAME)?.value;
return initializeServerApp(FIREBASE_OPTIONS, { authIdToken });
}
export async function getServerAuth(app?: FirebaseServerApp) {
const serverApp = app || await getServerApp();
const serverAuth = getAuth(serverApp);
await serverAuth.authStateReady();
return serverAuth;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment