UNPKG

somod-chat-service

Version:

Serverless Chat Service from SOMOD

32 lines (31 loc) 1.21 kB
import { UserProviderMiddlewareKey } from "../../../lib"; /** * This Middleware sets the context user in Lambda function integrated for * - HTTP SyncMessage Route - take value from headers * - HTTP SendMessage Route - take value from headers * - WebSocket Connect Route - take value from headers * - WebSocket OnMessage Route - take value from body * * This is a sample implementation, For PROD usecase , derive the value from event.requestContext.authorizer */ const userProviderMiddleware = async (next, event) => { let key; if (event["headers"] !== undefined) { key = event["headers"][UserProviderMiddlewareKey]; } else { key = JSON.parse(event.body ?? "{}")?.[UserProviderMiddlewareKey]; } if (key === undefined) { return { statusCode: 400, headers: { "Content-Type": "application/json; charset=utf-8" }, body: JSON.stringify({ message: `Expected ${UserProviderMiddlewareKey} in the request headers or message body` }) }; } event.somodMiddlewareContext.set(UserProviderMiddlewareKey, key); return await next(); }; export default userProviderMiddleware;