Skip to content

Instantly share code, notes, and snippets.

@jwv
Forked from abeisgoat/getFirebaseUser.js
Last active August 17, 2020 17:25
Show Gist options
  • Save jwv/c820e313b89cefe65bfb62a14986d16f to your computer and use it in GitHub Desktop.
Save jwv/c820e313b89cefe65bfb62a14986d16f to your computer and use it in GitHub Desktop.
const admin = require("admin");
function getFirebaseUser(req, res, next) {
console.log("Check if request is authorized with Firebase ID token");
if (
!req.headers.authorization ||
!req.headers.authorization.startsWith("Bearer ")
) {
console.error(
"No Firebase ID token was passed as a Bearer token in the Authorization header.",
"Make sure you authorize your request by providing the following HTTP header:",
"Authorization: Bearer <Firebase ID Token>"
);
res.status(403).send("Unauthorized");
return;
}
console.log("Found 'Authorization' header");
const idToken = req.headers.authorization.split("Bearer ")[1];
admin
.auth()
.verifyIdToken(idToken)
.then(decodedIdToken => {
console.log("ID Token correctly decoded", decodedIdToken);
req.user = decodedIdToken;
next();
})
.catch(error => {
console.error("Error while verifying Firebase ID token:", error);
res.status(403).send("Unauthorized");
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment