@venizia/ignis 0.4.7-0 → 0.4.7-2
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/LICENSE.md +1 -4
- package/README.md +2 -2
- package/dist/esm/base/applications/base.d.ts.map +1 -1
- package/dist/esm/base/applications/base.js +25 -18
- package/dist/esm/base/applications/base.js.map +1 -1
- package/dist/esm/base/applications/common/index.d.ts +1 -0
- package/dist/esm/base/applications/common/index.d.ts.map +1 -1
- package/dist/esm/base/applications/common/index.js +1 -0
- package/dist/esm/base/applications/common/index.js.map +1 -1
- package/dist/esm/base/applications/common/logger-startup.d.ts +11 -0
- package/dist/esm/base/applications/common/logger-startup.d.ts.map +1 -0
- package/dist/esm/base/applications/common/logger-startup.js +29 -0
- package/dist/esm/base/applications/common/logger-startup.js.map +1 -0
- package/dist/esm/base/applications/server.d.ts +14 -9
- package/dist/esm/base/applications/server.d.ts.map +1 -1
- package/dist/esm/base/applications/server.js +36 -29
- package/dist/esm/base/applications/server.js.map +1 -1
- package/dist/esm/common/constants.d.ts.map +1 -1
- package/dist/esm/common/constants.js +2 -2
- package/dist/esm/common/constants.js.map +1 -1
- package/dist/esm/components/auth/authenticate/component.js +2 -2
- package/dist/esm/components/auth/authenticate/component.js.map +1 -1
- package/dist/esm/components/auth/authenticate/controllers/factory.d.ts +139 -136
- package/dist/esm/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
- package/dist/esm/components/auth/authenticate/controllers/factory.js +175 -172
- package/dist/esm/components/auth/authenticate/controllers/factory.js.map +1 -1
- package/dist/esm/components/auth/authenticate/controllers/jwks/definitions.js +2 -2
- package/dist/esm/components/auth/authenticate/controllers/jwks/definitions.js.map +1 -1
- package/dist/esm/components/auth/authenticate/controllers/service-certs/definitions.js +2 -2
- package/dist/esm/components/auth/authenticate/controllers/service-certs/definitions.js.map +1 -1
- package/dist/esm/components/auth/authorize/adapters/base-filtered.js +2 -2
- package/dist/esm/components/auth/authorize/adapters/base-filtered.js.map +1 -1
- package/dist/esm/components/auth/authorize/adapters/custom-grant-expander.d.ts.map +1 -1
- package/dist/esm/components/auth/authorize/adapters/custom-grant-expander.js +2 -2
- package/dist/esm/components/auth/authorize/adapters/custom-grant-expander.js.map +1 -1
- package/dist/esm/components/auth/models/entities/columns.d.ts +99 -0
- package/dist/esm/components/auth/models/entities/columns.d.ts.map +1 -0
- package/dist/esm/components/auth/models/entities/columns.js +133 -0
- package/dist/esm/components/auth/models/entities/columns.js.map +1 -0
- package/dist/esm/components/auth/models/entities/index.d.ts +1 -2
- package/dist/esm/components/auth/models/entities/index.d.ts.map +1 -1
- package/dist/esm/components/auth/models/entities/index.js +1 -2
- package/dist/esm/components/auth/models/entities/index.js.map +1 -1
- package/dist/esm/components/auth/models/entities/permission.model.d.ts +1 -12
- package/dist/esm/components/auth/models/entities/permission.model.d.ts.map +1 -1
- package/dist/esm/components/auth/models/entities/permission.model.js +1 -36
- package/dist/esm/components/auth/models/entities/permission.model.js.map +1 -1
- package/dist/esm/components/auth/models/entities/policy-definition.model.d.ts +1 -49
- package/dist/esm/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
- package/dist/esm/components/auth/models/entities/policy-definition.model.js +1 -69
- package/dist/esm/components/auth/models/entities/policy-definition.model.js.map +1 -1
- package/dist/esm/components/controller/grpc/grpc.component.js +2 -2
- package/dist/esm/components/controller/grpc/grpc.component.js.map +1 -1
- package/dist/esm/components/health-check/controller.js +5 -5
- package/dist/esm/components/health-check/controller.js.map +1 -1
- package/dist/esm/components/index.d.ts +0 -1
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +0 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/mail/helpers/transporters/amazon-ses-transporter.helper.d.ts.map +1 -1
- package/dist/esm/components/mail/helpers/transporters/amazon-ses-transporter.helper.js +13 -9
- package/dist/esm/components/mail/helpers/transporters/amazon-ses-transporter.helper.js.map +1 -1
- package/dist/esm/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts.map +1 -1
- package/dist/esm/components/mail/helpers/transporters/mailgun-transporter.helper.js +5 -3
- package/dist/esm/components/mail/helpers/transporters/mailgun-transporter.helper.js.map +1 -1
- package/dist/esm/components/mail/helpers/transporters/nodemail-transporter.helper.d.ts.map +1 -1
- package/dist/esm/components/mail/helpers/transporters/nodemail-transporter.helper.js +5 -5
- package/dist/esm/components/mail/helpers/transporters/nodemail-transporter.helper.js.map +1 -1
- package/dist/esm/components/mail/services/generators/verification-data.d.ts.map +1 -1
- package/dist/esm/components/mail/services/generators/verification-data.js +7 -3
- package/dist/esm/components/mail/services/generators/verification-data.js.map +1 -1
- package/dist/esm/components/mail/services/mail.service.js +7 -7
- package/dist/esm/components/mail/services/mail.service.js.map +1 -1
- package/dist/esm/components/mail/utilities/address.utility.d.ts +12 -8
- package/dist/esm/components/mail/utilities/address.utility.d.ts.map +1 -1
- package/dist/esm/components/mail/utilities/address.utility.js +30 -27
- package/dist/esm/components/mail/utilities/address.utility.js.map +1 -1
- package/dist/esm/components/mail/utilities/attachment.utility.d.ts +31 -29
- package/dist/esm/components/mail/utilities/attachment.utility.d.ts.map +1 -1
- package/dist/esm/components/mail/utilities/attachment.utility.js +97 -86
- package/dist/esm/components/mail/utilities/attachment.utility.js.map +1 -1
- package/dist/esm/components/mail/utilities/body.utility.d.ts +6 -4
- package/dist/esm/components/mail/utilities/body.utility.d.ts.map +1 -1
- package/dist/esm/components/mail/utilities/body.utility.js +14 -12
- package/dist/esm/components/mail/utilities/body.utility.js.map +1 -1
- package/dist/esm/components/mail/utilities/mime.utility.d.ts +23 -17
- package/dist/esm/components/mail/utilities/mime.utility.d.ts.map +1 -1
- package/dist/esm/components/mail/utilities/mime.utility.js +109 -102
- package/dist/esm/components/mail/utilities/mime.utility.js.map +1 -1
- package/dist/esm/components/mail/utilities/verification.utility.d.ts +8 -2
- package/dist/esm/components/mail/utilities/verification.utility.d.ts.map +1 -1
- package/dist/esm/components/mail/utilities/verification.utility.js +7 -5
- package/dist/esm/components/mail/utilities/verification.utility.js.map +1 -1
- package/dist/esm/components/socket-io/component.js +3 -3
- package/dist/esm/components/socket-io/component.js.map +1 -1
- package/dist/esm/components/socket-io/handlers/bun.handler.d.ts +13 -11
- package/dist/esm/components/socket-io/handlers/bun.handler.d.ts.map +1 -1
- package/dist/esm/components/socket-io/handlers/bun.handler.js +32 -30
- package/dist/esm/components/socket-io/handlers/bun.handler.js.map +1 -1
- package/dist/esm/components/static-asset/common/commit-token.d.ts +21 -16
- package/dist/esm/components/static-asset/common/commit-token.d.ts.map +1 -1
- package/dist/esm/components/static-asset/common/commit-token.js +35 -28
- package/dist/esm/components/static-asset/common/commit-token.js.map +1 -1
- package/dist/esm/components/static-asset/common/constants.d.ts +0 -2
- package/dist/esm/components/static-asset/common/constants.d.ts.map +1 -1
- package/dist/esm/components/static-asset/common/constants.js +1 -3
- package/dist/esm/components/static-asset/common/constants.js.map +1 -1
- package/dist/esm/components/static-asset/common/types.d.ts +0 -4
- package/dist/esm/components/static-asset/common/types.d.ts.map +1 -1
- package/dist/esm/components/static-asset/common/types.js.map +1 -1
- package/dist/esm/components/static-asset/component.js +2 -2
- package/dist/esm/components/static-asset/component.js.map +1 -1
- package/dist/esm/components/static-asset/controller/base.definition.d.ts +6 -6
- package/dist/esm/components/static-asset/controller/base.definition.d.ts.map +1 -1
- package/dist/esm/components/static-asset/controller/base.definition.js +224 -224
- package/dist/esm/components/static-asset/controller/base.definition.js.map +1 -1
- package/dist/esm/components/static-asset/controller/factory.d.ts +23 -23
- package/dist/esm/components/static-asset/controller/factory.d.ts.map +1 -1
- package/dist/esm/components/static-asset/controller/factory.js +105 -76
- package/dist/esm/components/static-asset/controller/factory.js.map +1 -1
- package/dist/esm/components/static-asset/controller/key-scope.d.ts +28 -26
- package/dist/esm/components/static-asset/controller/key-scope.d.ts.map +1 -1
- package/dist/esm/components/static-asset/controller/key-scope.js +34 -30
- package/dist/esm/components/static-asset/controller/key-scope.js.map +1 -1
- package/dist/esm/components/static-asset/controller/meta-link.d.ts +37 -33
- package/dist/esm/components/static-asset/controller/meta-link.d.ts.map +1 -1
- package/dist/esm/components/static-asset/controller/meta-link.js +86 -84
- package/dist/esm/components/static-asset/controller/meta-link.js.map +1 -1
- package/dist/esm/components/static-asset/controller/route-options.d.ts +18 -16
- package/dist/esm/components/static-asset/controller/route-options.d.ts.map +1 -1
- package/dist/esm/components/static-asset/controller/route-options.js +28 -26
- package/dist/esm/components/static-asset/controller/route-options.js.map +1 -1
- package/dist/esm/components/static-asset/models/base.model.js +3 -3
- package/dist/esm/components/static-asset/models/base.model.js.map +1 -1
- package/dist/esm/components/websocket/component.js +2 -2
- package/dist/esm/components/websocket/component.js.map +1 -1
- package/dist/esm/components/websocket/handlers/bun.handler.d.ts +6 -4
- package/dist/esm/components/websocket/handlers/bun.handler.d.ts.map +1 -1
- package/dist/esm/components/websocket/handlers/bun.handler.js +21 -19
- package/dist/esm/components/websocket/handlers/bun.handler.js.map +1 -1
- package/dist/esm/testing/assert-application-boots.d.ts +6 -1
- package/dist/esm/testing/assert-application-boots.d.ts.map +1 -1
- package/dist/esm/testing/assert-application-boots.js +139 -136
- package/dist/esm/testing/assert-application-boots.js.map +1 -1
- package/dist/esm/utilities/drizzle-result.utility.d.ts +6 -8
- package/dist/esm/utilities/drizzle-result.utility.d.ts.map +1 -1
- package/dist/esm/utilities/drizzle-result.utility.js +23 -49
- package/dist/esm/utilities/drizzle-result.utility.js.map +1 -1
- package/dist/esm/utilities/network.utility.d.ts.map +1 -1
- package/dist/esm/utilities/network.utility.js +2 -2
- package/dist/esm/utilities/network.utility.js.map +1 -1
- package/dist/presets/app/files/src/boot.test.ts +2 -2
- package/dist/presets/app/files/src/controllers/hello.controller.ts +2 -2
- package/dist/presets/app/preset.json +4 -4
- package/dist/presets/lib/preset.json +4 -4
- package/dist/presets/shared/files/.configs/formatters/.ignore +4 -0
- package/dist/presets/shared/files/.configs/lints/.ignore +4 -0
- package/dist/presets/shared/files/.configs/lints/eslint.config.mjs +4 -0
- package/dist/presets/shared/files/.configs/lints/oxlint.config.mts +4 -0
- package/dist/presets/shared/files/README.md +15 -0
- package/dist/presets/shared/files/src/index.test.ts +8 -0
- package/dist/presets/shared/files/src/index.ts +8 -0
- package/dist/presets/shared/files/tsconfig.json +20 -0
- package/dist/presets/shared/preset.json +35 -0
- package/package.json +11 -11
- package/dist/esm/components/auth/models/entities/role.model.d.ts +0 -10
- package/dist/esm/components/auth/models/entities/role.model.d.ts.map +0 -1
- package/dist/esm/components/auth/models/entities/role.model.js +0 -15
- package/dist/esm/components/auth/models/entities/role.model.js.map +0 -1
- package/dist/esm/components/auth/models/entities/user.model.d.ts +0 -28
- package/dist/esm/components/auth/models/entities/user.model.d.ts.map +0 -1
- package/dist/esm/components/auth/models/entities/user.model.js +0 -17
- package/dist/esm/components/auth/models/entities/user.model.js.map +0 -1
- package/dist/esm/components/controller/index.d.ts +0 -2
- package/dist/esm/components/controller/index.d.ts.map +0 -1
- package/dist/esm/components/controller/index.js +0 -7
- package/dist/esm/components/controller/index.js.map +0 -1
|
@@ -7,11 +7,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
+
var AuthController_1;
|
|
10
11
|
import { BaseRestController } from '@venizia/ignis-kernel';
|
|
11
12
|
import { inject } from '@venizia/ignis-kernel';
|
|
12
13
|
import { controller } from '@venizia/ignis-kernel';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
14
|
+
import { OpenApiResponses } from '@venizia/ignis-kernel';
|
|
15
|
+
import { NotSupportedUtility } from '@venizia/ignis-kernel';
|
|
15
16
|
import { AnyObjectSchema } from '@venizia/ignis-kernel';
|
|
16
17
|
import { z } from '@hono/zod-openapi';
|
|
17
18
|
import { getError } from '@venizia/ignis-helpers/core';
|
|
@@ -29,198 +30,200 @@ export const JWTTokenPayloadSchema = z.object({
|
|
|
29
30
|
provider: z.string().optional(),
|
|
30
31
|
email: z.email().optional(),
|
|
31
32
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if (!authService) {
|
|
43
|
-
throw getError({
|
|
44
|
-
message: '[AuthController] Failed to init auth controller | Invalid injectable authentication service!',
|
|
33
|
+
/** Builds the decorated REST controller of the authentication routes (sign-in, sign-up, change-password, who-am-i). */
|
|
34
|
+
export class AuthControllerFactory {
|
|
35
|
+
static define(opts) {
|
|
36
|
+
const { restPath = '/auth', serviceKey, requireAuthenticatedSignUp = false, payload = {}, } = opts;
|
|
37
|
+
let AuthController = AuthController_1 = class AuthController extends BaseRestController {
|
|
38
|
+
constructor(authService) {
|
|
39
|
+
super({
|
|
40
|
+
scope: AuthController_1.name,
|
|
41
|
+
path: restPath,
|
|
42
|
+
isStrict: true,
|
|
45
43
|
});
|
|
44
|
+
if (!authService) {
|
|
45
|
+
throw getError({
|
|
46
|
+
message: '[AuthController] Failed to init auth controller | Invalid injectable authentication service!',
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
this.service = authService;
|
|
46
50
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
binding() {
|
|
52
|
+
this.defineRoute({
|
|
53
|
+
configs: {
|
|
54
|
+
description: 'Sign In',
|
|
55
|
+
path: '/sign-in',
|
|
56
|
+
method: HTTP.Methods.POST,
|
|
57
|
+
request: {
|
|
58
|
+
body: OpenApiResponses.jsonContent({
|
|
59
|
+
description: 'Sign-in request body',
|
|
60
|
+
required: true,
|
|
61
|
+
schema: payload?.signIn?.request?.schema ?? SignInRequestSchema,
|
|
62
|
+
}),
|
|
63
|
+
},
|
|
64
|
+
responses: OpenApiResponses.jsonResponse({
|
|
65
|
+
schema: payload?.signIn?.response?.schema ?? AnyObjectSchema,
|
|
66
|
+
description: 'Success Response',
|
|
60
67
|
}),
|
|
61
68
|
},
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
},
|
|
67
|
-
handler: async (context) => {
|
|
68
|
-
const body = await context.req.json();
|
|
69
|
-
const rs = await this.service.signIn(context, body);
|
|
70
|
-
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
71
|
-
},
|
|
72
|
-
});
|
|
73
|
-
this.defineRoute({
|
|
74
|
-
configs: {
|
|
75
|
-
description: 'Sign Up',
|
|
76
|
-
path: '/sign-up',
|
|
77
|
-
method: HTTP.Methods.POST,
|
|
78
|
-
authenticate: {
|
|
79
|
-
strategies: !requireAuthenticatedSignUp ? [] : [Authentication.STRATEGY_JWT],
|
|
69
|
+
handler: async (context) => {
|
|
70
|
+
const body = await context.req.json();
|
|
71
|
+
const rs = await this.service.signIn(context, body);
|
|
72
|
+
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
80
73
|
},
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
74
|
+
});
|
|
75
|
+
this.defineRoute({
|
|
76
|
+
configs: {
|
|
77
|
+
description: 'Sign Up',
|
|
78
|
+
path: '/sign-up',
|
|
79
|
+
method: HTTP.Methods.POST,
|
|
80
|
+
authenticate: {
|
|
81
|
+
strategies: !requireAuthenticatedSignUp ? [] : [Authentication.STRATEGY_JWT],
|
|
82
|
+
},
|
|
83
|
+
request: {
|
|
84
|
+
body: OpenApiResponses.jsonContent({
|
|
85
|
+
description: 'Sign-up request body',
|
|
86
|
+
required: true,
|
|
87
|
+
schema: payload?.signUp?.request?.schema ?? SignUpRequestSchema,
|
|
88
|
+
}),
|
|
89
|
+
},
|
|
90
|
+
responses: OpenApiResponses.jsonResponse({
|
|
91
|
+
schema: payload?.signUp?.response?.schema ?? AnyObjectSchema,
|
|
92
|
+
description: 'Success Response',
|
|
86
93
|
}),
|
|
87
94
|
},
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
},
|
|
93
|
-
handler: async (context) => {
|
|
94
|
-
const body = await context.req.json();
|
|
95
|
-
const rs = await this.service.signUp(context, body);
|
|
96
|
-
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
97
|
-
},
|
|
98
|
-
});
|
|
99
|
-
this.defineRoute({
|
|
100
|
-
configs: {
|
|
101
|
-
description: 'Change password',
|
|
102
|
-
path: '/change-password',
|
|
103
|
-
method: HTTP.Methods.POST,
|
|
104
|
-
request: {
|
|
105
|
-
body: jsonContent({
|
|
106
|
-
description: 'Change password request body',
|
|
107
|
-
required: true,
|
|
108
|
-
schema: payload?.changePassword?.request?.schema ?? ChangePasswordRequestSchema,
|
|
109
|
-
}),
|
|
95
|
+
handler: async (context) => {
|
|
96
|
+
const body = await context.req.json();
|
|
97
|
+
const rs = await this.service.signUp(context, body);
|
|
98
|
+
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
110
99
|
},
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
});
|
|
123
|
-
// Re-issues an access token using the caller's currently valid JWT — no separate refresh token. Implementers must enforce their own rotation/revocation policy if needed.
|
|
124
|
-
this.defineRoute({
|
|
125
|
-
configs: {
|
|
126
|
-
description: 'Refresh access token',
|
|
127
|
-
path: '/token/refresh',
|
|
128
|
-
method: HTTP.Methods.POST,
|
|
129
|
-
responses: jsonResponse({
|
|
130
|
-
schema: payload?.refreshToken?.response?.schema ?? AnyObjectSchema,
|
|
131
|
-
description: 'Success Response',
|
|
132
|
-
}),
|
|
133
|
-
authenticate: { strategies: [Authentication.STRATEGY_JWT] },
|
|
134
|
-
},
|
|
135
|
-
handler: async (context) => {
|
|
136
|
-
if (!this.service.refreshToken) {
|
|
137
|
-
return throwNotSupported({
|
|
138
|
-
scope: AuthController_1.name,
|
|
139
|
-
feature: 'refreshToken',
|
|
140
|
-
logger: this.logger,
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
const rs = await this.service.refreshToken(context);
|
|
144
|
-
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
this.defineRoute({
|
|
148
|
-
configs: {
|
|
149
|
-
path: '/who-am-i',
|
|
150
|
-
method: HTTP.Methods.GET,
|
|
151
|
-
request: {
|
|
152
|
-
query: z.object({
|
|
153
|
-
withUserInformation: z
|
|
154
|
-
.enum(['true', 'false', '1', '0'])
|
|
155
|
-
.transform((value) => value === 'true' || value === '1')
|
|
156
|
-
.optional()
|
|
157
|
-
.openapi({
|
|
158
|
-
description: 'Whether to attach user information to currentUser',
|
|
100
|
+
});
|
|
101
|
+
this.defineRoute({
|
|
102
|
+
configs: {
|
|
103
|
+
description: 'Change password',
|
|
104
|
+
path: '/change-password',
|
|
105
|
+
method: HTTP.Methods.POST,
|
|
106
|
+
request: {
|
|
107
|
+
body: OpenApiResponses.jsonContent({
|
|
108
|
+
description: 'Change password request body',
|
|
109
|
+
required: true,
|
|
110
|
+
schema: payload?.changePassword?.request?.schema ?? ChangePasswordRequestSchema,
|
|
159
111
|
}),
|
|
112
|
+
},
|
|
113
|
+
responses: OpenApiResponses.jsonResponse({
|
|
114
|
+
schema: payload?.changePassword?.response?.schema ?? AnyObjectSchema,
|
|
115
|
+
description: 'Success Response',
|
|
160
116
|
}),
|
|
117
|
+
authenticate: { strategies: [Authentication.STRATEGY_JWT] },
|
|
161
118
|
},
|
|
162
|
-
|
|
163
|
-
|
|
119
|
+
handler: async (context) => {
|
|
120
|
+
const body = await context.req.json();
|
|
121
|
+
const rs = await this.service.changePassword(context, body);
|
|
122
|
+
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
123
|
+
},
|
|
124
|
+
});
|
|
125
|
+
// Re-issues an access token using the caller's currently valid JWT — no separate refresh token. Implementers must enforce their own rotation/revocation policy if needed.
|
|
126
|
+
this.defineRoute({
|
|
127
|
+
configs: {
|
|
128
|
+
description: 'Refresh access token',
|
|
129
|
+
path: '/token/refresh',
|
|
130
|
+
method: HTTP.Methods.POST,
|
|
131
|
+
responses: OpenApiResponses.jsonResponse({
|
|
132
|
+
schema: payload?.refreshToken?.response?.schema ?? AnyObjectSchema,
|
|
164
133
|
description: 'Success Response',
|
|
165
|
-
|
|
166
|
-
|
|
134
|
+
}),
|
|
135
|
+
authenticate: { strategies: [Authentication.STRATEGY_JWT] },
|
|
136
|
+
},
|
|
137
|
+
handler: async (context) => {
|
|
138
|
+
if (!this.service.refreshToken) {
|
|
139
|
+
return NotSupportedUtility.throwNotSupported({
|
|
140
|
+
scope: AuthController_1.name,
|
|
141
|
+
feature: 'refreshToken',
|
|
142
|
+
logger: this.logger,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
const rs = await this.service.refreshToken(context);
|
|
146
|
+
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
147
|
+
},
|
|
148
|
+
});
|
|
149
|
+
this.defineRoute({
|
|
150
|
+
configs: {
|
|
151
|
+
path: '/who-am-i',
|
|
152
|
+
method: HTTP.Methods.GET,
|
|
153
|
+
request: {
|
|
154
|
+
query: z.object({
|
|
155
|
+
withUserInformation: z
|
|
156
|
+
.enum(['true', 'false', '1', '0'])
|
|
157
|
+
.transform((value) => value === 'true' || value === '1')
|
|
167
158
|
.optional()
|
|
168
159
|
.openapi({
|
|
169
|
-
description: '
|
|
160
|
+
description: 'Whether to attach user information to currentUser',
|
|
170
161
|
}),
|
|
171
162
|
}),
|
|
163
|
+
},
|
|
164
|
+
responses: {
|
|
165
|
+
[HTTP.ResultCodes.RS_2.Ok]: OpenApiResponses.jsonContent({
|
|
166
|
+
description: 'Success Response',
|
|
167
|
+
schema: JWTTokenPayloadSchema.extend({
|
|
168
|
+
userInformation: (payload?.getUserInformation?.response?.schema ?? AnyObjectSchema)
|
|
169
|
+
.optional()
|
|
170
|
+
.openapi({
|
|
171
|
+
description: 'Attached when withUserInformation is truthy',
|
|
172
|
+
}),
|
|
173
|
+
}),
|
|
174
|
+
}),
|
|
175
|
+
},
|
|
176
|
+
authenticate: { strategies: [Authentication.STRATEGY_JWT] },
|
|
177
|
+
},
|
|
178
|
+
handler: async (context) => {
|
|
179
|
+
const { withUserInformation = false } = context.req.valid('query');
|
|
180
|
+
const currentUser = context.get(Authentication.CURRENT_USER);
|
|
181
|
+
let rs = currentUser;
|
|
182
|
+
if (withUserInformation) {
|
|
183
|
+
if (!this.service.getUserInformation) {
|
|
184
|
+
return NotSupportedUtility.throwNotSupported({
|
|
185
|
+
scope: AuthController_1.name,
|
|
186
|
+
feature: 'getUserInformation',
|
|
187
|
+
logger: this.logger,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
const userInformation = await this.service.getUserInformation(context, {});
|
|
191
|
+
rs = Object.assign({}, currentUser, { userInformation });
|
|
192
|
+
}
|
|
193
|
+
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
this.defineRoute({
|
|
197
|
+
configs: {
|
|
198
|
+
description: 'Get current user information',
|
|
199
|
+
path: '/me',
|
|
200
|
+
method: HTTP.Methods.GET,
|
|
201
|
+
responses: OpenApiResponses.jsonResponse({
|
|
202
|
+
schema: payload?.getUserInformation?.response?.schema ?? AnyObjectSchema,
|
|
203
|
+
description: 'Success Response',
|
|
172
204
|
}),
|
|
205
|
+
authenticate: { strategies: [Authentication.STRATEGY_JWT] },
|
|
173
206
|
},
|
|
174
|
-
|
|
175
|
-
},
|
|
176
|
-
handler: async (context) => {
|
|
177
|
-
const { withUserInformation = false } = context.req.valid('query');
|
|
178
|
-
const currentUser = context.get(Authentication.CURRENT_USER);
|
|
179
|
-
let rs = currentUser;
|
|
180
|
-
if (withUserInformation) {
|
|
207
|
+
handler: async (context) => {
|
|
181
208
|
if (!this.service.getUserInformation) {
|
|
182
|
-
return throwNotSupported({
|
|
209
|
+
return NotSupportedUtility.throwNotSupported({
|
|
183
210
|
scope: AuthController_1.name,
|
|
184
211
|
feature: 'getUserInformation',
|
|
185
212
|
logger: this.logger,
|
|
186
213
|
});
|
|
187
214
|
}
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
}),
|
|
203
|
-
authenticate: { strategies: [Authentication.STRATEGY_JWT] },
|
|
204
|
-
},
|
|
205
|
-
handler: async (context) => {
|
|
206
|
-
if (!this.service.getUserInformation) {
|
|
207
|
-
return throwNotSupported({
|
|
208
|
-
scope: AuthController_1.name,
|
|
209
|
-
feature: 'getUserInformation',
|
|
210
|
-
logger: this.logger,
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
const rs = await this.service.getUserInformation(context, {});
|
|
214
|
-
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
215
|
-
},
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
};
|
|
219
|
-
AuthController = AuthController_1 = __decorate([
|
|
220
|
-
controller({ path: restPath }),
|
|
221
|
-
__metadata("design:paramtypes", [Object])
|
|
222
|
-
], AuthController);
|
|
223
|
-
inject({ key: serviceKey })(AuthController, undefined, 0);
|
|
224
|
-
return AuthController;
|
|
225
|
-
};
|
|
215
|
+
const rs = await this.service.getUserInformation(context, {});
|
|
216
|
+
return context.json(rs, HTTP.ResultCodes.RS_2.Ok);
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
AuthController = AuthController_1 = __decorate([
|
|
222
|
+
controller({ path: restPath }),
|
|
223
|
+
__metadata("design:paramtypes", [Object])
|
|
224
|
+
], AuthController);
|
|
225
|
+
inject({ key: serviceKey })(AuthController, undefined, 0);
|
|
226
|
+
return AuthController;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
226
229
|
//# sourceMappingURL=factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseRestController } from '@venizia/ignis-kernel';\nimport { inject } from '@venizia/ignis-kernel';\nimport { controller } from '@venizia/ignis-kernel';\nimport { jsonContent, jsonResponse } from '@venizia/ignis-kernel';\nimport { throwNotSupported } from '@/utilities';\nimport { AnyObjectSchema } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\nimport { getError } from '@venizia/ignis-helpers/core';\nimport { HTTP, type ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport {\n ChangePasswordRequestSchema,\n SignInRequestSchema,\n SignUpRequestSchema,\n} from '@venizia/ignis-kernel';\nimport {\n Authentication,\n type IAuthService,\n type TDefineAuthControllerOpts,\n} from '@venizia/ignis-kernel';\n\nexport const JWTTokenPayloadSchema = z.object({\n userId: z.string().or(z.number()),\n roles: z.array(\n z.object({\n id: z.string().or(z.number()),\n identifier: z.string(),\n priority: z.number().int(),\n }),\n ),\n clientId: z.string().optional(),\n provider: z.string().optional(),\n email: z.email().optional(),\n});\n\nexport const defineAuthController = (opts: TDefineAuthControllerOpts) => {\n const { restPath = '/auth', serviceKey, requireAuthenticatedSignUp = false, payload = {} } = opts;\n\n @controller({ path: restPath })\n class AuthController extends BaseRestController {\n service: IAuthService;\n\n constructor(authService: IAuthService) {\n super({\n scope: AuthController.name,\n path: restPath,\n isStrict: true,\n });\n\n if (!authService) {\n throw getError({\n message:\n '[AuthController] Failed to init auth controller | Invalid injectable authentication service!',\n });\n }\n\n this.service = authService;\n }\n\n override binding(): ValueOrPromise<void> {\n this.defineRoute({\n configs: {\n description: 'Sign In',\n path: '/sign-in',\n method: HTTP.Methods.POST,\n request: {\n body: jsonContent({\n description: 'Sign-in request body',\n required: true,\n schema: payload?.signIn?.request?.schema ?? SignInRequestSchema,\n }),\n },\n responses: jsonResponse({\n schema: payload?.signIn?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.signIn(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Sign Up',\n path: '/sign-up',\n method: HTTP.Methods.POST,\n authenticate: {\n strategies: !requireAuthenticatedSignUp ? [] : [Authentication.STRATEGY_JWT],\n },\n request: {\n body: jsonContent({\n description: 'Sign-up request body',\n required: true,\n schema: payload?.signUp?.request?.schema ?? SignUpRequestSchema,\n }),\n },\n responses: jsonResponse({\n schema: payload?.signUp?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.signUp(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Change password',\n path: '/change-password',\n method: HTTP.Methods.POST,\n request: {\n body: jsonContent({\n description: 'Change password request body',\n required: true,\n schema: payload?.changePassword?.request?.schema ?? ChangePasswordRequestSchema,\n }),\n },\n responses: jsonResponse({\n schema: payload?.changePassword?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.changePassword(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n // Re-issues an access token using the caller's currently valid JWT — no separate refresh token. Implementers must enforce their own rotation/revocation policy if needed.\n this.defineRoute({\n configs: {\n description: 'Refresh access token',\n path: '/token/refresh',\n method: HTTP.Methods.POST,\n responses: jsonResponse({\n schema: payload?.refreshToken?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n if (!this.service.refreshToken) {\n return throwNotSupported({\n scope: AuthController.name,\n feature: 'refreshToken',\n logger: this.logger,\n });\n }\n\n const rs = await this.service.refreshToken(context);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n path: '/who-am-i',\n method: HTTP.Methods.GET,\n request: {\n query: z.object({\n withUserInformation: z\n .enum(['true', 'false', '1', '0'])\n .transform((value) => value === 'true' || value === '1')\n .optional()\n .openapi({\n description: 'Whether to attach user information to currentUser',\n }),\n }),\n },\n responses: {\n [HTTP.ResultCodes.RS_2.Ok]: jsonContent({\n description: 'Success Response',\n schema: JWTTokenPayloadSchema.extend({\n userInformation: (payload?.getUserInformation?.response?.schema ?? AnyObjectSchema)\n .optional()\n .openapi({\n description: 'Attached when withUserInformation is truthy',\n }),\n }),\n }),\n },\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n const { withUserInformation = false } = context.req.valid<{\n withUserInformation?: boolean;\n }>('query');\n\n const currentUser = context.get(Authentication.CURRENT_USER);\n let rs = currentUser;\n\n if (withUserInformation) {\n if (!this.service.getUserInformation) {\n return throwNotSupported({\n scope: AuthController.name,\n feature: 'getUserInformation',\n logger: this.logger,\n });\n }\n\n const userInformation = await this.service.getUserInformation(context, {});\n rs = Object.assign({}, currentUser, { userInformation });\n }\n\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Get current user information',\n path: '/me',\n method: HTTP.Methods.GET,\n responses: jsonResponse({\n schema: payload?.getUserInformation?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n if (!this.service.getUserInformation) {\n return throwNotSupported({\n scope: AuthController.name,\n feature: 'getUserInformation',\n logger: this.logger,\n });\n }\n\n const rs = await this.service.getUserInformation(context, {});\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n }\n\n inject({ key: serviceKey })(AuthController, undefined, 0);\n\n return AuthController;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authenticate/controllers/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseRestController } from '@venizia/ignis-kernel';\nimport { inject } from '@venizia/ignis-kernel';\nimport { controller } from '@venizia/ignis-kernel';\nimport { OpenApiResponses } from '@venizia/ignis-kernel';\nimport { NotSupportedUtility } from '@venizia/ignis-kernel';\nimport { AnyObjectSchema } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\nimport { getError } from '@venizia/ignis-helpers/core';\nimport { HTTP, type ValueOrPromise } from '@venizia/ignis-helpers/common';\nimport {\n ChangePasswordRequestSchema,\n SignInRequestSchema,\n SignUpRequestSchema,\n} from '@venizia/ignis-kernel';\nimport {\n Authentication,\n type IAuthService,\n type TDefineAuthControllerOpts,\n} from '@venizia/ignis-kernel';\n\nexport const JWTTokenPayloadSchema = z.object({\n userId: z.string().or(z.number()),\n roles: z.array(\n z.object({\n id: z.string().or(z.number()),\n identifier: z.string(),\n priority: z.number().int(),\n }),\n ),\n clientId: z.string().optional(),\n provider: z.string().optional(),\n email: z.email().optional(),\n});\n\n/** Builds the decorated REST controller of the authentication routes (sign-in, sign-up, change-password, who-am-i). */\nexport class AuthControllerFactory {\n static define(opts: TDefineAuthControllerOpts) {\n const {\n restPath = '/auth',\n serviceKey,\n requireAuthenticatedSignUp = false,\n payload = {},\n } = opts;\n\n @controller({ path: restPath })\n class AuthController extends BaseRestController {\n service: IAuthService;\n\n constructor(authService: IAuthService) {\n super({\n scope: AuthController.name,\n path: restPath,\n isStrict: true,\n });\n\n if (!authService) {\n throw getError({\n message:\n '[AuthController] Failed to init auth controller | Invalid injectable authentication service!',\n });\n }\n\n this.service = authService;\n }\n\n override binding(): ValueOrPromise<void> {\n this.defineRoute({\n configs: {\n description: 'Sign In',\n path: '/sign-in',\n method: HTTP.Methods.POST,\n request: {\n body: OpenApiResponses.jsonContent({\n description: 'Sign-in request body',\n required: true,\n schema: payload?.signIn?.request?.schema ?? SignInRequestSchema,\n }),\n },\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.signIn?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.signIn(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Sign Up',\n path: '/sign-up',\n method: HTTP.Methods.POST,\n authenticate: {\n strategies: !requireAuthenticatedSignUp ? [] : [Authentication.STRATEGY_JWT],\n },\n request: {\n body: OpenApiResponses.jsonContent({\n description: 'Sign-up request body',\n required: true,\n schema: payload?.signUp?.request?.schema ?? SignUpRequestSchema,\n }),\n },\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.signUp?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.signUp(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Change password',\n path: '/change-password',\n method: HTTP.Methods.POST,\n request: {\n body: OpenApiResponses.jsonContent({\n description: 'Change password request body',\n required: true,\n schema: payload?.changePassword?.request?.schema ?? ChangePasswordRequestSchema,\n }),\n },\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.changePassword?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n const body = await context.req.json();\n const rs = await this.service.changePassword(context, body);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n // Re-issues an access token using the caller's currently valid JWT — no separate refresh token. Implementers must enforce their own rotation/revocation policy if needed.\n this.defineRoute({\n configs: {\n description: 'Refresh access token',\n path: '/token/refresh',\n method: HTTP.Methods.POST,\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.refreshToken?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n if (!this.service.refreshToken) {\n return NotSupportedUtility.throwNotSupported({\n scope: AuthController.name,\n feature: 'refreshToken',\n logger: this.logger,\n });\n }\n\n const rs = await this.service.refreshToken(context);\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n path: '/who-am-i',\n method: HTTP.Methods.GET,\n request: {\n query: z.object({\n withUserInformation: z\n .enum(['true', 'false', '1', '0'])\n .transform((value) => value === 'true' || value === '1')\n .optional()\n .openapi({\n description: 'Whether to attach user information to currentUser',\n }),\n }),\n },\n responses: {\n [HTTP.ResultCodes.RS_2.Ok]: OpenApiResponses.jsonContent({\n description: 'Success Response',\n schema: JWTTokenPayloadSchema.extend({\n userInformation: (\n payload?.getUserInformation?.response?.schema ?? AnyObjectSchema\n )\n .optional()\n .openapi({\n description: 'Attached when withUserInformation is truthy',\n }),\n }),\n }),\n },\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n const { withUserInformation = false } = context.req.valid<{\n withUserInformation?: boolean;\n }>('query');\n\n const currentUser = context.get(Authentication.CURRENT_USER);\n let rs = currentUser;\n\n if (withUserInformation) {\n if (!this.service.getUserInformation) {\n return NotSupportedUtility.throwNotSupported({\n scope: AuthController.name,\n feature: 'getUserInformation',\n logger: this.logger,\n });\n }\n\n const userInformation = await this.service.getUserInformation(context, {});\n rs = Object.assign({}, currentUser, { userInformation });\n }\n\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n\n this.defineRoute({\n configs: {\n description: 'Get current user information',\n path: '/me',\n method: HTTP.Methods.GET,\n responses: OpenApiResponses.jsonResponse({\n schema: payload?.getUserInformation?.response?.schema ?? AnyObjectSchema,\n description: 'Success Response',\n }),\n authenticate: { strategies: [Authentication.STRATEGY_JWT] },\n },\n handler: async (context) => {\n if (!this.service.getUserInformation) {\n return NotSupportedUtility.throwNotSupported({\n scope: AuthController.name,\n feature: 'getUserInformation',\n logger: this.logger,\n });\n }\n\n const rs = await this.service.getUserInformation(context, {});\n return context.json(rs, HTTP.ResultCodes.RS_2.Ok);\n },\n });\n }\n }\n\n inject({ key: serviceKey })(AuthController, undefined, 0);\n\n return AuthController;\n }\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OpenApiResponses } from '@venizia/ignis-kernel';
|
|
2
2
|
import { z } from '@hono/zod-openapi';
|
|
3
3
|
// The /certs endpoint is intentionally unauthenticated - it serves the public JWKS external verifiers need to validate tokens issued by this service.
|
|
4
4
|
export const RouteConfigs = {
|
|
5
5
|
GET_JWKS_CERTS: {
|
|
6
6
|
path: '/',
|
|
7
7
|
method: 'get',
|
|
8
|
-
responses: jsonResponse({
|
|
8
|
+
responses: OpenApiResponses.jsonResponse({
|
|
9
9
|
schema: z
|
|
10
10
|
.object({
|
|
11
11
|
keys: z.array(z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/controllers/jwks/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/controllers/jwks/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,sJAAsJ;AACtJ,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,cAAc,EAAE;QACd,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC;YACvC,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;oBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACxB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACzB,CAAC,CACH;aACF,CAAC;iBACD,OAAO,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;YAE/C,WAAW,EAAE,kBAAkB;SAChC,CAAC;KACH;CACO,CAAC","sourcesContent":["import { OpenApiResponses } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\n\n// The /certs endpoint is intentionally unauthenticated - it serves the public JWKS external verifiers need to validate tokens issued by this service.\nexport const RouteConfigs = {\n GET_JWKS_CERTS: {\n path: '/',\n method: 'get',\n responses: OpenApiResponses.jsonResponse({\n schema: z\n .object({\n keys: z.array(\n z.object({\n kty: z.string(),\n kid: z.string().optional(),\n use: z.string().optional(),\n alg: z.string().optional(),\n crv: z.string().optional(),\n x: z.string().optional(),\n y: z.string().optional(),\n n: z.string().optional(),\n e: z.string().optional(),\n }),\n ),\n })\n .openapi({ description: 'JSON Web Key Set' }),\n\n description: 'JSON Web Key Set',\n }),\n },\n} as const;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { OpenApiResponses } from '@venizia/ignis-kernel';
|
|
2
2
|
import { z } from '@hono/zod-openapi';
|
|
3
3
|
/**
|
|
4
4
|
* Unauthenticated by design: it serves the PUBLIC key a callee needs to verify this service's
|
|
@@ -11,7 +11,7 @@ export const ServiceCertsRouteConfigs = {
|
|
|
11
11
|
GET_SERVICE_CERTS: {
|
|
12
12
|
path: '/',
|
|
13
13
|
method: 'get',
|
|
14
|
-
responses: jsonResponse({
|
|
14
|
+
responses: OpenApiResponses.jsonResponse({
|
|
15
15
|
schema: z
|
|
16
16
|
.object({
|
|
17
17
|
keys: z.array(z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/controllers/service-certs/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authenticate/controllers/service-certs/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,iBAAiB,EAAE;QACjB,IAAI,EAAE,GAAG;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,gBAAgB,CAAC,YAAY,CAAC;YACvC,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,IAAI,EAAE,CAAC,CAAC,KAAK,CACX,CAAC,CAAC,MAAM,CAAC;oBACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;oBACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC1B,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACzB,CAAC,CACH;aACF,CAAC;iBACD,OAAO,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;YACjE,WAAW,EAAE,oCAAoC;SAClD,CAAC;KACH;CACO,CAAC","sourcesContent":["import { OpenApiResponses } from '@venizia/ignis-kernel';\nimport { z } from '@hono/zod-openapi';\n\n/**\n * Unauthenticated by design: it serves the PUBLIC key a callee needs to verify this service's\n * assertions. Whoever can reach it learns only which key signs, which is what verification requires.\n *\n * The schema names public members only. That is documentation, not a filter - a zod response schema\n * does not strip anything - so the guard that private material never gets here lives in the signer.\n */\nexport const ServiceCertsRouteConfigs = {\n GET_SERVICE_CERTS: {\n path: '/',\n method: 'get',\n responses: OpenApiResponses.jsonResponse({\n schema: z\n .object({\n keys: z.array(\n z.object({\n kty: z.string(),\n kid: z.string().optional(),\n use: z.string().optional(),\n alg: z.string().optional(),\n crv: z.string().optional(),\n x: z.string().optional(),\n }),\n ),\n })\n .openapi({ description: 'Service assertion JSON Web Key Set' }),\n description: 'Service assertion JSON Web Key Set',\n }),\n },\n} as const;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DrizzleResultUtility } from '../../../../utilities/index.js';
|
|
2
2
|
import { BaseHelper } from '@venizia/ignis-helpers/core';
|
|
3
3
|
import { CasbinModule } from '../enforcers/casbin-module.js';
|
|
4
4
|
import { PolicyConnectorResolver } from './connector.js';
|
|
@@ -17,7 +17,7 @@ export class BaseFilteredAdapter extends BaseHelper {
|
|
|
17
17
|
/** Runs a raw statement and returns its rows. Drizzle's `execute()` shape differs per driver (node-postgres `{ rows }`, postgres-js the row list itself) - never read `.rows` directly. */
|
|
18
18
|
async query(opts) {
|
|
19
19
|
const result = await this.connector.execute(opts.statement);
|
|
20
|
-
return readResultRows({ result });
|
|
20
|
+
return DrizzleResultUtility.readResultRows({ result });
|
|
21
21
|
}
|
|
22
22
|
isFiltered() {
|
|
23
23
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-filtered.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/base-filtered.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"base-filtered.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/base-filtered.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAGtD,0LAA0L;AAC1L,MAAM,OAAgB,mBACpB,SAAQ,UAAU;IAKlB,YAAY,IAAwD;QAClE,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;IAED,IAAc,SAAS;QACrB,OAAO,uBAAuB,CAAC,OAAO,CAAC;YACrC,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,MAAM,EAAE,qBAAqB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,2LAA2L;IACjL,KAAK,CAAC,KAAK,CAAO,IAAwB;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,OAAO,oBAAoB,CAAC,cAAc,CAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;IAKD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,UAAU,KAAmB,CAAC;IACpC,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,SAAS,KAAmB,CAAC;IACnC,KAAK,CAAC,YAAY,KAAmB,CAAC;IACtC,KAAK,CAAC,oBAAoB,KAAmB,CAAC;IAE9C,+FAA+F;IACrF,KAAK,CAAC,SAAS,CAAC,IAAuC;QAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAC7C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;CACF","sourcesContent":["import { DrizzleResultUtility } from '@/utilities';\nimport { BaseHelper } from '@venizia/ignis-helpers/core';\nimport { type FilteredAdapter, type Model } from 'casbin';\nimport type { SQL } from 'drizzle-orm';\nimport { CasbinModule } from '../enforcers/casbin-module';\nimport { PolicyConnectorResolver } from './connector';\nimport type { ICasbinPolicyFilter, ICasbinPolicySource, TCasbinPolicyConnector } from './common';\n\n/** Read-only base for casbin FilteredAdapters backed by a datasource - owns connector plumbing and no-op write methods; subclasses implement {@link loadFilteredPolicy} per principal. */\nexport abstract class BaseFilteredAdapter<TFilter = ICasbinPolicyFilter>\n extends BaseHelper\n implements FilteredAdapter\n{\n protected readonly dataSource: ICasbinPolicySource;\n\n constructor(opts: { scope: string; dataSource: ICasbinPolicySource }) {\n super({ scope: opts.scope });\n this.dataSource = opts.dataSource;\n }\n\n protected get connector(): TCasbinPolicyConnector {\n return PolicyConnectorResolver.resolve({\n source: this.dataSource,\n caller: 'BaseFilteredAdapter',\n });\n }\n\n /** Runs a raw statement and returns its rows. Drizzle's `execute()` shape differs per driver (node-postgres `{ rows }`, postgres-js the row list itself) - never read `.rows` directly. */\n protected async query<TRow>(opts: { statement: SQL }): Promise<TRow[]> {\n const result = await this.connector.execute(opts.statement);\n return DrizzleResultUtility.readResultRows<TRow>({ result });\n }\n\n /** Load ONLY the policies matching `filter` into `model` (the store is read for one principal). */\n abstract loadFilteredPolicy(model: Model, filter: TFilter): Promise<void>;\n\n isFiltered(): boolean {\n return true;\n }\n\n // Read-only adapter - write methods are intentional no-ops.\n async loadPolicy(): Promise<void> {}\n async savePolicy(): Promise<boolean> {\n return true;\n }\n async addPolicy(): Promise<void> {}\n async removePolicy(): Promise<void> {}\n async removeFilteredPolicy(): Promise<void> {}\n\n /** Parse + load casbin policy lines into a model. Shared by subclasses' loadFilteredPolicy. */\n protected async loadLines(opts: { model: Model; lines: string[] }): Promise<void> {\n const { Helper } = await CasbinModule.load();\n for (const line of opts.lines) {\n Helper.loadPolicyLine(line, opts.model);\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-grant-expander.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/custom-grant-expander.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAI3E,kHAAkH;AAClH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACnE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBAEvD,IAAI,EAAE;QAChB,UAAU,EAAE,mBAAmB,CAAC;QAChC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;KACpE;IAOD,yFAAyF;IACzF,eAAe,CAAC,IAAI,EAAE;QACpB,GAAG,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;QACrE,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;QACpC,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,GAAG,MAAM,GAAG,IAAI;IAsBjB,4NAA4N;IACtN,kBAAkB,CAAC,IAAI,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,eAAe,EAAE,CAAC;KAC/B,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAoDtD,uGAAuG;IACvG,OAAO,CAAC,cAAc;IAMtB,4LAA4L;IAC5L,OAAO,CAAC,gBAAgB;IASxB,sGAAsG;YACxF,qBAAqB;
|
|
1
|
+
{"version":3,"file":"custom-grant-expander.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/custom-grant-expander.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAI3E,kHAAkH;AAClH,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACnD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACnE,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBAEvD,IAAI,EAAE;QAChB,UAAU,EAAE,mBAAmB,CAAC;QAChC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,YAAY,GAAG,YAAY,CAAC,CAAC;KACpE;IAOD,yFAAyF;IACzF,eAAe,CAAC,IAAI,EAAE;QACpB,GAAG,EAAE;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAC;QACrE,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;QACpC,cAAc,EAAE,OAAO,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,GAAG,MAAM,GAAG,IAAI;IAsBjB,4NAA4N;IACtN,kBAAkB,CAAC,IAAI,EAAE;QAC7B,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,eAAe,EAAE,CAAC;KAC/B,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAoDtD,uGAAuG;IACvG,OAAO,CAAC,cAAc;IAMtB,4LAA4L;IAC5L,OAAO,CAAC,gBAAgB;IASxB,sGAAsG;YACxF,qBAAqB;CAkCpC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DrizzleResultUtility } from '../../../../utilities/index.js';
|
|
2
2
|
import { BaseHelper } from '@venizia/ignis-helpers/core';
|
|
3
3
|
import { AuthorizationActions, AuthorizationPermissionBuilder, AuthorizationPolicyVariants, GrantBuilder, } from '@venizia/ignis-kernel';
|
|
4
4
|
import { sql } from 'drizzle-orm';
|
|
@@ -99,7 +99,7 @@ export class CustomGrantExpander extends BaseHelper {
|
|
|
99
99
|
WHERE (permission.subject, permission.method) IN (${sql.join(opts.pairs.map((pair) => sql `(${pair.subject}, ${pair.method})`), sql `, `)})
|
|
100
100
|
AND permission.method <> ${AuthorizationPermissionBuilder.RESOURCE_NODE_METHOD}${this.softDeleteClause({ alias: 'permission' })}
|
|
101
101
|
`);
|
|
102
|
-
return readResultRows({
|
|
102
|
+
return DrizzleResultUtility.readResultRows({
|
|
103
103
|
result,
|
|
104
104
|
});
|
|
105
105
|
}
|