@aifabrix/miso-client 3.1.2 → 3.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -2
- package/dist/express/client-token-endpoint.d.ts +76 -0
- package/dist/express/client-token-endpoint.d.ts.map +1 -0
- package/dist/express/client-token-endpoint.js +231 -0
- package/dist/express/client-token-endpoint.js.map +1 -0
- package/dist/express/index.d.ts +2 -1
- package/dist/express/index.d.ts.map +1 -1
- package/dist/express/index.js +8 -3
- package/dist/express/index.js.map +1 -1
- package/dist/express/response-middleware.d.ts.map +1 -1
- package/dist/express/response-middleware.js.map +1 -1
- package/dist/index.d.ts +19 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -4
- package/dist/index.js.map +1 -1
- package/dist/services/auth.service.d.ts +26 -4
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +137 -6
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/browser-permission.service.d.ts +60 -0
- package/dist/services/browser-permission.service.d.ts.map +1 -0
- package/dist/services/browser-permission.service.js +159 -0
- package/dist/services/browser-permission.service.js.map +1 -0
- package/dist/services/browser-role.service.d.ts +60 -0
- package/dist/services/browser-role.service.d.ts.map +1 -0
- package/dist/services/browser-role.service.js +159 -0
- package/dist/services/browser-role.service.js.map +1 -0
- package/dist/services/cache.service.d.ts.map +1 -1
- package/dist/services/cache.service.js +4 -0
- package/dist/services/cache.service.js.map +1 -1
- package/dist/services/logger.service.d.ts +99 -24
- package/dist/services/logger.service.d.ts.map +1 -1
- package/dist/services/logger.service.js +174 -44
- package/dist/services/logger.service.js.map +1 -1
- package/dist/services/redis.service.d.ts.map +1 -1
- package/dist/services/redis.service.js +3 -6
- package/dist/services/redis.service.js.map +1 -1
- package/dist/types/config.types.d.ts +22 -0
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/dist/types/data-client.types.d.ts +10 -0
- package/dist/types/data-client.types.d.ts.map +1 -1
- package/dist/types/data-client.types.js.map +1 -1
- package/dist/utils/audit-log-queue.d.ts +4 -0
- package/dist/utils/audit-log-queue.d.ts.map +1 -1
- package/dist/utils/audit-log-queue.js +22 -2
- package/dist/utils/audit-log-queue.js.map +1 -1
- package/dist/utils/browser-jwt-decoder.d.ts +20 -0
- package/dist/utils/browser-jwt-decoder.d.ts.map +1 -0
- package/dist/utils/browser-jwt-decoder.js +75 -0
- package/dist/utils/browser-jwt-decoder.js.map +1 -0
- package/dist/utils/controller-url-resolver.d.ts +16 -0
- package/dist/utils/controller-url-resolver.d.ts.map +1 -1
- package/dist/utils/controller-url-resolver.js +12 -0
- package/dist/utils/controller-url-resolver.js.map +1 -1
- package/dist/utils/data-client-audit.d.ts.map +1 -1
- package/dist/utils/data-client-audit.js +19 -8
- package/dist/utils/data-client-audit.js.map +1 -1
- package/dist/utils/data-client-auth.d.ts +19 -7
- package/dist/utils/data-client-auth.d.ts.map +1 -1
- package/dist/utils/data-client-auth.js +269 -144
- package/dist/utils/data-client-auth.js.map +1 -1
- package/dist/utils/data-client-auto-init.d.ts +66 -0
- package/dist/utils/data-client-auto-init.d.ts.map +1 -0
- package/dist/utils/data-client-auto-init.js +259 -0
- package/dist/utils/data-client-auto-init.js.map +1 -0
- package/dist/utils/data-client-redirect.d.ts +52 -0
- package/dist/utils/data-client-redirect.d.ts.map +1 -0
- package/dist/utils/data-client-redirect.js +233 -0
- package/dist/utils/data-client-redirect.js.map +1 -0
- package/dist/utils/data-client-request.d.ts +8 -1
- package/dist/utils/data-client-request.d.ts.map +1 -1
- package/dist/utils/data-client-request.js +30 -5
- package/dist/utils/data-client-request.js.map +1 -1
- package/dist/utils/data-client.d.ts +116 -0
- package/dist/utils/data-client.d.ts.map +1 -1
- package/dist/utils/data-client.js +349 -4
- package/dist/utils/data-client.js.map +1 -1
- package/dist/utils/logging-helpers.d.ts +51 -0
- package/dist/utils/logging-helpers.d.ts.map +1 -0
- package/dist/utils/logging-helpers.js +57 -0
- package/dist/utils/logging-helpers.js.map +1 -0
- package/dist/utils/request-context.d.ts +32 -0
- package/dist/utils/request-context.d.ts.map +1 -0
- package/dist/utils/request-context.js +81 -0
- package/dist/utils/request-context.js.map +1 -0
- package/package.json +9 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,0DAAsD;AACtD,0DAAsD;AACtD,sEAAkE;AAClE,8DAA0D;AAC1D,4DAAwD;AACxD,4DAAwD;AACxD,qDAAiD;AACjD,uEAAkE;AAClE,qDAAiD;AACjD,yDAA4D;AAE5D,+DAAwG;AAGxG,MAAa,UAAU;IAWrB,YAAY,MAAwB;QAF5B,gBAAW,GAAG,KAAK,CAAC;QAG1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,4DAA4D;QAC5D,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,wBAAU,CAAC,aAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACzD,CAAC;QAED,4DAA4D;QAC5D,MAAM,cAAc,GAAG,IAAI,yCAAkB,CAAC,MAAM,CAAC,CAAC;QAEtD,uBAAuB;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,4BAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5C,wGAAwG;QACxG,kEAAkE;QAClE,4FAA4F;QAC5F,IAAI,CAAC,MAAM,GAAG,IAAI,8BAAa,CAC7B,cAAuC,EACvC,IAAI,CAAC,KAAK,CACX,CAAC;QAEF,qEAAqE;QACrE,IAAI,CAAC,UAAU,GAAG,IAAI,wBAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtD,sEAAsE;QACtE,wGAAwG;QACxG,8DAA8D;QAC7D,IAAI,CAAC,MAAc,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAElD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,0DAAsD;AACtD,0DAAsD;AACtD,sEAAkE;AAClE,8DAA0D;AAC1D,4DAAwD;AACxD,4DAAwD;AACxD,qDAAiD;AACjD,uEAAkE;AAClE,qDAAiD;AACjD,yDAA4D;AAE5D,+DAAwG;AAGxG,MAAa,UAAU;IAWrB,YAAY,MAAwB;QAF5B,gBAAW,GAAG,KAAK,CAAC;QAG1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,4DAA4D;QAC5D,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,wBAAU,CAAC,aAAa,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACzD,CAAC;QAED,4DAA4D;QAC5D,MAAM,cAAc,GAAG,IAAI,yCAAkB,CAAC,MAAM,CAAC,CAAC;QAEtD,uBAAuB;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,4BAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE5C,wGAAwG;QACxG,kEAAkE;QAClE,4FAA4F;QAC5F,IAAI,CAAC,MAAM,GAAG,IAAI,8BAAa,CAC7B,cAAuC,EACvC,IAAI,CAAC,KAAK,CACX,CAAC;QAEF,qEAAqE;QACrE,IAAI,CAAC,UAAU,GAAG,IAAI,wBAAU,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtD,sEAAsE;QACtE,wGAAwG;QACxG,8DAA8D;QAC7D,IAAI,CAAC,MAAc,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAElD,oFAAoF;QACpF,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjD,kBAAkB;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEhE,qCAAqC;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,0BAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,sCAAiB,CACtC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY,CAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kEAAkE;YAClE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,8CAA8C;QACzE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,mEAAmE;IAEnE;;;OAGG;IACH,QAAQ,CAAC,GAA4C;QACnD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kCAAkC;QAClC,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,4DAA4D;QAC5D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,GAAY,EAAE,cAAyB;QACpD,MAAM,OAAO,GAAG,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QAC7D,OAAO,IAAA,iCAAkB,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,mBAAmB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,KAAK,CAAC,MAGX;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CACjB,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CACX,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CACnB,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAC,MAEZ;QACC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAChB,YAAoB,EACpB,YAA2B;QAE3B,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED,kEAAkE;IAElE;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CACZ,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CACX,KAAa,EACb,IAAY,EACZ,YAA2B;QAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,KAAa,EACb,KAAe,EACf,YAA2B;QAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW,CACf,KAAa,EACb,KAAe,EACf,YAA2B;QAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAClB,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CACjB,KAAa,EACb,UAAkB,EAClB,YAA2B;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CACpB,KAAa,EACb,WAAqB,EACrB,YAA2B;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,iBAAiB,CACrB,KAAa,EACb,WAAqB,EACrB,YAA2B;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CACtB,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CACzB,KAAa,EACb,YAA2B;QAE3B,OAAO,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrE,CAAC;IAED,4DAA4D;IAE5D;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,+DAA+D;IAC/D,kFAAkF;IAClF,8DAA8D;IAE9D,0DAA0D;IAE1D;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,4DAA4D;IAE5D;;OAEG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,uBAAuB,CAC3B,MAAyC,EACzC,GAAW,EACX,YAA0B,EAC1B,IAAc,EACd,MAA2C;QAE3C,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAC5C,MAAM,EACN,GAAG,EACH,YAAY,EACZ,IAAI,EACJ,MAAM,CACP,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAChB,OAAyE,EACzE,WAAoB,EACpB,MAAe;QAEf,OAAO;YACL,OAAO;YACP,WAAW;YACX,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,WAAoB;QACzC,OAAO,mCAAmB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC7D,CAAC;CACF;AA5cD,gCA4cC;AAED,eAAe;AACf,uDAAqC;AAErC,wCAAwC;AACxC,2DAAyC;AACzC,uDAAqC;AACrC,qDAAmC;AAQnC,qCAAqC;AACrC,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,wDAAsD;AAA7C,2GAAA,WAAW,OAAA;AACpB,oEAAkE;AAAzD,uHAAA,iBAAiB,OAAA;AAC1B,oFAAiF;AAAxE,sIAAA,wBAAwB,OAAA;AACjC,wEAAqE;AAA5D,0HAAA,kBAAkB,OAAA;AAC3B,4DAA0D;AAAjD,+GAAA,aAAa,OAAA;AACtB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AAEnB,mBAAmB;AACnB,uDAAmD;AAA1C,2GAAA,UAAU,OAAA;AACnB,6DAA0D;AAAjD,kHAAA,cAAc,OAAA;AACvB,+DAAgE;AAAvD,wHAAA,mBAAmB,OAAA;AAC5B,mDAA6D;AAApD,qHAAA,sBAAsB,OAAA;AAG/B,2EAA+F;AAAtF,+HAAA,oBAAoB,OAAA;AAAE,oHAAA,SAAS,OAAA;AAAE,sHAAA,WAAW,OAAA;AACrD,2DAAgE;AAAvD,wHAAA,qBAAqB,OAAA;AAE9B,2DAAgE;AAAvD,wHAAA,qBAAqB,OAAA;AAG9B,4CAA4C;AAC5C,2DAAyC;AACzC,uDAAqC;AACrC,qDAAmC;AAEnC,qCAAqC;AACrC,yCAKwB;AAJtB,yGAAA,eAAe,OAAA;AACf,2GAAA,iBAAiB,OAAA;AACjB,wGAAA,cAAc,OAAA;AACd,wGAAA,cAAc,OAAA;AAGhB,8BAA8B;AAC9B,2FAA2F;AAC3F,qCAuBmB;AAtBjB,yGAAA,cAAc,OAAA;AAEd,gHAAA,qBAAqB,OAAA;AACrB,uGAAA,YAAY,OAAA;AACZ,4GAAA,iBAAiB,OAAA;AACjB,2GAAA,gBAAgB,OAAA;AAChB,mGAAA,QAAQ,OAAA;AAIR,gHAAA,qBAAqB,OAAA;AACrB,8GAAA,mBAAmB,OAAA;AAEnB,yGAAA,cAAc,OAAA;AACd,2GAAA,gBAAgB,OAAA;AAEhB,0GAAA,eAAe,OAAA;AACf,wGAAA,aAAa,OAAA;AACb,4GAAA,iBAAiB,OAAA;AACjB,yGAAA,cAAc,OAAA;AACd,oHAAA,yBAAyB,OAAA;AACzB,oGAAA,SAAS,OAAA;AAWX,oCAAoC;AACpC,mDAA6D;AAApD,yGAAA,UAAU,OAAA;AAAE,yGAAA,UAAU,OAAA;AAc/B,+CAA+C;AAC/C,uEAAoG;AAA3F,iIAAA,wBAAwB,OAAA;AAAE,kIAAA,yBAAyB,OAAA"}
|
|
@@ -2,18 +2,24 @@
|
|
|
2
2
|
* Authentication service for token validation and user management
|
|
3
3
|
*/
|
|
4
4
|
import { HttpClient } from "../utils/http-client";
|
|
5
|
-
import {
|
|
6
|
-
import { UserInfo, AuthStrategy, LoginResponse, LogoutResponse } from "../types/config.types";
|
|
5
|
+
import { CacheService } from "./cache.service";
|
|
6
|
+
import { UserInfo, AuthStrategy, LoginResponse, LogoutResponse, RefreshTokenResponse } from "../types/config.types";
|
|
7
7
|
export declare class AuthService {
|
|
8
8
|
private httpClient;
|
|
9
|
-
private
|
|
9
|
+
private cache;
|
|
10
10
|
private config;
|
|
11
|
-
|
|
11
|
+
private tokenValidationTTL;
|
|
12
|
+
constructor(httpClient: HttpClient, cache: CacheService);
|
|
12
13
|
/**
|
|
13
14
|
* Check if token matches configured API key for testing
|
|
14
15
|
* @private
|
|
15
16
|
*/
|
|
16
17
|
private isApiKeyToken;
|
|
18
|
+
/**
|
|
19
|
+
* Extract userId from JWT token without making API call
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
22
|
+
private extractUserIdFromToken;
|
|
17
23
|
/**
|
|
18
24
|
* Generate unique correlation ID for request tracking
|
|
19
25
|
*/
|
|
@@ -42,9 +48,11 @@ export declare class AuthService {
|
|
|
42
48
|
}): Promise<LoginResponse>;
|
|
43
49
|
/**
|
|
44
50
|
* Validate token with controller
|
|
51
|
+
* Caches validation results by userId with configurable TTL (default 15 minutes)
|
|
45
52
|
* If API_KEY is configured and token matches, returns true without calling controller
|
|
46
53
|
* @param token - User authentication token
|
|
47
54
|
* @param authStrategy - Optional authentication strategy override
|
|
55
|
+
* @returns true if token is valid, false otherwise
|
|
48
56
|
*/
|
|
49
57
|
validateToken(token: string, authStrategy?: AuthStrategy): Promise<boolean>;
|
|
50
58
|
/**
|
|
@@ -61,10 +69,17 @@ export declare class AuthService {
|
|
|
61
69
|
* @param authStrategy - Optional authentication strategy override
|
|
62
70
|
*/
|
|
63
71
|
getUserInfo(token: string, authStrategy?: AuthStrategy): Promise<UserInfo | null>;
|
|
72
|
+
/**
|
|
73
|
+
* Clear cached token validation result for a user
|
|
74
|
+
* Extracts userId from JWT token directly (no API call)
|
|
75
|
+
* @param token - User authentication token
|
|
76
|
+
*/
|
|
77
|
+
clearTokenCache(token: string): void;
|
|
64
78
|
/**
|
|
65
79
|
* Logout user
|
|
66
80
|
* Gracefully handles cases where there's no active session (400 Bad Request)
|
|
67
81
|
* Only throws errors for unexpected failures (network errors, 5xx errors, etc.)
|
|
82
|
+
* Automatically clears token validation cache on logout
|
|
68
83
|
* @param params - Logout parameters
|
|
69
84
|
* @param params.token - Access token to invalidate
|
|
70
85
|
* @returns Logout response with success message
|
|
@@ -72,6 +87,13 @@ export declare class AuthService {
|
|
|
72
87
|
logout(params: {
|
|
73
88
|
token: string;
|
|
74
89
|
}): Promise<LogoutResponse>;
|
|
90
|
+
/**
|
|
91
|
+
* Refresh user access token using refresh token
|
|
92
|
+
* @param refreshToken - Refresh token to exchange for new access token
|
|
93
|
+
* @param authStrategy - Optional authentication strategy override
|
|
94
|
+
* @returns New access token, refresh token, and expiration info, or null on error
|
|
95
|
+
*/
|
|
96
|
+
refreshToken(refreshToken: string, authStrategy?: AuthStrategy): Promise<RefreshTokenResponse | null>;
|
|
75
97
|
/**
|
|
76
98
|
* Check if user is authenticated (has valid token)
|
|
77
99
|
* @param token - User authentication token
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAEL,QAAQ,EAER,YAAY,EACZ,aAAa,EACb,cAAc,
|
|
1
|
+
{"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAEL,QAAQ,EAER,YAAY,EACZ,aAAa,EACb,cAAc,EACd,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAU/B,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;IAOvD;;;OAGG;IACH,OAAO,CAAC,aAAa;IAIrB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAsF5C;;;;;;;;;;;;OAYG;IACG,KAAK,CAAC,MAAM,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,aAAa,CAAC;IAsF1B;;;;;;;OAOG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IA2CnB;;;;;OAKG;IACG,OAAO,CACX,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuB3B;;;;;OAKG;IACG,WAAW,CACf,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuB3B;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAcpC;;;;;;;;OAQG;IACG,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAwHhE;;;;;OAKG;IACG,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAsFvC;;;;OAIG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;CAGpB"}
|
|
@@ -35,15 +35,20 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
return result;
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
38
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
42
|
exports.AuthService = void 0;
|
|
40
43
|
const errors_1 = require("../utils/errors");
|
|
41
44
|
const controller_url_resolver_1 = require("../utils/controller-url-resolver");
|
|
45
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
42
46
|
class AuthService {
|
|
43
|
-
constructor(httpClient,
|
|
47
|
+
constructor(httpClient, cache) {
|
|
44
48
|
this.config = httpClient.config;
|
|
45
|
-
this.
|
|
49
|
+
this.cache = cache;
|
|
46
50
|
this.httpClient = httpClient;
|
|
51
|
+
this.tokenValidationTTL = this.config.cache?.tokenValidationTTL || 900; // 15 minutes default
|
|
47
52
|
}
|
|
48
53
|
/**
|
|
49
54
|
* Check if token matches configured API key for testing
|
|
@@ -52,6 +57,25 @@ class AuthService {
|
|
|
52
57
|
isApiKeyToken(token) {
|
|
53
58
|
return this.config.apiKey !== undefined && token === this.config.apiKey;
|
|
54
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Extract userId from JWT token without making API call
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
extractUserIdFromToken(token) {
|
|
65
|
+
try {
|
|
66
|
+
const decoded = jsonwebtoken_1.default.decode(token);
|
|
67
|
+
if (!decoded)
|
|
68
|
+
return null;
|
|
69
|
+
// Try common JWT claim fields for user ID
|
|
70
|
+
return (decoded.sub ||
|
|
71
|
+
decoded.userId ||
|
|
72
|
+
decoded.user_id ||
|
|
73
|
+
decoded.id);
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
55
79
|
/**
|
|
56
80
|
* Generate unique correlation ID for request tracking
|
|
57
81
|
*/
|
|
@@ -114,7 +138,7 @@ class AuthService {
|
|
|
114
138
|
}
|
|
115
139
|
}
|
|
116
140
|
else if (axiosError.request) {
|
|
117
|
-
responseDetails.push(`request:
|
|
141
|
+
responseDetails.push(`request: [Request object - not serializable]`);
|
|
118
142
|
responseDetails.push(`message: ${axiosError.message}`);
|
|
119
143
|
}
|
|
120
144
|
else {
|
|
@@ -187,7 +211,7 @@ class AuthService {
|
|
|
187
211
|
}
|
|
188
212
|
}
|
|
189
213
|
else if (axiosError.request) {
|
|
190
|
-
responseDetails.push(`request:
|
|
214
|
+
responseDetails.push(`request: [Request object - not serializable]`);
|
|
191
215
|
responseDetails.push(`message: ${axiosError.message}`);
|
|
192
216
|
}
|
|
193
217
|
else {
|
|
@@ -203,9 +227,11 @@ class AuthService {
|
|
|
203
227
|
}
|
|
204
228
|
/**
|
|
205
229
|
* Validate token with controller
|
|
230
|
+
* Caches validation results by userId with configurable TTL (default 15 minutes)
|
|
206
231
|
* If API_KEY is configured and token matches, returns true without calling controller
|
|
207
232
|
* @param token - User authentication token
|
|
208
233
|
* @param authStrategy - Optional authentication strategy override
|
|
234
|
+
* @returns true if token is valid, false otherwise
|
|
209
235
|
*/
|
|
210
236
|
async validateToken(token, authStrategy) {
|
|
211
237
|
// Check API_KEY bypass for testing
|
|
@@ -213,8 +239,24 @@ class AuthService {
|
|
|
213
239
|
return true;
|
|
214
240
|
}
|
|
215
241
|
try {
|
|
242
|
+
// Extract userId from token to check cache first (avoids API call on cache hit)
|
|
243
|
+
const userId = this.extractUserIdFromToken(token);
|
|
244
|
+
const cacheKey = userId ? `token:${userId}` : null;
|
|
245
|
+
// Check cache first if we have userId
|
|
246
|
+
if (cacheKey) {
|
|
247
|
+
const cached = await this.cache.get(cacheKey);
|
|
248
|
+
if (cached) {
|
|
249
|
+
return cached.authenticated;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// Cache miss or no userId in token - fetch from controller
|
|
216
253
|
const result = await this.httpClient.validateTokenRequest(token, authStrategy);
|
|
217
|
-
|
|
254
|
+
const authenticated = result.authenticated;
|
|
255
|
+
// Cache the result if we have userId
|
|
256
|
+
if (userId && cacheKey) {
|
|
257
|
+
await this.cache.set(cacheKey, { authenticated, timestamp: Date.now() }, this.tokenValidationTTL);
|
|
258
|
+
}
|
|
259
|
+
return authenticated;
|
|
218
260
|
}
|
|
219
261
|
catch (error) {
|
|
220
262
|
// Token validation failed, return false
|
|
@@ -264,10 +306,30 @@ class AuthService {
|
|
|
264
306
|
return null;
|
|
265
307
|
}
|
|
266
308
|
}
|
|
309
|
+
/**
|
|
310
|
+
* Clear cached token validation result for a user
|
|
311
|
+
* Extracts userId from JWT token directly (no API call)
|
|
312
|
+
* @param token - User authentication token
|
|
313
|
+
*/
|
|
314
|
+
clearTokenCache(token) {
|
|
315
|
+
try {
|
|
316
|
+
const userId = this.extractUserIdFromToken(token);
|
|
317
|
+
if (userId) {
|
|
318
|
+
const cacheKey = `token:${userId}`;
|
|
319
|
+
// Use void to ignore promise result - cache clearing should not block
|
|
320
|
+
void this.cache.delete(cacheKey);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
// Log but don't throw - cache clearing failures should not break flow
|
|
325
|
+
console.warn("Failed to clear token cache:", error);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
267
328
|
/**
|
|
268
329
|
* Logout user
|
|
269
330
|
* Gracefully handles cases where there's no active session (400 Bad Request)
|
|
270
331
|
* Only throws errors for unexpected failures (network errors, 5xx errors, etc.)
|
|
332
|
+
* Automatically clears token validation cache on logout
|
|
271
333
|
* @param params - Logout parameters
|
|
272
334
|
* @param params.token - Access token to invalidate
|
|
273
335
|
* @returns Logout response with success message
|
|
@@ -278,6 +340,8 @@ class AuthService {
|
|
|
278
340
|
try {
|
|
279
341
|
// Backend extracts app/env from client token
|
|
280
342
|
const response = await this.httpClient.request("POST", "/api/v1/auth/logout", { token: params.token });
|
|
343
|
+
// Clear token cache after successful logout
|
|
344
|
+
this.clearTokenCache(params.token);
|
|
281
345
|
return response;
|
|
282
346
|
}
|
|
283
347
|
catch (error) {
|
|
@@ -294,6 +358,8 @@ class AuthService {
|
|
|
294
358
|
};
|
|
295
359
|
console.warn(`Logout: No active session or invalid request (400). ` +
|
|
296
360
|
`Response: ${JSON.stringify(errorDetails)} [correlationId: ${correlationId}, clientId: ${clientId}]`);
|
|
361
|
+
// Clear token cache even if logout returns 400 (idempotent behavior)
|
|
362
|
+
this.clearTokenCache(params.token);
|
|
297
363
|
// Return a success response - logout is idempotent
|
|
298
364
|
return {
|
|
299
365
|
success: true,
|
|
@@ -324,6 +390,8 @@ class AuthService {
|
|
|
324
390
|
: "No response data";
|
|
325
391
|
console.warn(`Logout: No active session or invalid request (400). ` +
|
|
326
392
|
`Response: ${responseData} [correlationId: ${correlationId}, clientId: ${clientId}]`);
|
|
393
|
+
// Clear token cache even if logout returns 400 (idempotent behavior)
|
|
394
|
+
this.clearTokenCache(params.token);
|
|
327
395
|
// Return a success response - logout is idempotent
|
|
328
396
|
return {
|
|
329
397
|
success: true,
|
|
@@ -342,7 +410,7 @@ class AuthService {
|
|
|
342
410
|
}
|
|
343
411
|
}
|
|
344
412
|
else if (axiosError.request) {
|
|
345
|
-
responseDetails.push(`request:
|
|
413
|
+
responseDetails.push(`request: [Request object - not serializable]`);
|
|
346
414
|
responseDetails.push(`message: ${axiosError.message}`);
|
|
347
415
|
}
|
|
348
416
|
else {
|
|
@@ -356,6 +424,69 @@ class AuthService {
|
|
|
356
424
|
throw new Error(`Logout failed: ${errorMessage} [correlationId: ${correlationId}, clientId: ${clientId}]`);
|
|
357
425
|
}
|
|
358
426
|
}
|
|
427
|
+
/**
|
|
428
|
+
* Refresh user access token using refresh token
|
|
429
|
+
* @param refreshToken - Refresh token to exchange for new access token
|
|
430
|
+
* @param authStrategy - Optional authentication strategy override
|
|
431
|
+
* @returns New access token, refresh token, and expiration info, or null on error
|
|
432
|
+
*/
|
|
433
|
+
async refreshToken(refreshToken, authStrategy) {
|
|
434
|
+
const correlationId = this.generateCorrelationId();
|
|
435
|
+
const clientId = this.config.clientId;
|
|
436
|
+
try {
|
|
437
|
+
// Use authenticatedRequest if authStrategy is provided, otherwise use request
|
|
438
|
+
// Refresh endpoint uses client token (via request), but can accept authStrategy override
|
|
439
|
+
const response = authStrategy
|
|
440
|
+
? await this.httpClient.authenticatedRequest("POST", "/api/v1/auth/refresh", "", // Empty token - authStrategy will handle authentication
|
|
441
|
+
{ refreshToken }, undefined, authStrategy)
|
|
442
|
+
: await this.httpClient.request("POST", "/api/v1/auth/refresh", { refreshToken });
|
|
443
|
+
return response;
|
|
444
|
+
}
|
|
445
|
+
catch (error) {
|
|
446
|
+
// Check if it's a MisoClientError (converted from AxiosError by HttpClient)
|
|
447
|
+
if (error instanceof errors_1.MisoClientError) {
|
|
448
|
+
const errorDetails = {
|
|
449
|
+
statusCode: error.statusCode,
|
|
450
|
+
message: error.message,
|
|
451
|
+
errorResponse: error.errorResponse,
|
|
452
|
+
errorBody: error.errorBody,
|
|
453
|
+
};
|
|
454
|
+
console.error(`Refresh token failed: ${error.message}. ` +
|
|
455
|
+
`Full response: ${JSON.stringify(errorDetails)} [correlationId: ${correlationId}, clientId: ${clientId}]`);
|
|
456
|
+
return null;
|
|
457
|
+
}
|
|
458
|
+
// Check if it's an AxiosError (shouldn't happen after HttpClient, but handle just in case)
|
|
459
|
+
if (error &&
|
|
460
|
+
typeof error === "object" &&
|
|
461
|
+
"isAxiosError" in error &&
|
|
462
|
+
error.isAxiosError) {
|
|
463
|
+
const axiosError = error;
|
|
464
|
+
const responseDetails = [];
|
|
465
|
+
if (axiosError.response) {
|
|
466
|
+
responseDetails.push(`status: ${axiosError.response.status}`);
|
|
467
|
+
responseDetails.push(`statusText: ${axiosError.response.statusText}`);
|
|
468
|
+
responseDetails.push(`data: ${JSON.stringify(axiosError.response.data)}`);
|
|
469
|
+
if (axiosError.response.headers) {
|
|
470
|
+
responseDetails.push(`headers: ${JSON.stringify(axiosError.response.headers)}`);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
else if (axiosError.request) {
|
|
474
|
+
responseDetails.push(`request: [Request object - not serializable]`);
|
|
475
|
+
responseDetails.push(`message: ${axiosError.message}`);
|
|
476
|
+
}
|
|
477
|
+
else {
|
|
478
|
+
responseDetails.push(`message: ${axiosError.message}`);
|
|
479
|
+
}
|
|
480
|
+
console.error(`Refresh token failed: ${axiosError.message}. ` +
|
|
481
|
+
`Full response: {${responseDetails.join(", ")}} [correlationId: ${correlationId}, clientId: ${clientId}]`);
|
|
482
|
+
return null;
|
|
483
|
+
}
|
|
484
|
+
// Non-Axios/MisoClientError (network errors, timeouts, etc.)
|
|
485
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
486
|
+
console.error(`Refresh token failed: ${errorMessage} [correlationId: ${correlationId}, clientId: ${clientId}]`);
|
|
487
|
+
return null;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
359
490
|
/**
|
|
360
491
|
* Check if user is authenticated (has valid token)
|
|
361
492
|
* @param token - User authentication token
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../src/services/auth.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-compatible permission service for user authorization with caching
|
|
3
|
+
* Uses in-memory cache only (no Redis) and browser-compatible JWT decoder
|
|
4
|
+
*/
|
|
5
|
+
import { HttpClient } from "../utils/http-client";
|
|
6
|
+
import { CacheService } from "./cache.service";
|
|
7
|
+
import { AuthStrategy } from "../types/config.types";
|
|
8
|
+
export declare class BrowserPermissionService {
|
|
9
|
+
private httpClient;
|
|
10
|
+
private cache;
|
|
11
|
+
private config;
|
|
12
|
+
private permissionTTL;
|
|
13
|
+
constructor(httpClient: HttpClient, cache: CacheService);
|
|
14
|
+
/**
|
|
15
|
+
* Extract userId from JWT token without making API call
|
|
16
|
+
* Uses browser-compatible JWT decoder
|
|
17
|
+
*/
|
|
18
|
+
private extractUserIdFromToken;
|
|
19
|
+
/**
|
|
20
|
+
* Get user permissions with caching
|
|
21
|
+
* Optimized to extract userId from token first to check cache before API call
|
|
22
|
+
* @param token - User authentication token
|
|
23
|
+
* @param authStrategy - Optional authentication strategy override
|
|
24
|
+
*/
|
|
25
|
+
getPermissions(token: string, authStrategy?: AuthStrategy): Promise<string[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Check if user has specific permission
|
|
28
|
+
* @param token - User authentication token
|
|
29
|
+
* @param permission - Permission to check
|
|
30
|
+
* @param authStrategy - Optional authentication strategy override
|
|
31
|
+
*/
|
|
32
|
+
hasPermission(token: string, permission: string, authStrategy?: AuthStrategy): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Check if user has any of the specified permissions
|
|
35
|
+
* @param token - User authentication token
|
|
36
|
+
* @param permissions - Permissions to check
|
|
37
|
+
* @param authStrategy - Optional authentication strategy override
|
|
38
|
+
*/
|
|
39
|
+
hasAnyPermission(token: string, permissions: string[], authStrategy?: AuthStrategy): Promise<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* Check if user has all of the specified permissions
|
|
42
|
+
* @param token - User authentication token
|
|
43
|
+
* @param permissions - Permissions to check
|
|
44
|
+
* @param authStrategy - Optional authentication strategy override
|
|
45
|
+
*/
|
|
46
|
+
hasAllPermissions(token: string, permissions: string[], authStrategy?: AuthStrategy): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Force refresh permissions from controller (bypass cache)
|
|
49
|
+
* @param token - User authentication token
|
|
50
|
+
* @param authStrategy - Optional authentication strategy override
|
|
51
|
+
*/
|
|
52
|
+
refreshPermissions(token: string, authStrategy?: AuthStrategy): Promise<string[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Clear cached permissions for a user
|
|
55
|
+
* @param token - User authentication token
|
|
56
|
+
* @param authStrategy - Optional authentication strategy override
|
|
57
|
+
*/
|
|
58
|
+
clearPermissionsCache(token: string, authStrategy?: AuthStrategy): Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=browser-permission.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-permission.service.d.ts","sourceRoot":"","sources":["../../src/services/browser-permission.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAGL,YAAY,EACb,MAAM,uBAAuB,CAAC;AAQ/B,qBAAa,wBAAwB;IACnC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,aAAa,CAAS;gBAElB,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY;IAOvD;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAmB9B;;;;;OAKG;IACG,cAAc,CAClB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IAuDpB;;;;;OAKG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;OAKG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAOnB;;;;;OAKG;IACG,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,OAAO,CAAC;IAOnB;;;;OAIG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC;IA0CpB;;;;OAIG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,IAAI,CAAC;CAqBjB"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Browser-compatible permission service for user authorization with caching
|
|
4
|
+
* Uses in-memory cache only (no Redis) and browser-compatible JWT decoder
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.BrowserPermissionService = void 0;
|
|
8
|
+
const browser_jwt_decoder_1 = require("../utils/browser-jwt-decoder");
|
|
9
|
+
class BrowserPermissionService {
|
|
10
|
+
constructor(httpClient, cache) {
|
|
11
|
+
this.config = httpClient.config;
|
|
12
|
+
this.cache = cache;
|
|
13
|
+
this.httpClient = httpClient;
|
|
14
|
+
this.permissionTTL = this.config.cache?.permissionTTL || 900; // 15 minutes default
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Extract userId from JWT token without making API call
|
|
18
|
+
* Uses browser-compatible JWT decoder
|
|
19
|
+
*/
|
|
20
|
+
extractUserIdFromToken(token) {
|
|
21
|
+
try {
|
|
22
|
+
const decoded = (0, browser_jwt_decoder_1.decodeJWT)(token);
|
|
23
|
+
if (!decoded) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
// Try common JWT claim fields for user ID
|
|
27
|
+
return (decoded.sub ||
|
|
28
|
+
decoded.userId ||
|
|
29
|
+
decoded.user_id ||
|
|
30
|
+
decoded.id);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get user permissions with caching
|
|
38
|
+
* Optimized to extract userId from token first to check cache before API call
|
|
39
|
+
* @param token - User authentication token
|
|
40
|
+
* @param authStrategy - Optional authentication strategy override
|
|
41
|
+
*/
|
|
42
|
+
async getPermissions(token, authStrategy) {
|
|
43
|
+
try {
|
|
44
|
+
// Extract userId from token to check cache first (avoids API call on cache hit)
|
|
45
|
+
let userId = this.extractUserIdFromToken(token);
|
|
46
|
+
const cacheKey = userId ? `permissions:${userId}` : null;
|
|
47
|
+
// Check cache first if we have userId
|
|
48
|
+
if (cacheKey) {
|
|
49
|
+
const cached = await this.cache.get(cacheKey);
|
|
50
|
+
if (cached) {
|
|
51
|
+
return cached.permissions || [];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Cache miss or no userId in token - fetch from controller
|
|
55
|
+
// If we don't have userId, get it from validate endpoint
|
|
56
|
+
if (!userId) {
|
|
57
|
+
const userInfo = await this.httpClient.validateTokenRequest(token, authStrategy);
|
|
58
|
+
userId = userInfo.user?.id || null;
|
|
59
|
+
if (!userId) {
|
|
60
|
+
return [];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Cache miss - fetch from controller
|
|
64
|
+
const permissionResult = await this.httpClient.authenticatedRequest("GET", "/api/v1/auth/permissions", // Backend knows app/env from client token
|
|
65
|
+
token, undefined, undefined, authStrategy);
|
|
66
|
+
const permissions = permissionResult.permissions || [];
|
|
67
|
+
// Cache the result (use userId-based key)
|
|
68
|
+
const finalCacheKey = `permissions:${userId}`;
|
|
69
|
+
await this.cache.set(finalCacheKey, { permissions, timestamp: Date.now() }, this.permissionTTL);
|
|
70
|
+
return permissions;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
// eslint-disable-next-line no-console
|
|
74
|
+
console.error("Failed to get permissions:", error);
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if user has specific permission
|
|
80
|
+
* @param token - User authentication token
|
|
81
|
+
* @param permission - Permission to check
|
|
82
|
+
* @param authStrategy - Optional authentication strategy override
|
|
83
|
+
*/
|
|
84
|
+
async hasPermission(token, permission, authStrategy) {
|
|
85
|
+
const permissions = await this.getPermissions(token, authStrategy);
|
|
86
|
+
return permissions.includes(permission);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if user has any of the specified permissions
|
|
90
|
+
* @param token - User authentication token
|
|
91
|
+
* @param permissions - Permissions to check
|
|
92
|
+
* @param authStrategy - Optional authentication strategy override
|
|
93
|
+
*/
|
|
94
|
+
async hasAnyPermission(token, permissions, authStrategy) {
|
|
95
|
+
const userPermissions = await this.getPermissions(token, authStrategy);
|
|
96
|
+
return permissions.some((permission) => userPermissions.includes(permission));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if user has all of the specified permissions
|
|
100
|
+
* @param token - User authentication token
|
|
101
|
+
* @param permissions - Permissions to check
|
|
102
|
+
* @param authStrategy - Optional authentication strategy override
|
|
103
|
+
*/
|
|
104
|
+
async hasAllPermissions(token, permissions, authStrategy) {
|
|
105
|
+
const userPermissions = await this.getPermissions(token, authStrategy);
|
|
106
|
+
return permissions.every((permission) => userPermissions.includes(permission));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Force refresh permissions from controller (bypass cache)
|
|
110
|
+
* @param token - User authentication token
|
|
111
|
+
* @param authStrategy - Optional authentication strategy override
|
|
112
|
+
*/
|
|
113
|
+
async refreshPermissions(token, authStrategy) {
|
|
114
|
+
try {
|
|
115
|
+
// Get user info to extract userId
|
|
116
|
+
const userInfo = await this.httpClient.validateTokenRequest(token, authStrategy);
|
|
117
|
+
if (!userInfo.user?.id) {
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
const userId = userInfo.user.id;
|
|
121
|
+
const cacheKey = `permissions:${userId}`;
|
|
122
|
+
// Fetch fresh permissions from controller using refresh endpoint
|
|
123
|
+
const permissionResult = await this.httpClient.authenticatedRequest("GET", "/api/v1/auth/permissions/refresh", token, undefined, undefined, authStrategy);
|
|
124
|
+
const permissions = permissionResult.permissions || [];
|
|
125
|
+
// Update cache with fresh data
|
|
126
|
+
await this.cache.set(cacheKey, { permissions, timestamp: Date.now() }, this.permissionTTL);
|
|
127
|
+
return permissions;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
// eslint-disable-next-line no-console
|
|
131
|
+
console.error("Failed to refresh permissions:", error);
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Clear cached permissions for a user
|
|
137
|
+
* @param token - User authentication token
|
|
138
|
+
* @param authStrategy - Optional authentication strategy override
|
|
139
|
+
*/
|
|
140
|
+
async clearPermissionsCache(token, authStrategy) {
|
|
141
|
+
try {
|
|
142
|
+
// Get user info to extract userId
|
|
143
|
+
const userInfo = await this.httpClient.validateTokenRequest(token, authStrategy);
|
|
144
|
+
if (!userInfo.user?.id) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const userId = userInfo.user.id;
|
|
148
|
+
const cacheKey = `permissions:${userId}`;
|
|
149
|
+
// Clear from cache
|
|
150
|
+
await this.cache.delete(cacheKey);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
// eslint-disable-next-line no-console
|
|
154
|
+
console.error("Failed to clear permissions cache:", error);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.BrowserPermissionService = BrowserPermissionService;
|
|
159
|
+
//# sourceMappingURL=browser-permission.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-permission.service.js","sourceRoot":"","sources":["../../src/services/browser-permission.service.ts"],"names":[],"mappings":"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"}
|