UNPKG

@aimee-blue/ab-service-kit

Version:
1 lines 3.03 kB
{"version":3,"sources":["../../../src/shared/auth/expressWithAuth.ts"],"names":["verifyTokenForRequest","allow","req","headers","authorization","match","token","expressWithAuth","res","next","then","result","set","status","json","error","message","end","undefined","catch","err"],"mappings":";;;;;;;AACA;;AAGA,eAAeA,qBAAf,CACEC,KADF,EAEEC,GAFF,EAGE;AACA;AACA;AACA,MAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACC,OAAjB,EAA0B;AACxB,WAAO,IAAP;AACD;;AAED,QAAMC,aAAa,GAAGF,GAAG,CAACC,OAAJ,CAAYC,aAAlC;;AACA,MAAI,CAACA,aAAL,EAAoB;AAClB,WAAO,IAAP;AACD;;AAED,QAAMC,KAAK,GAAGD,aAAa,CAACC,KAAd,CAAoB,eAApB,CAAd;;AACA,MAAI,CAACA,KAAL,EAAY;AACV,WAAO,IAAP;AACD;;AAED,QAAMC,KAAK,GAAGD,KAAK,CAAC,CAAD,CAAnB;AAEA,SAAO,MAAM,8BAAY;AACvBC,IAAAA,KADuB;AAEvBL,IAAAA;AAFuB,GAAZ,CAAb;AAID;;AAEM,MAAMM,eAAe,GAAIN,KAAD,IAAyC,CACtEC,GADsE,EAEtEM,GAFsE,EAGtEC,IAHsE,KAInE;AACHT,EAAAA,qBAAqB,CAACC,KAAD,EAAQC,GAAR,CAArB,CACGQ,IADH,CACQC,MAAM,IAAI;AACd,QAAI,CAACA,MAAL,EAAa;AACXH,MAAAA,GAAG,CAACI,GAAJ,CAAQ,YAAR,EAAsB,OAAtB;AACAJ,MAAAA,GAAG,CAACK,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB;AACnBC,QAAAA,KAAK,EAAE;AACLF,UAAAA,MAAM,EAAE,cADH;AAELG,UAAAA,OAAO,EAAE;AAFJ;AADY,OAArB;AAMAR,MAAAA,GAAG,CAACS,GAAJ;AACA;AACD;;AAED,QAAIN,MAAM,CAACE,MAAP,KAAkB,GAAtB,EAA2B;AACzBL,MAAAA,GAAG,CAACI,GAAJ,CAAQ,YAAR,EAAsB,OAAtB;AACAJ,MAAAA,GAAG,CAACK,MAAJ,CAAW,GAAX,EAAgBC,IAAhB,CAAqB;AACnBC,QAAAA,KAAK,EAAE;AACLF,UAAAA,MAAM,EAAE,WADH;AAELG,UAAAA,OAAO,EAAE;AAFJ;AADY,OAArB;AAMAR,MAAAA,GAAG,CAACS,GAAJ;AACA;AACD;;AAEDR,IAAAA,IAAI,CAACS,SAAD,CAAJ;AACD,GA3BH,EA4BGC,KA5BH,CA4BSC,GAAG,IAAIX,IAAI,CAACW,GAAD,CA5BpB;AA6BD,CAlCM","sourcesContent":["import * as express from 'express';\nimport { verifyToken } from './verifyToken';\nimport { Auth } from '@aimee-blue/ab-contracts';\n\nasync function verifyTokenForRequest(\n allow: Auth.Role[],\n req?: express.Request\n) {\n // For safety purpose check anyway\n // tslint:disable-next-line\n if (!req || !req.headers) {\n return null;\n }\n\n const authorization = req.headers.authorization;\n if (!authorization) {\n return null;\n }\n\n const match = authorization.match(/^Bearer (.*)$/);\n if (!match) {\n return null;\n }\n\n const token = match[1];\n\n return await verifyToken({\n token,\n allow,\n });\n}\n\nexport const expressWithAuth = (allow: Auth.Role[]): express.Handler => (\n req,\n res,\n next\n) => {\n verifyTokenForRequest(allow, req)\n .then(result => {\n if (!result) {\n res.set('Connection', 'close');\n res.status(401).json({\n error: {\n status: 'unauthorized',\n message: 'Unauthorized',\n },\n });\n res.end();\n return;\n }\n\n if (result.status !== 200) {\n res.set('Connection', 'close');\n res.status(404).json({\n error: {\n status: 'not-found',\n message: 'Not found',\n },\n });\n res.end();\n return;\n }\n\n next(undefined);\n })\n .catch(err => next(err));\n};\n"],"file":"expressWithAuth.js"}