{"version":3,"file":"Authorizator.cjs","sources":["../../../../../packages/engine-http/src/common/Authorizator.ts"],"sourcesContent":["import { ApiKeyManager, DatabaseContext, VerifyResult } from '@contember/engine-tenant-api'\nimport { HttpErrorResponse } from './HttpResponse'\nimport { Timer } from '../application'\nimport { IncomingMessage } from 'node:http'\n\nexport type AuthResult =\n\t& VerifyResult\n\t& { assumedIdentityId?: string }\n\nconst assumeIdentityHeader = 'x-contember-assume-identity'\n\nexport class Authenticator {\n\tprivate createAuthError = (message: string) => new HttpErrorResponse(401, `Authorization failure: ${message}`)\n\n\tconstructor(\n\t\tprivate readonly tenantDatabase: DatabaseContext,\n\t\tprivate readonly tenantReadDatabase: DatabaseContext,\n\t\tprivate readonly apiKeyManager: ApiKeyManager,\n\t) {\n\t}\n\n\tpublic async authenticate({ request, timer }: { request: IncomingMessage; timer: Timer }): Promise<AuthResult | null> {\n\t\tconst authHeader = request.headers.authorization\n\t\tif (!authHeader) {\n\t\t\treturn null\n\t\t}\n\n\t\tconst authHeaderPattern = /^Bearer\\s+(\\w+)$/i\n\n\t\tconst match = authHeader.match(authHeaderPattern)\n\t\tif (match === null) {\n\t\t\tthrow this.createAuthError(`invalid Authorization header format`)\n\t\t}\n\t\tconst [, token] = match\n\t\tconst authResult = await timer('Auth', () => this.apiKeyManager.verifyAndProlong(this.tenantDatabase, this.tenantReadDatabase, token))\n\t\tif (!authResult.ok) {\n\t\t\tthrow this.createAuthError(authResult.errorMessage)\n\t\t}\n\t\tconst assumedIdentityId = request.headers[assumeIdentityHeader] ?? undefined\n\t\tif (Array.isArray(assumedIdentityId)) {\n\t\t\tthrow new HttpErrorResponse(400, `Invalid ${assumedIdentityId} header format`)\n\t\t}\n\t\treturn {\n\t\t\t...authResult.result,\n\t\t\tassumedIdentityId,\n\t\t}\n\t}\n}\n"],"names":["HttpErrorResponse"],"mappings":";;;;;;AASA,MAAM,uBAAuB;AAEtB,MAAM,cAAc;AAAA,EAG1B,YACkB,gBACA,oBACA,eAChB;AAHgB,SAAA,iBAAA;AACA,SAAA,qBAAA;AACA,SAAA,gBAAA;AALV,kBAAA,MAAA,mBAAkB,CAAC,YAAoB,IAAIA,+BAAkB,KAAK,0BAA0B,OAAO,EAAE,CAAA;AAAA,EAAA;AAAA,EAS7G,MAAa,aAAa,EAAE,SAAS,SAAiF;AAC/G,UAAA,aAAa,QAAQ,QAAQ;AACnC,QAAI,CAAC,YAAY;AACT,aAAA;AAAA,IAAA;AAGR,UAAM,oBAAoB;AAEpB,UAAA,QAAQ,WAAW,MAAM,iBAAiB;AAChD,QAAI,UAAU,MAAM;AACb,YAAA,KAAK,gBAAgB,qCAAqC;AAAA,IAAA;AAE3D,UAAA,CAAA,EAAG,KAAK,IAAI;AAClB,UAAM,aAAa,MAAM,MAAM,QAAQ,MAAM,KAAK,cAAc,iBAAiB,KAAK,gBAAgB,KAAK,oBAAoB,KAAK,CAAC;AACjI,QAAA,CAAC,WAAW,IAAI;AACb,YAAA,KAAK,gBAAgB,WAAW,YAAY;AAAA,IAAA;AAEnD,UAAM,oBAAoB,QAAQ,QAAQ,oBAAoB,KAAK;AAC/D,QAAA,MAAM,QAAQ,iBAAiB,GAAG;AACrC,YAAM,IAAIA,aAAA,kBAAkB,KAAK,WAAW,iBAAiB,gBAAgB;AAAA,IAAA;AAEvE,WAAA;AAAA,MACN,GAAG,WAAW;AAAA,MACd;AAAA,IACD;AAAA,EAAA;AAEF;;"}