UNPKG

event-driven

Version:

makes building event-driven-architecture easy

48 lines (42 loc) 1.77 kB
import express from 'express' import path from 'path' import { verify } from 'jsonwebtoken' import { errorRouter } from './routes/error' import { subjectRouter } from './routes/subject' import { authRouter } from './routes/auth' import { streamRouter } from './routes/stream' import { eventRouter } from './routes/event' import { JetStreamManager, JetStreamClient } from 'nats' export * from './models' declare module 'express' { export interface Request { admin?: { id: string; authorized: boolean } } } const authenticateAdmin = (ACCESS_TOKEN_SECRET: string) => async (req: express.Request, res: express.Response, next: express.NextFunction) => { const { admin_access_token } = req.headers if (typeof admin_access_token !== 'string') return next() const decoded = verify(admin_access_token, ACCESS_TOKEN_SECRET) as { admin: { id: string; authorized: boolean } } if (!decoded) return next() req.admin = decoded.admin return next() } export const eventManagerRouter = (ACCESS_TOKEN_SECRET: string, jsc: JetStreamManager, js: JetStreamClient) => { const router = express.Router() // router.use(express.static('../../client/build')) // const publicPath = path.resolve(__dirname, '../../client/build') // console.log({ publicPath }) // router.use('/', express.static(publicPath)) // router.use(express.static(publicPath)) router.use(authenticateAdmin(ACCESS_TOKEN_SECRET)) router.use('/api/streams', streamRouter(jsc)) router.use('/api/events', eventRouter(js)) router.use('/api/errors', errorRouter(js)) router.use('/api/subjects', subjectRouter(js)) router.use('/api/auth', authRouter()) return router } export const eventManagerFrontendPath = path.resolve(__dirname, '../../client/build')