@privateaim/server-http-kit 0.8.20 → 0.8.22

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.
Files changed (79) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/index.mjs +548 -0
  3. package/dist/index.mjs.map +1 -0
  4. package/dist/middlewares/error.d.ts.map +1 -1
  5. package/dist/services/authup/middleware.d.ts.map +1 -1
  6. package/dist/services/authup/permission-provider.d.ts +2 -2
  7. package/dist/services/authup/permission-provider.d.ts.map +1 -1
  8. package/dist/swagger/module.d.ts +1 -1
  9. package/dist/swagger/module.d.ts.map +1 -1
  10. package/package.json +33 -23
  11. package/rollup.config.mjs +18 -0
  12. package/src/middlewares/error.ts +6 -1
  13. package/src/services/authup/middleware.ts +15 -9
  14. package/src/services/authup/permission-provider.ts +2 -2
  15. package/src/services/authup/utils.ts +2 -2
  16. package/dist/constants.js +0 -15
  17. package/dist/constants.js.map +0 -1
  18. package/dist/index.js +0 -28
  19. package/dist/index.js.map +0 -1
  20. package/dist/middlewares/basic.js +0 -14
  21. package/dist/middlewares/basic.js.map +0 -1
  22. package/dist/middlewares/cors.js +0 -23
  23. package/dist/middlewares/cors.js.map +0 -1
  24. package/dist/middlewares/decorators.js +0 -39
  25. package/dist/middlewares/decorators.js.map +0 -1
  26. package/dist/middlewares/error.js +0 -91
  27. package/dist/middlewares/error.js.map +0 -1
  28. package/dist/middlewares/force-logged-in.js +0 -18
  29. package/dist/middlewares/force-logged-in.js.map +0 -1
  30. package/dist/middlewares/index.js +0 -33
  31. package/dist/middlewares/index.js.map +0 -1
  32. package/dist/middlewares/module.js +0 -41
  33. package/dist/middlewares/module.js.map +0 -1
  34. package/dist/middlewares/prometheus.js +0 -14
  35. package/dist/middlewares/prometheus.js.map +0 -1
  36. package/dist/middlewares/rate-limit.js +0 -36
  37. package/dist/middlewares/rate-limit.js.map +0 -1
  38. package/dist/middlewares/swagger.js +0 -29
  39. package/dist/middlewares/swagger.js.map +0 -1
  40. package/dist/middlewares/types.js +0 -9
  41. package/dist/middlewares/types.js.map +0 -1
  42. package/dist/request/env.js +0 -21
  43. package/dist/request/env.js.map +0 -1
  44. package/dist/request/identity-realm.js +0 -21
  45. package/dist/request/identity-realm.js.map +0 -1
  46. package/dist/request/identity.js +0 -32
  47. package/dist/request/identity.js.map +0 -1
  48. package/dist/request/index.js +0 -28
  49. package/dist/request/index.js.map +0 -1
  50. package/dist/request/permission/helper.js +0 -23
  51. package/dist/request/permission/helper.js.map +0 -1
  52. package/dist/request/permission/index.js +0 -25
  53. package/dist/request/permission/index.js.map +0 -1
  54. package/dist/request/permission/module.js +0 -47
  55. package/dist/request/permission/module.js.map +0 -1
  56. package/dist/request/types.js +0 -9
  57. package/dist/request/types.js.map +0 -1
  58. package/dist/services/authup/index.js +0 -25
  59. package/dist/services/authup/index.js.map +0 -1
  60. package/dist/services/authup/middleware.js +0 -86
  61. package/dist/services/authup/middleware.js.map +0 -1
  62. package/dist/services/authup/permission-provider.js +0 -20
  63. package/dist/services/authup/permission-provider.js.map +0 -1
  64. package/dist/services/authup/types.js +0 -9
  65. package/dist/services/authup/types.js.map +0 -1
  66. package/dist/services/authup/utils.js +0 -51
  67. package/dist/services/authup/utils.js.map +0 -1
  68. package/dist/services/index.js +0 -24
  69. package/dist/services/index.js.map +0 -1
  70. package/dist/swagger/index.js +0 -24
  71. package/dist/swagger/index.js.map +0 -1
  72. package/dist/swagger/module.js +0 -66
  73. package/dist/swagger/module.js.map +0 -1
  74. package/dist/swagger/types.js +0 -9
  75. package/dist/swagger/types.js.map +0 -1
  76. package/dist/utils/boolable-to-object.js +0 -16
  77. package/dist/utils/boolable-to-object.js.map +0 -1
  78. package/dist/utils/index.js +0 -24
  79. package/dist/utils/index.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/constants.ts","../src/middlewares/basic.ts","../src/middlewares/cors.ts","../../../node_modules/@routup/body/dist/index.mjs","../../../node_modules/@routup/cookie/dist/index.mjs","../../../node_modules/@routup/query/dist/index.mjs","../src/middlewares/decorators.ts","../src/middlewares/error.ts","../src/request/env.ts","../src/request/permission/helper.ts","../src/request/identity.ts","../src/request/permission/module.ts","../src/request/identity-realm.ts","../src/middlewares/force-logged-in.ts","../src/services/authup/permission-provider.ts","../src/services/authup/utils.ts","../src/services/authup/middleware.ts","../src/utils/boolable-to-object.ts","../src/middlewares/prometheus.ts","../src/middlewares/rate-limit.ts","../src/middlewares/swagger.ts","../src/middlewares/module.ts","../src/swagger/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum HTTPHandlerOperation {\n CREATE = 'create',\n UPDATE = 'update',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { basic } from '@routup/basic';\nimport type { Router } from 'routup';\n\nexport function mountBasicMiddleware(router: Router) {\n router.use(basic());\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport cors from 'cors';\nimport { coreHandler } from 'routup';\nimport type { Router } from 'routup';\n\nexport function mountCorsMiddleware(router: Router) {\n router.use(coreHandler((req, res, next) => cors({\n origin(origin, callback) {\n callback(null, true);\n },\n credentials: true,\n })(req, res, next)));\n}\n","import bodyParser from 'body-parser';\nimport { coreHandler } from 'routup';\n\nfunction createJsonHandler(options) {\n const handler = bodyParser.json(options);\n return coreHandler((req, res, next)=>{\n handler(req, res, next);\n });\n}\n\nfunction createRawHandler(options) {\n const handler = bodyParser.raw(options);\n return coreHandler((req, res, next)=>{\n handler(req, res, next);\n });\n}\n\nfunction createTextHandler(options) {\n const handler = bodyParser.text(options);\n return coreHandler((req, res, next)=>{\n handler(req, res, next);\n });\n}\n\nfunction createUrlEncodedHandler(options) {\n const handler = bodyParser.urlencoded({\n extended: false,\n ...options || {}\n });\n return coreHandler((req, res, next)=>{\n handler(req, res, next);\n });\n}\n\nfunction boolToObject(input) {\n if (typeof input === 'boolean') {\n return {};\n }\n return input;\n}\nfunction isObject(item) {\n return !!item && typeof item === 'object' && !Array.isArray(item);\n}\n\nfunction body(options = {}) {\n if (typeof options.json === 'undefined' && typeof options.raw === 'undefined' && typeof options.urlEncoded === 'undefined' && typeof options.text === 'undefined') {\n options.json = true;\n options.urlEncoded = true;\n }\n return {\n name: 'body',\n install: (router)=>{\n if (options.json) {\n router.use(createJsonHandler(boolToObject(options.json)));\n }\n if (options.raw) {\n router.use(createRawHandler(boolToObject(options.raw)));\n }\n if (options.text) {\n router.use(createTextHandler(boolToObject(options.text)));\n }\n if (options.urlEncoded) {\n router.use(createUrlEncodedHandler(boolToObject(options.urlEncoded)));\n }\n }\n };\n}\n\nconst BodySymbol = Symbol.for('ReqBody');\nfunction useRequestBody(req, key) {\n let body;\n /* istanbul ignore next */ if ('body' in req) {\n body = req.body;\n }\n if (BodySymbol in req) {\n if (body) {\n body = {\n ...req[BodySymbol],\n ...body\n };\n } else {\n body = req[BodySymbol];\n }\n }\n if (body) {\n if (typeof key === 'string') {\n return body[key];\n }\n return body;\n }\n return typeof key === 'string' ? undefined : {};\n}\nfunction setRequestBody(req, key, value) {\n if (isObject(key)) {\n req[BodySymbol] = key;\n return;\n }\n req[BodySymbol] = {\n [key]: value\n };\n}\n\nexport { body, createJsonHandler, createRawHandler, createTextHandler, createUrlEncodedHandler, body as default, setRequestBody, useRequestBody };\n//# sourceMappingURL=index.mjs.map\n","import { HeaderName, coreHandler, appendResponseHeader } from 'routup';\nimport { parse, serialize } from 'cookie-es';\n\nfunction parseRequestCookies(req, options) {\n return parse(req.headers[HeaderName.COOKIE] || '', options || {});\n}\nfunction isObject(item) {\n return !!item && typeof item === 'object' && !Array.isArray(item);\n}\n\nconst CookieSymbol = Symbol.for('ReqCookie');\nfunction useRequestCookies(req) {\n if (CookieSymbol in req) {\n return req[CookieSymbol];\n }\n return {};\n}\nfunction hasRequestCookies(req) {\n return CookieSymbol in req && isObject(req[CookieSymbol]);\n}\nfunction useRequestCookie(req, name) {\n return useRequestCookies(req)[name];\n}\nfunction setRequestCookies(req, key, value) {\n if (isObject(key)) {\n req[CookieSymbol] = key;\n return;\n }\n req[CookieSymbol] = {\n [key]: value\n };\n}\n\nfunction createHandler(options) {\n return coreHandler((req, res, next)=>{\n if (hasRequestCookies(req)) {\n next();\n return;\n }\n setRequestCookies(req, parseRequestCookies(req, options));\n next();\n });\n}\n\nfunction cookie(options = {}) {\n return {\n name: 'cookie',\n install: (router)=>{\n router.use(createHandler(options.parse));\n }\n };\n}\n\nfunction setResponseCookie(res, name, value, options) {\n appendResponseHeader(res, HeaderName.SET_COOKIE, serialize(name, value, {\n path: '/',\n ...options || {}\n }));\n}\n/* istanbul ignore next */ function unsetResponseCookie(res, name, options) {\n setResponseCookie(res, name, '', {\n ...options || {},\n maxAge: 0\n });\n}\n\nexport { cookie, createHandler, cookie as default, hasRequestCookies, isObject, parseRequestCookies, setRequestCookies, setResponseCookie, unsetResponseCookie, useRequestCookie, useRequestCookies };\n//# sourceMappingURL=index.mjs.map\n","import { parse } from 'qs';\nexport { parse, stringify } from 'qs';\nimport { coreHandler } from 'routup';\n\nfunction parseRequestQuery(req, options) {\n /* istanbul ignore if */ if (typeof req.url === 'undefined') {\n return {};\n }\n const url = new URL(req.url, 'http://localhost/');\n let { search } = url;\n if (search.substring(0, 1) === '?') {\n search = search.substring(1);\n }\n return parse(search, options);\n}\nfunction isObject(item) {\n return !!item && typeof item === 'object' && !Array.isArray(item);\n}\n\nconst QuerySymbol = Symbol.for('ReqQuery');\nfunction useRequestQuery(req, key) {\n /* istanbul ignore if */ if ('query' in req) {\n if (typeof key === 'string') {\n return req.query[key];\n }\n return req.query;\n }\n if (QuerySymbol in req) {\n if (typeof key === 'string') {\n return req[QuerySymbol][key];\n }\n return req[QuerySymbol];\n }\n return typeof key === 'string' ? undefined : {};\n}\nfunction hasRequestQuery(req) {\n return QuerySymbol in req && isObject(req[QuerySymbol]) || 'query' in req && isObject(req.query);\n}\nfunction setRequestQuery(req, key, value) {\n if (isObject(key)) {\n req[QuerySymbol] = key;\n return;\n }\n req[QuerySymbol] = {\n [key]: value\n };\n}\n\nfunction createHandler(options) {\n return coreHandler((req, res, next)=>{\n if (hasRequestQuery(req)) {\n next();\n return;\n }\n setRequestQuery(req, parseRequestQuery(req, options));\n next();\n });\n}\n\nfunction query(options = {}) {\n return {\n name: 'query',\n install: (router)=>{\n router.use(createHandler(options.parse));\n }\n };\n}\n\nexport { createHandler, query as default, hasRequestQuery, isObject, parseRequestQuery, query, setRequestQuery, useRequestQuery };\n//# sourceMappingURL=index.mjs.map\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { useRequestBody } from '@routup/basic/body';\nimport { useRequestCookie, useRequestCookies } from '@routup/basic/cookie';\nimport { useRequestQuery } from '@routup/basic/query';\nimport { decorators } from '@routup/decorators';\nimport type { Router } from 'routup';\nimport type { MiddlewareDecoratorsOptions } from './types';\n\nexport function mountDecoratorsMiddleware(router: Router, options: MiddlewareDecoratorsOptions) {\n router.use(decorators({\n controllers: options.controllers,\n parameter: {\n body: (context, name) => {\n if (name) {\n return useRequestBody(context.request, name);\n }\n\n return useRequestBody(context.request);\n },\n cookie: (context, name) => {\n if (name) {\n return useRequestCookie(context.request, name);\n }\n\n return useRequestCookies(context.request);\n },\n query: (context, name) => {\n if (name) {\n return useRequestQuery(context.request, name);\n }\n\n return useRequestQuery(context.request);\n },\n },\n }));\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { BuiltInPolicyType, PermissionError } from '@authup/access';\nimport { HubError, isObject } from '@privateaim/kit';\nimport { LogChannel, LogFlag } from '@privateaim/telemetry-kit';\nimport type { Router } from 'routup';\nimport { errorHandler } from 'routup';\nimport { useLogger } from '@privateaim/server-kit';\nimport { EntityRelationLookupError } from 'typeorm-extension';\nimport { ValidupNestedError, ValidupValidatorError } from 'validup';\n\nexport function mountErrorMiddleware(router: Router) {\n router.use(errorHandler((error, req, res) => {\n const isServerError = error.statusCode >= 500 &&\n error.statusCode < 600;\n\n if (isServerError || error.logMessage) {\n if (error.cause && isObject(error.cause)) {\n useLogger().error({\n message: error.cause as Error,\n [LogFlag.CHANNEL]: LogChannel.HTTP,\n });\n } else {\n useLogger().error({\n message: error,\n [LogFlag.CHANNEL]: LogChannel.HTTP,\n });\n }\n }\n\n if (error.cause instanceof HubError) {\n error.expose = true;\n error.statusCode = 400;\n }\n\n if (error.cause instanceof PermissionError) {\n error.expose = true;\n\n if (\n error.cause.policy &&\n error.cause.policy.type === BuiltInPolicyType.IDENTITY\n ) {\n error.statusCode = 401;\n } else {\n error.statusCode = 403;\n }\n }\n\n if (error.cause instanceof EntityRelationLookupError) {\n error.expose = true;\n error.statusCode = 400;\n }\n\n if (error.cause instanceof ValidupNestedError) {\n error.expose = true;\n error.statusCode = 400;\n error.data = {\n children: error.cause.children,\n attributes: error.cause.children.map((child) => child.pathAbsolute),\n };\n }\n\n if (error.cause instanceof ValidupValidatorError) {\n error.expose = true;\n error.statusCode = 400;\n }\n\n // catch and decorate some db errors :)\n switch (error.code) {\n case 'ER_DUP_ENTRY':\n case 'SQLITE_CONSTRAINT_UNIQUE': {\n error.statusCode = 409;\n error.message = 'An entry with some unique attributes already exist.';\n error.expose = true;\n break;\n }\n case 'ER_DISK_FULL':\n error.statusCode = 507;\n error.message = 'No database operation possible, due the leak of free disk space.';\n error.expose = true;\n break;\n }\n\n const exposeError = typeof error.expose === 'boolean' ?\n error.expose :\n !isServerError;\n\n if (!exposeError) {\n error.message = 'An internal server error occurred.';\n }\n\n res.statusCode = error.statusCode;\n\n return {\n statusCode: error.statusCode,\n code: `${error.code}`,\n message: error.message,\n ...(exposeError && isObject(error.data) ? error.data : {}),\n };\n }));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { setRequestEnv as setEnv, useRequestEnv as useEnv } from 'routup';\nimport type { Request } from 'routup';\nimport type { RequestEnv } from './types';\n\nexport function useRequestEnv(req: Request) : RequestEnv;\nexport function useRequestEnv<T extends keyof RequestEnv>(req: Request, key: T) : RequestEnv[T];\nexport function useRequestEnv<T extends keyof RequestEnv>(req: Request, key?: T) {\n if (typeof key === 'string') {\n return useEnv(req, key) as RequestEnv[T];\n }\n\n return useEnv(req);\n}\n\nexport function setRequestEnv<T extends keyof RequestEnv>(\n req: Request,\n key: T,\n value: RequestEnv[T],\n) {\n return setEnv(req, key, value);\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Request } from 'routup';\nimport { BadRequestError } from '@ebec/http';\nimport { setRequestEnv, useRequestEnv } from '../env';\nimport type { RequestPermissionChecker } from './module';\n\nexport function setRequestPermissionChecker(req: Request, checker: RequestPermissionChecker) {\n setRequestEnv(req, 'permissionChecker', checker);\n}\n\nexport function useRequestPermissionChecker(req: Request) : RequestPermissionChecker {\n const checker = useRequestEnv(req, 'permissionChecker');\n if (!checker) {\n throw new BadRequestError('The request permission checker is not initialized.');\n }\n\n return checker;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { REALM_MASTER_NAME } from '@authup/core-kit';\nimport { UnauthorizedError } from '@ebec/http';\nimport type { Request } from 'routup';\nimport type { RequestIdentity } from './types';\nimport { setRequestEnv, useRequestEnv } from './env';\n\nexport function useRequestIdentity(req: Request) : RequestIdentity | undefined {\n return useRequestEnv(req, 'identity');\n}\n\nexport function setRequestIdentity(req: Request, identity: RequestIdentity) : void {\n setRequestEnv(req, 'identity', identity);\n}\n\nexport function useRequestIdentityOrFail(req: Request) : RequestIdentity {\n const identity = useRequestIdentity(req);\n if (!identity) {\n throw new UnauthorizedError();\n }\n\n return identity;\n}\n\nexport function isRequestIdentityMasterRealmMember(input: RequestIdentity) : boolean {\n return input.realmName === REALM_MASTER_NAME;\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ScopeName } from '@authup/core-kit';\nimport type {\n PermissionChecker,\n PermissionCheckerCheckContext,\n} from '@authup/access';\nimport type { Request } from 'routup';\nimport { useRequestEnv } from '../env';\nimport { useRequestIdentity } from '../identity';\n\nexport class RequestPermissionChecker {\n protected req: Request;\n\n protected checker: PermissionChecker;\n\n constructor(req: Request, checker: PermissionChecker) {\n this.req = req;\n this.checker = checker;\n }\n\n // --------------------------------------------------------------\n\n async check(ctx: PermissionCheckerCheckContext) : Promise<void> {\n return this.checker.check(this.extendCheckContext(ctx));\n }\n\n async preCheck(ctx: PermissionCheckerCheckContext) : Promise<void> {\n return this.checker.preCheck(this.extendCheckContext(ctx));\n }\n\n // --------------------------------------------------------------\n\n async preCheckOneOf(ctx: PermissionCheckerCheckContext) : Promise<void> {\n return this.checker.preCheckOneOf(this.extendCheckContext(ctx));\n }\n\n async checkOneOf(ctx: PermissionCheckerCheckContext) : Promise<void> {\n return this.checker.checkOneOf(this.extendCheckContext(ctx));\n }\n\n // --------------------------------------------------------------\n\n protected extendCheckContext(ctx: PermissionCheckerCheckContext) {\n const scopes = useRequestEnv(this.req, 'scopes') || [];\n if (scopes.indexOf(ScopeName.GLOBAL) !== -1) {\n ctx.input = {\n ...ctx.input || {},\n identity: useRequestIdentity(this.req),\n };\n }\n\n return ctx;\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Request } from 'routup';\nimport { useRequestIdentity } from './identity';\n\ntype RequestRealm = {\n id: string,\n name: string\n};\n\nexport function useRequestIdentityRealm(req: Request) : RequestRealm {\n const identity = useRequestIdentity(req);\n if (!identity) {\n return undefined;\n }\n\n return {\n id: identity.realmId,\n name: identity.realmName,\n };\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { HandlerInterface } from '@routup/decorators';\nimport type {\n Next, Request, Response,\n} from 'routup';\nimport { useRequestIdentityOrFail } from '../request';\n\nexport class ForceLoggedInMiddleware implements HandlerInterface {\n public run(request: Request, response: Response, next: Next) {\n useRequestIdentityOrFail(request);\n\n next();\n }\n}\n","/*\n * Copyright (c) 2025.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { IPermissionProvider, PermissionGetOptions, PermissionItem } from '@authup/access';\n\nexport class FakePermissionProvider implements IPermissionProvider {\n async get(criteria: PermissionGetOptions): Promise<PermissionItem | undefined> {\n return {\n name: criteria.name,\n realmId: criteria.realmId,\n policy: null,\n };\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { unwrapOAuth2Scope } from '@authup/specs';\nimport type { IPermissionProvider } from '@authup/access';\nimport { PermissionChecker, PermissionMemoryProvider } from '@authup/access';\nimport { REALM_MASTER_NAME } from '@authup/core-kit';\nimport type { TokenVerificationData } from '@authup/server-adapter-kit';\nimport type { Request } from 'routup';\nimport { RequestPermissionChecker, setRequestEnv } from '../../request';\nimport { FakePermissionProvider } from './permission-provider';\n\ntype TokenVerificationDataMinimal = Pick<\nTokenVerificationData,\n'permissions' |\n'realm_id' |\n'realm_name' |\n'sub' |\n'sub_kind' |\n'sub_name' |\n'scope'\n>;\n\nexport function createFakeTokenVerificationData(): TokenVerificationDataMinimal {\n return {\n realm_id: 'd94b2f28-29e3-4ced-b8f1-6923a01dc1ee',\n realm_name: REALM_MASTER_NAME,\n\n sub_kind: 'user',\n sub: 'd94b2f28-29e3-4ced-b8f1-6923a01dc1ee',\n sub_name: 'admin',\n\n permissions: [],\n };\n}\n\nexport function applyTokenVerificationData(\n req: Request,\n data: TokenVerificationDataMinimal,\n fakeAbilities?: boolean,\n) {\n let provider : IPermissionProvider;\n if (fakeAbilities) {\n provider = new FakePermissionProvider();\n } else {\n provider = new PermissionMemoryProvider(data.permissions);\n }\n\n const permissionChecker = new PermissionChecker({\n provider,\n });\n const requestPermissionChecker = new RequestPermissionChecker(req, permissionChecker);\n setRequestEnv(req, 'permissionChecker', requestPermissionChecker);\n\n setRequestEnv(req, 'identity', {\n id: data.sub,\n type: data.sub_kind,\n realmId: data.realm_id,\n realmName: data.realm_name,\n attributes: {\n id: data.sub,\n name: data.sub_name,\n },\n });\n\n setRequestEnv(req, 'scopes', unwrapOAuth2Scope(data.scope || []));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { TokenCreatorOptions } from '@authup/core-http-kit';\nimport type {\n ITokenVerifierCache,\n} from '@authup/server-adapter-kit';\nimport {\n MemoryTokenVerifierCache,\n RedisTokenVerifierCache,\n TokenVerifier,\n} from '@authup/server-adapter-kit';\nimport { createMiddleware } from '@authup/server-adapter-http';\nimport { useRequestCookie } from '@routup/basic/cookie';\nimport { parseAuthorizationHeader } from 'hapic';\nimport type { Router } from 'routup';\nimport { coreHandler, getRequestHeader } from 'routup';\nimport type { AuthupMiddlewareRegistrationOptions } from './types';\nimport { applyTokenVerificationData, createFakeTokenVerificationData } from './utils';\n\nexport function mountAuthupMiddleware(\n router: Router,\n options: AuthupMiddlewareRegistrationOptions,\n) {\n if (!options.client) {\n const data = createFakeTokenVerificationData();\n\n router.use(coreHandler((req, res, next) => {\n applyTokenVerificationData(req, data, options.fakeAbilities);\n next();\n }));\n\n return;\n }\n\n router.use(coreHandler(async (req, res, next) => {\n const headerRaw = getRequestHeader(req, 'authorization');\n if (typeof headerRaw !== 'string') {\n next();\n }\n\n const cacheKey = `authorization-header:${headerRaw}`;\n\n if (options.redisClient) {\n const data = await options.redisClient.get(cacheKey);\n if (data) {\n req.headers.authorization = `Bearer ${data}`;\n next();\n return;\n }\n }\n\n const header = parseAuthorizationHeader(headerRaw);\n\n if (header.type === 'Basic') {\n const token = await options.client.token.createWithPassword({\n username: header.username,\n password: header.password,\n });\n\n req.headers.authorization = `Bearer ${token.access_token}`;\n if (options.redisClient) {\n await options.redisClient.setex(cacheKey, token.expires_in, token.access_token);\n }\n }\n\n next();\n }));\n\n let tokenCreator : TokenCreatorOptions;\n if (options.vaultClient) {\n tokenCreator = {\n type: 'robotInVault',\n name: 'system',\n vault: options.vaultClient,\n baseURL: options.client.getBaseURL(),\n };\n } else {\n tokenCreator = {\n type: 'user',\n name: 'admin',\n password: 'start123',\n baseURL: options.client.getBaseURL(),\n };\n }\n\n let cache : ITokenVerifierCache;\n if (options.redisClient) {\n cache = new RedisTokenVerifierCache(options.redisClient);\n } else {\n cache = new MemoryTokenVerifierCache();\n }\n\n const middleware = createMiddleware({\n tokenByCookie: (req, cookieName) => useRequestCookie(req, cookieName),\n tokenVerifier: new TokenVerifier({\n baseURL: options.client.getBaseURL(),\n creator: tokenCreator,\n cache,\n }),\n tokenVerifierHandler: (\n req,\n data,\n ) => applyTokenVerificationData(req, data, options.fakeAbilities),\n });\n\n router.use(coreHandler((\n req,\n res,\n next,\n ) => middleware(req, res, next)));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function boolableToObject<T extends Record<string, any>>(input: T | boolean) : T {\n if (typeof input === 'boolean') {\n return {} as T;\n }\n\n return input;\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { prometheus } from '@routup/prometheus';\nimport type { Router } from 'routup';\n\nexport function mountPrometheusMiddleware(router: Router) {\n router.use(prometheus());\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { REALM_MASTER_NAME } from '@authup/core-kit';\nimport type { OptionsInput } from '@routup/rate-limit';\nimport { rateLimit } from '@routup/rate-limit';\nimport type { Request, Router } from 'routup';\nimport { useRequestIdentity } from '../request';\n\nexport function mountRateLimiterMiddleware(router: Router) {\n const options : OptionsInput = {\n skip(req: Request) {\n const identity = useRequestIdentity(req);\n\n return identity &&\n identity.type === 'robot' &&\n identity.realmName === REALM_MASTER_NAME;\n },\n max(req: Request) {\n const identity = useRequestIdentity(req);\n if (identity && identity.type === 'user') {\n return 60 * 100; // 100 req p. sec\n }\n\n if (\n identity &&\n (identity.type === 'robot' || identity.type === 'client')\n ) {\n return 60 * 1000; // 1000 req p. sec\n }\n\n return 60 * 20; // 20 req p. sec\n },\n windowMs: 60 * 1000, // 60 sec\n };\n\n router.use(rateLimit(options));\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { swaggerUI } from '@routup/swagger';\nimport { loadSync } from 'locter';\nimport process from 'node:process';\nimport type { Router } from 'routup';\nimport type { MiddlewareSwaggerOptions } from './types';\n\nexport function mountSwaggerMiddleware(router: Router, options: MiddlewareSwaggerOptions = {}) {\n let document : any;\n if (options.cwd) {\n document = loadSync(path.join(options.cwd, 'swagger.json'));\n } else {\n document = loadSync(path.join(process.cwd(), 'writable', 'swagger.json'));\n }\n\n router.use('/docs', swaggerUI(document, {\n baseURL: options.baseURL,\n }));\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Router } from 'routup';\nimport { mountAuthupMiddleware } from '../services';\nimport { boolableToObject } from '../utils';\nimport { mountBasicMiddleware } from './basic';\nimport { mountCorsMiddleware } from './cors';\nimport { mountDecoratorsMiddleware } from './decorators';\nimport { mountPrometheusMiddleware } from './prometheus';\nimport { mountRateLimiterMiddleware } from './rate-limit';\nimport { mountSwaggerMiddleware } from './swagger';\nimport type { MiddlewareMountOptions } from './types';\n\nexport function mountMiddlewares(\n router: Router,\n options: MiddlewareMountOptions = {},\n) {\n if (options.cors) {\n mountCorsMiddleware(router);\n }\n\n if (options.basic) {\n mountBasicMiddleware(router);\n }\n\n if (options.authup) {\n mountAuthupMiddleware(router, options.authup);\n }\n\n if (options.prometheus) {\n mountPrometheusMiddleware(router);\n }\n\n if (options.rateLimit) {\n mountRateLimiterMiddleware(router);\n }\n\n if (options.swagger) {\n mountSwaggerMiddleware(router, boolableToObject(options.swagger));\n }\n\n if (options.decorators) {\n mountDecoratorsMiddleware(router, options.decorators);\n }\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport type { GeneratorOptionsInput } from '@routup/swagger';\nimport { Version, generate } from '@routup/swagger';\nimport { load } from 'locter';\nimport process from 'node:process';\nimport type { SwaggerGenerateOptions } from './types';\n\nexport async function generateSwagger(options: SwaggerGenerateOptions) {\n const cwd = options.cwd || process.cwd();\n const packageJson = await load(path.join(cwd, 'package.json')) as Record<string, any>;\n\n const securityDefinitions : GeneratorOptionsInput['securityDefinitions'] = {\n bearer: {\n name: 'Bearer',\n type: 'apiKey',\n in: 'header',\n },\n\n basicAuth: {\n type: 'http',\n schema: 'basic',\n },\n };\n\n if (options.authupURL) {\n securityDefinitions.oauth2 = {\n type: 'oauth2',\n flows: {\n password: {\n tokenUrl: new URL('token', options.authupURL).href,\n },\n },\n };\n }\n\n return generate({\n version: Version.V2,\n options: {\n metadata: {\n cache: false,\n entryPoint: [\n { pattern: '**/*.ts', cwd: options.controllerBasePath },\n ],\n ignore: ['**/node_modules/**'],\n allow: ['**/@authup/**'],\n },\n yaml: false,\n servers: [\n options.baseURL,\n ],\n name: 'API Documentation',\n description: 'Explore the REST Endpoints.',\n version: packageJson.version,\n outputDirectory: path.join(cwd, 'writable'),\n securityDefinitions,\n consumes: ['application/json'],\n produces: ['application/json'],\n },\n });\n}\n"],"names":["HTTPHandlerOperation","mountBasicMiddleware","router","use","basic","mountCorsMiddleware","coreHandler","req","res","next","cors","origin","callback","credentials","mountDecoratorsMiddleware","options","decorators","controllers","parameter","body","context","name","useRequestBody","request","cookie","useRequestCookie","useRequestCookies","query","useRequestQuery","mountErrorMiddleware","errorHandler","error","isServerError","statusCode","logMessage","cause","isObject","useLogger","message","LogFlag","CHANNEL","LogChannel","HTTP","HubError","expose","PermissionError","policy","type","BuiltInPolicyType","IDENTITY","EntityRelationLookupError","ValidupNestedError","data","children","attributes","map","child","pathAbsolute","ValidupValidatorError","code","exposeError","useRequestEnv","key","useEnv","setRequestEnv","value","setEnv","setRequestPermissionChecker","checker","useRequestPermissionChecker","BadRequestError","useRequestIdentity","setRequestIdentity","identity","useRequestIdentityOrFail","UnauthorizedError","isRequestIdentityMasterRealmMember","input","realmName","REALM_MASTER_NAME","RequestPermissionChecker","check","ctx","extendCheckContext","preCheck","preCheckOneOf","checkOneOf","scopes","indexOf","ScopeName","GLOBAL","useRequestIdentityRealm","undefined","id","realmId","ForceLoggedInMiddleware","run","response","FakePermissionProvider","get","criteria","createFakeTokenVerificationData","realm_id","realm_name","sub_kind","sub","sub_name","permissions","applyTokenVerificationData","fakeAbilities","provider","PermissionMemoryProvider","permissionChecker","PermissionChecker","requestPermissionChecker","unwrapOAuth2Scope","scope","mountAuthupMiddleware","client","headerRaw","getRequestHeader","cacheKey","redisClient","headers","authorization","header","parseAuthorizationHeader","token","createWithPassword","username","password","access_token","setex","expires_in","tokenCreator","vaultClient","vault","baseURL","getBaseURL","cache","RedisTokenVerifierCache","MemoryTokenVerifierCache","middleware","createMiddleware","tokenByCookie","cookieName","tokenVerifier","TokenVerifier","creator","tokenVerifierHandler","boolableToObject","mountPrometheusMiddleware","prometheus","mountRateLimiterMiddleware","skip","max","windowMs","rateLimit","mountSwaggerMiddleware","document","cwd","loadSync","path","join","process","swaggerUI","mountMiddlewares","authup","swagger","generateSwagger","packageJson","load","securityDefinitions","bearer","in","basicAuth","schema","authupURL","oauth2","flows","tokenUrl","URL","href","generate","version","Version","V2","metadata","entryPoint","pattern","controllerBasePath","ignore","allow","yaml","servers","description","outputDirectory","consumes","produces"],"mappings":"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","x_google_ignoreList":[3,4,5]}
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/middlewares/error.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMrC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,QAoFlD"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/middlewares/error.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMrC,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,QAyFlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/services/authup/middleware.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,SAAS,CAAC;AAGnE,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,mCAAmC,QA0F/C"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/services/authup/middleware.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,SAAS,CAAC;AAGnE,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,mCAAmC,QAyF/C"}
@@ -1,5 +1,5 @@
1
- import type { PermissionGetOptions, PermissionItem, PermissionProvider } from '@authup/access';
2
- export declare class FakePermissionProvider implements PermissionProvider {
1
+ import type { IPermissionProvider, PermissionGetOptions, PermissionItem } from '@authup/access';
2
+ export declare class FakePermissionProvider implements IPermissionProvider {
3
3
  get(criteria: PermissionGetOptions): Promise<PermissionItem | undefined>;
4
4
  }
5
5
  //# sourceMappingURL=permission-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission-provider.d.ts","sourceRoot":"","sources":["../../../src/services/authup/permission-provider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAE/F,qBAAa,sBAAuB,YAAW,kBAAkB;IACvD,GAAG,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAOjF"}
1
+ {"version":3,"file":"permission-provider.d.ts","sourceRoot":"","sources":["../../../src/services/authup/permission-provider.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhG,qBAAa,sBAAuB,YAAW,mBAAmB;IACxD,GAAG,CAAC,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAOjF"}
@@ -1,3 +1,3 @@
1
1
  import type { SwaggerGenerateOptions } from './types';
2
- export declare function generateSwagger(options: SwaggerGenerateOptions): Promise<import("@routup/swagger").SpecV2>;
2
+ export declare function generateSwagger(options: SwaggerGenerateOptions): Promise<import("@trapi/swagger").SpecV2>;
3
3
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/swagger/module.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,6CAoDpE"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/swagger/module.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,4CAoDpE"}
package/package.json CHANGED
@@ -1,8 +1,16 @@
1
1
  {
2
2
  "name": "@privateaim/server-http-kit",
3
- "version": "0.8.20",
4
- "main": "dist/index.js",
3
+ "type": "module",
4
+ "version": "0.8.22",
5
+ "module": "dist/index.mjs",
5
6
  "types": "dist/index.d.ts",
7
+ "exports": {
8
+ "./package.json": "./package.json",
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.mjs"
12
+ }
13
+ },
6
14
  "author": {
7
15
  "name": "Peter Placzek",
8
16
  "email": "contact@tada5hi.net",
@@ -11,41 +19,43 @@
11
19
  "license": "Apache-2.0",
12
20
  "description": "This package contains the realtime application which connects the API with socket based clients.",
13
21
  "dependencies": {
14
- "@authup/access": "^1.0.0-beta.27",
15
- "@authup/kit": "^1.0.0-beta.27",
16
- "@authup/core-kit": "^1.0.0-beta.27",
17
- "@authup/core-http-kit": "^1.0.0-beta.27",
18
- "@authup/specs": "^1.0.0-beta.27",
19
- "@authup/server-adapter-kit": "^1.0.0-beta.27",
20
- "@authup/server-adapter-http": "^1.0.0-beta.27",
22
+ "@authup/access": "^1.0.0-beta.28",
23
+ "@authup/kit": "^1.0.0-beta.28",
24
+ "@authup/core-kit": "^1.0.0-beta.28",
25
+ "@authup/core-http-kit": "^1.0.0-beta.28",
26
+ "@authup/specs": "^1.0.0-beta.28",
27
+ "@authup/server-adapter-kit": "^1.0.0-beta.28",
28
+ "@authup/server-adapter-http": "^1.0.0-beta.28",
21
29
  "@ebec/http": "^2.3.0",
22
- "@privateaim/kit": "^0.8.20",
23
- "@privateaim/server-kit": "^0.8.20",
24
- "@privateaim/telemetry-kit": "^0.8.20",
25
- "@routup/basic": "^1.4.2",
26
- "@routup/decorators": "^3.4.2",
27
- "@routup/prometheus": "^2.4.1",
28
- "@routup/rate-limit": "^2.4.1",
29
- "@routup/swagger": "^2.4.2",
30
+ "@privateaim/kit": "^0.8.22",
31
+ "@privateaim/server-kit": "^0.8.22",
32
+ "@privateaim/telemetry-kit": "^0.8.22",
33
+ "@routup/basic": "^1.4.3",
34
+ "@routup/decorators": "^3.4.3",
35
+ "@routup/prometheus": "^2.4.2",
36
+ "@routup/rate-limit": "^2.4.2",
37
+ "@routup/swagger": "^2.4.3",
30
38
  "cors": "^2.8.5",
31
39
  "hapic": "^2.7.0",
32
- "locter": "^2.2.0",
40
+ "locter": "^2.2.1",
33
41
  "validup": "^0.1.8"
34
42
  },
35
43
  "devDependencies": {
36
44
  "@types/cors": "^2.8.19",
37
- "redis-extension": "^2.0.2",
45
+ "redis-extension": "^2.0.4",
38
46
  "routup": "^4.0.2",
39
- "typeorm-extension": "^3.7.1"
47
+ "typeorm-extension": "^3.7.2"
40
48
  },
41
49
  "peerDependencies": {
42
- "redis-extension": "^2.0.2",
50
+ "redis-extension": "^2.0.4",
43
51
  "routup": "^4.0.2",
44
- "typeorm-extension": "^3.7.1"
52
+ "typeorm-extension": "^3.7.2"
45
53
  },
46
54
  "scripts": {
47
55
  "dev": "ts-node src/index.ts",
48
- "build": "rimraf dist && tsc -p tsconfig.build.json",
56
+ "build:types": "tsc --emitDeclarationOnly -p tsconfig.build.json",
57
+ "build:js": "rollup -c",
58
+ "build": "rimraf ./dist && cross-env NODE_ENV=production npm run build:js && npm run build:types",
49
59
  "start": "node dist/index.js"
50
60
  }
51
61
  }
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright (c) 2022.
3
+ * Author Peter Placzek (tada5hi)
4
+ * For the full copyright and license information,
5
+ * view the LICENSE file that was distributed with this source code.
6
+ */
7
+
8
+ import fs from 'node:fs';
9
+
10
+ import { createConfig } from '../../rollup.config.mjs';
11
+
12
+ export default createConfig({
13
+ pkg: JSON.parse(fs.readFileSync(new URL('./package.json', import.meta.url), { encoding: 'utf-8' })),
14
+ external: [
15
+ 'body-parser',
16
+ 'qs',
17
+ ],
18
+ });
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { BuiltInPolicyType, PermissionError } from '@authup/access';
9
- import { isObject } from '@privateaim/kit';
9
+ import { HubError, isObject } from '@privateaim/kit';
10
10
  import { LogChannel, LogFlag } from '@privateaim/telemetry-kit';
11
11
  import type { Router } from 'routup';
12
12
  import { errorHandler } from 'routup';
@@ -33,6 +33,11 @@ export function mountErrorMiddleware(router: Router) {
33
33
  }
34
34
  }
35
35
 
36
+ if (error.cause instanceof HubError) {
37
+ error.expose = true;
38
+ error.statusCode = 400;
39
+ }
40
+
36
41
  if (error.cause instanceof PermissionError) {
37
42
  error.expose = true;
38
43
 
@@ -6,7 +6,14 @@
6
6
  */
7
7
 
8
8
  import type { TokenCreatorOptions } from '@authup/core-http-kit';
9
- import type { TokenVerifierRedisCacheOptions } from '@authup/server-adapter-kit';
9
+ import type {
10
+ ITokenVerifierCache,
11
+ } from '@authup/server-adapter-kit';
12
+ import {
13
+ MemoryTokenVerifierCache,
14
+ RedisTokenVerifierCache,
15
+ TokenVerifier,
16
+ } from '@authup/server-adapter-kit';
10
17
  import { createMiddleware } from '@authup/server-adapter-http';
11
18
  import { useRequestCookie } from '@routup/basic/cookie';
12
19
  import { parseAuthorizationHeader } from 'hapic';
@@ -81,21 +88,20 @@ export function mountAuthupMiddleware(
81
88
  };
82
89
  }
83
90
 
84
- let tokenCache : TokenVerifierRedisCacheOptions | undefined;
91
+ let cache : ITokenVerifierCache;
85
92
  if (options.redisClient) {
86
- tokenCache = {
87
- type: 'redis',
88
- client: options.redisClient,
89
- };
93
+ cache = new RedisTokenVerifierCache(options.redisClient);
94
+ } else {
95
+ cache = new MemoryTokenVerifierCache();
90
96
  }
91
97
 
92
98
  const middleware = createMiddleware({
93
99
  tokenByCookie: (req, cookieName) => useRequestCookie(req, cookieName),
94
- tokenVerifier: {
100
+ tokenVerifier: new TokenVerifier({
95
101
  baseURL: options.client.getBaseURL(),
96
102
  creator: tokenCreator,
97
- cache: tokenCache,
98
- },
103
+ cache,
104
+ }),
99
105
  tokenVerifierHandler: (
100
106
  req,
101
107
  data,
@@ -5,9 +5,9 @@
5
5
  * view the LICENSE file that was distributed with this source code.
6
6
  */
7
7
 
8
- import type { PermissionGetOptions, PermissionItem, PermissionProvider } from '@authup/access';
8
+ import type { IPermissionProvider, PermissionGetOptions, PermissionItem } from '@authup/access';
9
9
 
10
- export class FakePermissionProvider implements PermissionProvider {
10
+ export class FakePermissionProvider implements IPermissionProvider {
11
11
  async get(criteria: PermissionGetOptions): Promise<PermissionItem | undefined> {
12
12
  return {
13
13
  name: criteria.name,
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { unwrapOAuth2Scope } from '@authup/specs';
9
- import type { PermissionProvider } from '@authup/access';
9
+ import type { IPermissionProvider } from '@authup/access';
10
10
  import { PermissionChecker, PermissionMemoryProvider } from '@authup/access';
11
11
  import { REALM_MASTER_NAME } from '@authup/core-kit';
12
12
  import type { TokenVerificationData } from '@authup/server-adapter-kit';
@@ -43,7 +43,7 @@ export function applyTokenVerificationData(
43
43
  data: TokenVerificationDataMinimal,
44
44
  fakeAbilities?: boolean,
45
45
  ) {
46
- let provider : PermissionProvider;
46
+ let provider : IPermissionProvider;
47
47
  if (fakeAbilities) {
48
48
  provider = new FakePermissionProvider();
49
49
  } else {
package/dist/constants.js DELETED
@@ -1,15 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2024.
4
- * Author Peter Placzek (tada5hi)
5
- * For the full copyright and license information,
6
- * view the LICENSE file that was distributed with this source code.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.HTTPHandlerOperation = void 0;
10
- var HTTPHandlerOperation;
11
- (function (HTTPHandlerOperation) {
12
- HTTPHandlerOperation["CREATE"] = "create";
13
- HTTPHandlerOperation["UPDATE"] = "update";
14
- })(HTTPHandlerOperation || (exports.HTTPHandlerOperation = HTTPHandlerOperation = {}));
15
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,yCAAiB,CAAA;IACjB,yCAAiB,CAAA;AACrB,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B"}
package/dist/index.js DELETED
@@ -1,28 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2024.
4
- * Author Peter Placzek (tada5hi)
5
- * For the full copyright and license information,
6
- * view the LICENSE file that was distributed with this source code.
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
- };
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- __exportStar(require("./constants"), exports);
24
- __exportStar(require("./middlewares"), exports);
25
- __exportStar(require("./request"), exports);
26
- __exportStar(require("./services"), exports);
27
- __exportStar(require("./swagger"), exports);
28
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,gDAA8B;AAC9B,4CAA0B;AAC1B,6CAA2B;AAC3B,4CAA0B"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2024.
4
- * Author Peter Placzek (tada5hi)
5
- * For the full copyright and license information,
6
- * view the LICENSE file that was distributed with this source code.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.mountBasicMiddleware = mountBasicMiddleware;
10
- const basic_1 = require("@routup/basic");
11
- function mountBasicMiddleware(router) {
12
- router.use((0, basic_1.basic)());
13
- }
14
- //# sourceMappingURL=basic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../src/middlewares/basic.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAKH,oDAEC;AALD,yCAAsC;AAGtC,SAAgB,oBAAoB,CAAC,MAAc;IAC/C,MAAM,CAAC,GAAG,CAAC,IAAA,aAAK,GAAE,CAAC,CAAC;AACxB,CAAC"}
@@ -1,23 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2023-2024.
4
- * Author Peter Placzek (tada5hi)
5
- * For the full copyright and license information,
6
- * view the LICENSE file that was distributed with this source code.
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.mountCorsMiddleware = mountCorsMiddleware;
13
- const cors_1 = __importDefault(require("cors"));
14
- const routup_1 = require("routup");
15
- function mountCorsMiddleware(router) {
16
- router.use((0, routup_1.coreHandler)((req, res, next) => (0, cors_1.default)({
17
- origin(origin, callback) {
18
- callback(null, true);
19
- },
20
- credentials: true,
21
- })(req, res, next)));
22
- }
23
- //# sourceMappingURL=cors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/middlewares/cors.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAMH,kDAOC;AAXD,gDAAwB;AACxB,mCAAqC;AAGrC,SAAgB,mBAAmB,CAAC,MAAc;IAC9C,MAAM,CAAC,GAAG,CAAC,IAAA,oBAAW,EAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAA,cAAI,EAAC;QAC5C,MAAM,CAAC,MAAM,EAAE,QAAQ;YACnB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,WAAW,EAAE,IAAI;KACpB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,CAAC"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2024.
4
- * Author Peter Placzek (tada5hi)
5
- * For the full copyright and license information,
6
- * view the LICENSE file that was distributed with this source code.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.mountDecoratorsMiddleware = mountDecoratorsMiddleware;
10
- const body_1 = require("@routup/basic/body");
11
- const cookie_1 = require("@routup/basic/cookie");
12
- const query_1 = require("@routup/basic/query");
13
- const decorators_1 = require("@routup/decorators");
14
- function mountDecoratorsMiddleware(router, options) {
15
- router.use((0, decorators_1.decorators)({
16
- controllers: options.controllers,
17
- parameter: {
18
- body: (context, name) => {
19
- if (name) {
20
- return (0, body_1.useRequestBody)(context.request, name);
21
- }
22
- return (0, body_1.useRequestBody)(context.request);
23
- },
24
- cookie: (context, name) => {
25
- if (name) {
26
- return (0, cookie_1.useRequestCookie)(context.request, name);
27
- }
28
- return (0, cookie_1.useRequestCookies)(context.request);
29
- },
30
- query: (context, name) => {
31
- if (name) {
32
- return (0, query_1.useRequestQuery)(context.request, name);
33
- }
34
- return (0, query_1.useRequestQuery)(context.request);
35
- },
36
- },
37
- }));
38
- }
39
- //# sourceMappingURL=decorators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/middlewares/decorators.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AASH,8DA2BC;AAlCD,6CAAoD;AACpD,iDAA2E;AAC3E,+CAAsD;AACtD,mDAAgD;AAIhD,SAAgB,yBAAyB,CAAC,MAAc,EAAE,OAAoC;IAC1F,MAAM,CAAC,GAAG,CAAC,IAAA,uBAAU,EAAC;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS,EAAE;YACP,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBACpB,IAAI,IAAI,EAAE,CAAC;oBACP,OAAO,IAAA,qBAAc,EAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACjD,CAAC;gBAED,OAAO,IAAA,qBAAc,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBACtB,IAAI,IAAI,EAAE,CAAC;oBACP,OAAO,IAAA,yBAAgB,EAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACnD,CAAC;gBAED,OAAO,IAAA,0BAAiB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC9C,CAAC;YACD,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;gBACrB,IAAI,IAAI,EAAE,CAAC;oBACP,OAAO,IAAA,uBAAe,EAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAClD,CAAC;gBAED,OAAO,IAAA,uBAAe,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;SACJ;KACJ,CAAC,CAAC,CAAC;AACR,CAAC"}
@@ -1,91 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) 2021-2024.
4
- * Author Peter Placzek (tada5hi)
5
- * For the full copyright and license information,
6
- * view the LICENSE file that was distributed with this source code.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.mountErrorMiddleware = mountErrorMiddleware;
10
- const access_1 = require("@authup/access");
11
- const kit_1 = require("@privateaim/kit");
12
- const telemetry_kit_1 = require("@privateaim/telemetry-kit");
13
- const routup_1 = require("routup");
14
- const server_kit_1 = require("@privateaim/server-kit");
15
- const typeorm_extension_1 = require("typeorm-extension");
16
- const validup_1 = require("validup");
17
- function mountErrorMiddleware(router) {
18
- router.use((0, routup_1.errorHandler)((error, req, res) => {
19
- const isServerError = error.statusCode >= 500 &&
20
- error.statusCode < 600;
21
- if (isServerError || error.logMessage) {
22
- if (error.cause && (0, kit_1.isObject)(error.cause)) {
23
- (0, server_kit_1.useLogger)().error({
24
- message: error.cause,
25
- [telemetry_kit_1.LogFlag.CHANNEL]: telemetry_kit_1.LogChannel.HTTP,
26
- });
27
- }
28
- else {
29
- (0, server_kit_1.useLogger)().error({
30
- message: error,
31
- [telemetry_kit_1.LogFlag.CHANNEL]: telemetry_kit_1.LogChannel.HTTP,
32
- });
33
- }
34
- }
35
- if (error.cause instanceof access_1.PermissionError) {
36
- error.expose = true;
37
- if (error.cause.policy &&
38
- error.cause.policy.type === access_1.BuiltInPolicyType.IDENTITY) {
39
- error.statusCode = 401;
40
- }
41
- else {
42
- error.statusCode = 403;
43
- }
44
- }
45
- if (error.cause instanceof typeorm_extension_1.EntityRelationLookupError) {
46
- error.expose = true;
47
- error.statusCode = 400;
48
- }
49
- if (error.cause instanceof validup_1.ValidupNestedError) {
50
- error.expose = true;
51
- error.statusCode = 400;
52
- error.data = {
53
- children: error.cause.children,
54
- attributes: error.cause.children.map((child) => child.pathAbsolute),
55
- };
56
- }
57
- if (error.cause instanceof validup_1.ValidupValidatorError) {
58
- error.expose = true;
59
- error.statusCode = 400;
60
- }
61
- // catch and decorate some db errors :)
62
- switch (error.code) {
63
- case 'ER_DUP_ENTRY':
64
- case 'SQLITE_CONSTRAINT_UNIQUE': {
65
- error.statusCode = 409;
66
- error.message = 'An entry with some unique attributes already exist.';
67
- error.expose = true;
68
- break;
69
- }
70
- case 'ER_DISK_FULL':
71
- error.statusCode = 507;
72
- error.message = 'No database operation possible, due the leak of free disk space.';
73
- error.expose = true;
74
- break;
75
- }
76
- const exposeError = typeof error.expose === 'boolean' ?
77
- error.expose :
78
- !isServerError;
79
- if (!exposeError) {
80
- error.message = 'An internal server error occurred.';
81
- }
82
- res.statusCode = error.statusCode;
83
- return {
84
- statusCode: error.statusCode,
85
- code: `${error.code}`,
86
- message: error.message,
87
- ...(exposeError && (0, kit_1.isObject)(error.data) ? error.data : {}),
88
- };
89
- }));
90
- }
91
- //# sourceMappingURL=error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/middlewares/error.ts"],"names":[],"mappings":"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"}