Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if user is authenticated in Firebase and Express/Node.js?

If I have a page that can only be accessed by authenticated users, how do I check if a user is authenticated or not?

I tried using (firebase.auth().currentUser !== null) but I am getting an error saying: TypeError: firebase.auth is not a function

I have the following configuration:

const express = require('express'),
      firebase = require('firebase'),
      app = express();

app.use(express.static("/public"));

var config = {
   apiKey: "xxxx",
   authDomain: "xxxx",
   databaseURL: "xxxx",
   projectId: "xxxx",
   storageBucket: "xxxx",
   messagingSenderId: "xxxx"
};

firebase.initializeApp(config); 

app.get("/dashboard", (request, response) => {
   if (firebase.auth().currentUser !== null){
       response.render("dashboard.ejs")
   }
   else{
       response.render("login.ejs");
   }
});
like image 998
rgoncalv Avatar asked Dec 24 '22 06:12

rgoncalv


1 Answers

Your code is in an Express app, which means it runs on the server. The Firebase SDK you're using is meant for use on client devices, and won't work well in your Express environment. There is no concept of a "current user" on the server. Of course a user ID can be passed to the server with each request, but the server itself is stateless.

In your Express server you'll want to use the Firebase Admin SDK. Have a look at this Cloud Functions sample on how to build an authenticated endpoint.

like image 162
Frank van Puffelen Avatar answered Dec 26 '22 02:12

Frank van Puffelen