somod-chat-service
Version:
Serverless Chat Service from SOMOD
32 lines (31 loc) • 1.21 kB
JavaScript
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;