34f1aefa4a
* Start from existing example * Upgrade some dependencies * Use dotenv * Remove custom server * Add serverless Firebase auth * Add TODOs * Update project name * Fix build script * Remove server middleware from client JS bundle * Add logout functionality * Redirect to auth page on logout * Remove TODO * Add comments about the cookie-session approach * Remove the sessions folder * Add comments for eslint * Remove unused files * Clarify comment * Update README.md * Rename variable for clarity * Update README.md * Change some comments * Add more to gitignore * Remove the bundle analyzer * Move server-side auth user logic from _app.js to a HOC to support static HTML rendering Co-authored-by: Joe Haddad <timer150@gmail.com>
24 lines
644 B
JavaScript
24 lines
644 B
JavaScript
import * as admin from 'firebase-admin'
|
|
|
|
export const verifyIdToken = token => {
|
|
const firebasePrivateKey = process.env.FIREBASE_PRIVATE_KEY
|
|
|
|
if (!admin.apps.length) {
|
|
admin.initializeApp({
|
|
credential: admin.credential.cert({
|
|
projectId: process.env.FIREBASE_PROJECT_ID,
|
|
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
|
|
// https://stackoverflow.com/a/41044630/1332513
|
|
privateKey: firebasePrivateKey.replace(/\\n/g, '\n'),
|
|
}),
|
|
databaseURL: process.env.FIREBASE_DATABASE_URL,
|
|
})
|
|
}
|
|
|
|
return admin
|
|
.auth()
|
|
.verifyIdToken(token)
|
|
.catch(error => {
|
|
throw error
|
|
})
|
|
}
|