From af085cc68d4af3bde871ace85bb3e6555badc408 Mon Sep 17 00:00:00 2001 From: Mike Wu Date: Fri, 1 Nov 2024 10:49:36 +0900 Subject: [PATCH] feat(Queue): add pw to access --- package-lock.json | 17 +++++++++++++++++ package.json | 1 + queue-dashboard.ts | 11 +++++++++++ 3 files changed, 29 insertions(+) diff --git a/package-lock.json b/package-lock.json index 079d792..49cca2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,6 +55,7 @@ "date-fns": "^3.6.0", "date-fns-tz": "^3.1.3", "eslint-plugin-jest": "^28.2.0", + "express-basic-auth": "^1.2.1", "framer-motion": "^11.1.9", "gray-matter": "^4.0.3", "he": "^1.2.0", @@ -11676,6 +11677,14 @@ "node": ">= 0.10.0" } }, + "node_modules/express-basic-auth": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz", + "integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==", + "dependencies": { + "basic-auth": "^2.0.1" + } + }, "node_modules/express/node_modules/cookie": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", @@ -33073,6 +33082,14 @@ } } }, + "express-basic-auth": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz", + "integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==", + "requires": { + "basic-auth": "^2.0.1" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", diff --git a/package.json b/package.json index 7d5c47e..3c91c02 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "date-fns": "^3.6.0", "date-fns-tz": "^3.1.3", "eslint-plugin-jest": "^28.2.0", + "express-basic-auth": "^1.2.1", "framer-motion": "^11.1.9", "gray-matter": "^4.0.3", "he": "^1.2.0", diff --git a/queue-dashboard.ts b/queue-dashboard.ts index f866ef0..02f7ceb 100644 --- a/queue-dashboard.ts +++ b/queue-dashboard.ts @@ -1,13 +1,21 @@ import express from 'express' +import basicAuth from 'express-basic-auth' import { createBullBoard } from '@bull-board/api' import { BullMQAdapter } from '@bull-board/api/bullMQAdapter' import { ExpressAdapter } from '@bull-board/express' import { getQueue } from '@/queue/get-queue' import { config } from '@/config' +import process from 'node:process' const serverAdapter = new ExpressAdapter() serverAdapter.setBasePath('/jobs') +// Add auth to require password for access +const auth = basicAuth({ + users: { admin: process.env.QUEUE_DASHBOARD_PASSWORD ?? '' }, + challenge: true, // Will show browser prompt +}) + createBullBoard({ queues: Object.keys(config.queue.queues).map( (queue) => new BullMQAdapter(getQueue(queue)), @@ -17,6 +25,9 @@ createBullBoard({ const app = express() +// Apply auth middleware to all routes +app.use(auth) + app.use('/jobs', serverAdapter.getRouter()) app.get('/', (_req, res) => res.send('ok'))