Skip to content

NodeJS

Feathers Cloud Auth requests can be verified in NodeJS with any framework.

HTTP

Below is a NodeJS server with a basic development CORS (necessary to allow requests from any client framework) configuration that uses the built in node:http module

js
import { createServer } from 'node:http'
import { createVerifier } from '@featherscloud/auth'

const appId = '<your-app-id>'
const verifier = createVerifier({ appId })

const defaultHeaders = {
  'Content-Type': 'application/json',
  'Access-Control-Allow-Headers': '*',
  'Access-Control-Allow-Methods': 'GET',
  'Access-Control-Allow-Origin': '*',
}

const server = createServer(async (req, res) => {
  if (req.method === 'OPTIONS') {
    res.writeHead(200, defaultHeaders)
    return res.end()
  }

  try {
    const header = req.headers.authorization
    // Verify the Authorization header and get the user information
    const { user } = await verifier.verifyHeader(header)
    const response = {
      message: `Hello ${user.email} from node:http!`,
    }

    res.writeHead(200, defaultHeaders)
    res.end(JSON.stringify(response))
  }
  catch (error) {
    res.writeHead(400, defaultHeaders)
    res.end(JSON.stringify({ error: error.message }))
  }
})

// Listen locally on port 3333
server.listen(3030, '127.0.0.1', () => {
  console.log(`NodeJS application ${appId} listening on http://localhost:3030`)
})

The full NodeJS example server can be found here.

Express

The Express framework can handle request in a similar way.

sh
npm install express
npm install cors
js
import { createVerifier } from '@featherscloud/auth'
import cors from 'cors'
import express from 'express'

const appId = '<your-app-id>'
const verifier = createVerifier({ appId })

const app = express()

app.use(cors())
app.get('/', async (req, res) => {
  try {
    const header = req.get('Authorization')
    // Verify the Authorization header and get the user information
    const { user } = await verifier.verifyHeader(header)
    const response = {
      message: `Hello ${user.email} from Express!`,
    }

    res.status(200).json(response)
  }
  catch (error) {
    res.status(400).json({ error: error.message })
  }
})

app.listen(3030, '127.0.0.1', () => {
  console.log(
    `Express application ${appId} listening on http://localhost:3030`,
  )
})

The full Express example server can be found here.