8.0.1 • Published 12 months ago

@mondomob/gae-js-firebase-auth v8.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

GAE JS FIREBASE AUTH

Use Firebase Auth to authenticate your users

Installation

npm install @mondomob/gae-js-firebase-auth

Usage

The verifyFirebaseUser middleware will inspect the request headers and if an Authorization header with a Bearer token is found it is validated as a Firebase Auth token. For a valid user the details are mapped into a local BaseUser instance and set into request storage for use downstream.

e.g.

Step 1: Initialise Firebase Auth and apply middleware

// Add firebase auth support
const firebaseAdmin = admin.initializeApp({ projectId: config.projectId });
app.use(verifyFirebaseUser(firebaseAdmin));

Step 2: Access user info or apply guard middleware

import { requiresRole } from "./requires-role";

// Adhoc access
app.user("/endpoint1", (req, res) => {
  const user = userRequestStorage.get();
  res.send(user ? "Logged in" : "No user found")
})

// requiresUser guard will throw if no user found
app.get(
  "/roles",
  requiresUser(),
  asyncHandler(async (req: Request, res: Response) => {
    const user = userRequestStorage.get();
    res.send(`You have roles ${user.roles}`);
  })
);

// requiresRole guard will throw if no user or user does not have the specified role
app.put(
  "/roles",
  requiresRole("ADMIN"),
  asyncHandler(async (req: Request, res: Response) => {
    const user = userRequestStorage.get();
    const { body } = req;
    await admin.auth().setCustomUserClaims(user.id, { roles: body.roles });
    res.send(`User now has roles ${body.roles}`);
  })
);
8.0.1

12 months ago

8.0.0

1 year ago

7.2.2

1 year ago

7.2.1

1 year ago

7.2.0

1 year ago

7.1.0

2 years ago

4.0.1

2 years ago

4.0.0

2 years ago

5.0.0

2 years ago

7.0.0

2 years ago

6.0.0

2 years ago

3.0.0

2 years ago

2.0.0

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago