UNPKG

webssh2-server

Version:

A Websocket to SSH2 gateway using xterm.js, socket.io, ssh2

47 lines (46 loc) 1.66 kB
// app/middleware/auth.middleware.ts // Authentication middleware for handling basic auth import basicAuth from 'basic-auth'; import { HTTP } from '../constants.js'; import { processAuthentication, createSessionData } from './auth-processor.js'; import { isErr } from '../utils/index.js'; import { createNamespacedDebug } from '../logger.js'; const debug = createNamespacedDebug('middleware:auth'); /** * Create authentication middleware that handles basic auth * @param config - Application configuration * @returns Express middleware handler */ export function createAuthMiddleware(config) { return (req, res, next) => { const r = req; // Extract basic auth credentials from request const credentials = basicAuth(req); // Process authentication using pure function const authResult = processAuthentication(config, credentials); if (isErr(authResult)) { // Authentication failed res.setHeader(HTTP.AUTHENTICATE, HTTP.REALM); res.status(authResult.error.code).send(authResult.error.message); return; } // Create session data from auth result const sessionData = createSessionData(authResult.value); const session = r.session; if (session == null) { next(); return; } Object.assign(session, sessionData); if (typeof session.save !== 'function') { next(); return; } session.save((err) => { if (err != null) { debug('Session save error: %O', err); } next(); }); }; }