Plugin that allows you to add AdminBro to Express.js applications.


npm install @admin-bro/express

It has 2 peerDependencies: express-formidable and express, so you have to install them as well (if they are not installed already)

npm install express express-formidable


const AdminBroExpress = require('@admin-bro/express')

It exposes 2 methods that create an Express Router, which can be attached to a given url in the API. Each method takes a pre-configured instance of AdminBro.

If you want to use a router you have already created - not a problem. Just pass it as a predefinedRouter parameter.

You may want to use this option when you want to include some custom auth middleware for you AdminBro routes.

Example without an authentication

const AdminBro = require('admin-bro')
const AdminBroExpress = require('@admin-bro/express')

const express = require('express')
const app = express()

const adminBro = new AdminBro({
  databases: [],
  rootPath: '/admin',

const router = AdminBroExpress.buildRouter(adminBro)
app.use(adminBro.options.rootPath, router)
app.listen(8080, () => console.log('AdminBro is under localhost:8080/admin'))

Using build in authentication

To protect the routes with a session authentication, you can use predefined module:@admin-bro/express.buildAuthenticatedRouter method.

Note! To use authentication in production environment, there is a need to configure express-session for production build. It can be achieved by passing options to sessionOptions parameter. Read more on express/session Github page

Adding custom authentication

You can add your custom authentication setup by firstly creating the router and then passing it via the predefinedRouter option.

let router = express.Router()
router.use((req, res, next) => {
  if (req.session && req.session.admin) {
    req.session.adminUser = req.session.admin
  } else {
router = AdminBroExpress.buildRouter(adminBro, router)

Where req.session.admin is AdminBro#CurrentAdmin, meaning that it should have at least an email property.


# static version

Version of the plugin

View Source admin-bro-expressjs/plugin.js, line 267


# static buildAuthenticatedRouter(admin, auth, predefinedRouteropt, sessionOptionsopt, formidableOptionsopt) → {express.Router}

Builds the Express Router which is protected by a session auth

Using the router requires you to install express-session as a dependency. Normally express-session holds session in memory, which is not optimized for production usage and, in development, it causes logging out after every page refresh (if you use nodemon).

Name Type Attributes Default Description
admin AdminBro

instance of AdminBro

auth Object

authentication options

authenticate module:@admin-bro/express.Authenticate

authenticate function

cookiePassword String

secret used to encrypt cookies

cookieName String adminbro

cookie name

predefinedRouter express.Router <optional>

Express.js router

sessionOptions SessionOptions <optional>

Options that are passed to express-session

formidableOptions ExpressFormidableOptions <optional>

Options that are passed to express-session

View Source admin-bro-expressjs/plugin.js, line 141

Express.js router

const ADMIN = {
  email: '[email protected]',
  password: 'password',

AdminBroExpress.buildAuthenticatedRouter(adminBro, {
  authenticate: async (email, password) => {
    if (ADMIN.password === password && === email) {
      return ADMIN
    return null
  cookieName: 'adminbro',
  cookiePassword: 'somePassword',
}, [router])

# static buildRouter(admin, predefinedRouteropt, formidableOptionsopt) → {express.Router}

Builds the Express Router that handles all the pages and assets

Name Type Attributes Description
admin AdminBro

instance of AdminBro

predefinedRouter express.Router <optional>

Express.js router

formidableOptions ExpressFormidableOptions <optional>

Express.js router

View Source admin-bro-expressjs/plugin.js, line 28

Express.js router


Type Definitions

# Authenticate(emailopt, passwordopt) → {CurrentAdmin|null}

function taking 2 arguments email and password

Name Type Attributes Description
email string <optional>

email given in the form

password string <optional>

password given in the form

View Source admin-bro-expressjs/plugin.js, line 95

returns current admin or null

CurrentAdmin | null

Proudly built and maintained by SoftwareBrothers

Software House with a passion for both JavaScript and TypeScript.

See what we do See what we believe in

Proudly built and maintained by