@futdevpro/nts-dynamo 1.10.23 → 1.10.25
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/build/_modules/oauth2/_routes/oauth2.controller.d.ts +17 -0
- package/build/_modules/oauth2/_routes/oauth2.controller.d.ts.map +1 -0
- package/build/_modules/oauth2/_routes/oauth2.controller.js +97 -0
- package/build/_modules/oauth2/_routes/oauth2.controller.js.map +1 -0
- package/build/_modules/oauth2/_services/oauth2.auth-service.d.ts +31 -0
- package/build/_modules/oauth2/_services/oauth2.auth-service.d.ts.map +1 -0
- package/build/_modules/oauth2/_services/oauth2.auth-service.js +216 -0
- package/build/_modules/oauth2/_services/oauth2.auth-service.js.map +1 -0
- package/build/_modules/oauth2/_services/oauth2.control-service.d.ts +133 -0
- package/build/_modules/oauth2/_services/oauth2.control-service.d.ts.map +1 -0
- package/build/_modules/oauth2/_services/oauth2.control-service.js +574 -0
- package/build/_modules/oauth2/_services/oauth2.control-service.js.map +1 -0
- package/build/_modules/oauth2/index.d.ts +4 -0
- package/build/_modules/oauth2/index.d.ts.map +1 -0
- package/build/_modules/oauth2/index.js +7 -0
- package/build/_modules/oauth2/index.js.map +1 -0
- package/build/_modules/open-ai/_enums/open-ai-model.enum.d.ts +11 -0
- package/build/_modules/open-ai/_enums/open-ai-model.enum.d.ts.map +1 -0
- package/build/_modules/open-ai/_enums/open-ai-model.enum.js +110 -0
- package/build/_modules/open-ai/_enums/open-ai-model.enum.js.map +1 -0
- package/build/_modules/open-ai/_models/gpt-call-settings.interface.d.ts +54 -0
- package/build/_modules/open-ai/_models/gpt-call-settings.interface.d.ts.map +1 -0
- package/build/_modules/open-ai/_models/gpt-call-settings.interface.js +65 -0
- package/build/_modules/open-ai/_models/gpt-call-settings.interface.js.map +1 -0
- package/build/_modules/open-ai/_models/open-ai-api-env-settings.interface.d.ts +7 -0
- package/build/_modules/open-ai/_models/open-ai-api-env-settings.interface.d.ts.map +1 -0
- package/build/_modules/open-ai/_models/open-ai-api-env-settings.interface.js +3 -0
- package/build/_modules/open-ai/_models/open-ai-api-env-settings.interface.js.map +1 -0
- package/build/_modules/open-ai/_models/open-ai-settings.interface.d.ts +17 -0
- package/build/_modules/open-ai/_models/open-ai-settings.interface.d.ts.map +1 -0
- package/build/_modules/open-ai/_models/open-ai-settings.interface.js +25 -0
- package/build/_modules/open-ai/_models/open-ai-settings.interface.js.map +1 -0
- package/build/_modules/open-ai/_services/embedding.control-service.d.ts +26 -0
- package/build/_modules/open-ai/_services/embedding.control-service.d.ts.map +1 -0
- package/build/_modules/open-ai/_services/embedding.control-service.js +54 -0
- package/build/_modules/open-ai/_services/embedding.control-service.js.map +1 -0
- package/build/_modules/open-ai/_services/gpt.service-base.d.ts +98 -0
- package/build/_modules/open-ai/_services/gpt.service-base.d.ts.map +1 -0
- package/build/_modules/open-ai/_services/gpt.service-base.js +284 -0
- package/build/_modules/open-ai/_services/gpt.service-base.js.map +1 -0
- package/build/_modules/open-ai/_services/open-ai.service-base.d.ts +23 -0
- package/build/_modules/open-ai/_services/open-ai.service-base.d.ts.map +1 -0
- package/build/_modules/open-ai/_services/open-ai.service-base.js +50 -0
- package/build/_modules/open-ai/_services/open-ai.service-base.js.map +1 -0
- package/build/_modules/open-ai/index.d.ts +8 -0
- package/build/_modules/open-ai/index.d.ts.map +1 -0
- package/build/_modules/open-ai/index.js +11 -0
- package/build/_modules/open-ai/index.js.map +1 -0
- package/build/_services/base/db.service.d.ts +38 -0
- package/build/_services/base/db.service.d.ts.map +1 -1
- package/build/_services/base/db.service.js +40 -0
- package/build/_services/base/db.service.js.map +1 -1
- package/build/_services/server/app.server.d.ts +17 -0
- package/build/_services/server/app.server.d.ts.map +1 -1
- package/build/_services/server/app.server.js +17 -0
- package/build/_services/server/app.server.js.map +1 -1
- package/package.json +47 -17
- package/src/_modules/oauth2/_routes/oauth2.controller.ts +99 -0
- package/src/_modules/oauth2/_services/oauth2.auth-service.ts +232 -0
- package/src/_modules/oauth2/_services/oauth2.control-service.ts +651 -0
- package/src/_modules/oauth2/index.ts +9 -0
- package/src/_modules/open-ai/_enums/open-ai-model.enum.ts +137 -0
- package/src/_modules/open-ai/_models/gpt-call-settings.interface.ts +69 -0
- package/src/_modules/open-ai/_models/open-ai-api-env-settings.interface.ts +12 -0
- package/src/_modules/open-ai/_models/open-ai-settings.interface.ts +31 -0
- package/src/_modules/open-ai/_services/embedding.control-service.ts +61 -0
- package/src/_modules/open-ai/_services/gpt.service-base.ts +440 -0
- package/src/_modules/open-ai/_services/open-ai.service-base.ts +73 -0
- package/src/_modules/open-ai/index.ts +13 -0
- package/src/_services/base/db.service.ts +41 -0
- package/src/_services/server/app.server.ts +18 -0
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_OAuth2_ControlService = void 0;
|
|
4
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
|
+
const singleton_service_1 = require("../../../_services/base/singleton.service");
|
|
6
|
+
const global_settings_const_1 = require("../../../_collections/global-settings.const");
|
|
7
|
+
const oauth2_auth_service_1 = require("./oauth2.auth-service");
|
|
8
|
+
const crypto_1 = require("crypto");
|
|
9
|
+
/**
|
|
10
|
+
* OAuth2 Control Service implementation
|
|
11
|
+
*
|
|
12
|
+
* This service handles OAuth2 specific business logic and token management
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const oauth2Service = DyNTS_OAuth2_ControlService.getInstance();
|
|
16
|
+
* await oauth2Service.handleAuthorizationRequest(req, res);
|
|
17
|
+
*/
|
|
18
|
+
class DyNTS_OAuth2_ControlService extends singleton_service_1.DyNTS_SingletonService {
|
|
19
|
+
static getInstance() {
|
|
20
|
+
return DyNTS_OAuth2_ControlService.getSingletonInstance();
|
|
21
|
+
}
|
|
22
|
+
serviceName = 'OAuth2ControlService';
|
|
23
|
+
authService = oauth2_auth_service_1.DyNTS_OAuth2_AuthService.getInstance();
|
|
24
|
+
authorizationCodes = new Map();
|
|
25
|
+
accessTokens = new Map();
|
|
26
|
+
refreshTokens = new Map();
|
|
27
|
+
clients = new Map();
|
|
28
|
+
users = new Map();
|
|
29
|
+
/**
|
|
30
|
+
* Handles the OAuth2 authorization request
|
|
31
|
+
* @param req Express Request object
|
|
32
|
+
* @param res Express Response object
|
|
33
|
+
*/
|
|
34
|
+
async handleAuthorizationRequest(req, res) {
|
|
35
|
+
try {
|
|
36
|
+
const { response_type, client_id, redirect_uri, scope, state } = req.query;
|
|
37
|
+
// Validate required parameters
|
|
38
|
+
if (!response_type || !client_id || !redirect_uri) {
|
|
39
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
40
|
+
status: 400,
|
|
41
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA0`,
|
|
42
|
+
addECToUserMsg: true,
|
|
43
|
+
message: 'Missing required OAuth2 parameters',
|
|
44
|
+
userMessage: 'Invalid authorization request',
|
|
45
|
+
issuerService: this.serviceName,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
// Validate client_id against registered clients
|
|
49
|
+
if (!this.isValidClient(client_id)) {
|
|
50
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
51
|
+
status: 400,
|
|
52
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA2`,
|
|
53
|
+
addECToUserMsg: true,
|
|
54
|
+
message: 'Invalid client_id',
|
|
55
|
+
userMessage: 'Invalid authorization request',
|
|
56
|
+
issuerService: this.serviceName,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
// Validate redirect_uri against registered redirect URIs
|
|
60
|
+
if (!this.isValidRedirectUri(client_id, redirect_uri)) {
|
|
61
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
62
|
+
status: 400,
|
|
63
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA3`,
|
|
64
|
+
addECToUserMsg: true,
|
|
65
|
+
message: 'Invalid redirect_uri',
|
|
66
|
+
userMessage: 'Invalid authorization request',
|
|
67
|
+
issuerService: this.serviceName,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// Validate scope against allowed scopes
|
|
71
|
+
if (!this.isValidScope(client_id, scope)) {
|
|
72
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
73
|
+
status: 400,
|
|
74
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA4`,
|
|
75
|
+
addECToUserMsg: true,
|
|
76
|
+
message: 'Invalid scope',
|
|
77
|
+
userMessage: 'Invalid authorization request',
|
|
78
|
+
issuerService: this.serviceName,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
// For authorization code flow
|
|
82
|
+
if (response_type === 'code') {
|
|
83
|
+
const authorizationCode = await this.generateAuthorizationCode(client_id, scope);
|
|
84
|
+
// Redirect with authorization code
|
|
85
|
+
const redirectUrl = new URL(redirect_uri);
|
|
86
|
+
redirectUrl.searchParams.append('code', authorizationCode);
|
|
87
|
+
if (state)
|
|
88
|
+
redirectUrl.searchParams.append('state', state);
|
|
89
|
+
res.redirect(redirectUrl.toString());
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
// For implicit flow
|
|
93
|
+
if (response_type === 'token') {
|
|
94
|
+
const accessToken = await this.generateAccessToken(client_id, scope);
|
|
95
|
+
// Redirect with access token
|
|
96
|
+
const redirectUrl = new URL(redirect_uri);
|
|
97
|
+
redirectUrl.hash = `access_token=${accessToken}`;
|
|
98
|
+
if (state)
|
|
99
|
+
redirectUrl.hash += `&state=${state}`;
|
|
100
|
+
res.redirect(redirectUrl.toString());
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
104
|
+
status: 400,
|
|
105
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HA1`,
|
|
106
|
+
addECToUserMsg: true,
|
|
107
|
+
message: 'Unsupported response_type',
|
|
108
|
+
userMessage: 'Invalid authorization request',
|
|
109
|
+
issuerService: this.serviceName,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
fsm_dynamo_1.DyFM_Log.error('Authorization request failed', error);
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Validates if the client is registered and active
|
|
119
|
+
* @param clientId The client ID to validate
|
|
120
|
+
* @returns true if the client is valid
|
|
121
|
+
*/
|
|
122
|
+
isValidClient(clientId) {
|
|
123
|
+
const client = this.clients.get(clientId);
|
|
124
|
+
return client?.isActive ?? false;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Validates if the redirect URI is registered for the client
|
|
128
|
+
* @param clientId The client ID
|
|
129
|
+
* @param redirectUri The redirect URI to validate
|
|
130
|
+
* @returns true if the redirect URI is valid
|
|
131
|
+
*/
|
|
132
|
+
isValidRedirectUri(clientId, redirectUri) {
|
|
133
|
+
const client = this.clients.get(clientId);
|
|
134
|
+
if (!client)
|
|
135
|
+
return false;
|
|
136
|
+
// Check if the redirect URI matches any of the registered URIs
|
|
137
|
+
return client.redirectUris.some(uri => {
|
|
138
|
+
// Simple exact match for now
|
|
139
|
+
// TODO: Implement more sophisticated URI matching (e.g., wildcards, regex)
|
|
140
|
+
return uri === redirectUri;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Validates if the scope is allowed for the client
|
|
145
|
+
* @param clientId The client ID
|
|
146
|
+
* @param scope The scope to validate
|
|
147
|
+
* @returns true if the scope is valid
|
|
148
|
+
*/
|
|
149
|
+
isValidScope(clientId, scope) {
|
|
150
|
+
const client = this.clients.get(clientId);
|
|
151
|
+
if (!client)
|
|
152
|
+
return false;
|
|
153
|
+
// If no scope is requested, it's valid
|
|
154
|
+
if (!scope)
|
|
155
|
+
return true;
|
|
156
|
+
// Split scope string into individual scopes
|
|
157
|
+
const requestedScopes = scope.split(' ');
|
|
158
|
+
// Check if all requested scopes are allowed
|
|
159
|
+
return requestedScopes.every(s => client.allowedScopes.includes(s));
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Handles the OAuth2 token request
|
|
163
|
+
* @param req Express Request object
|
|
164
|
+
* @param res Express Response object
|
|
165
|
+
*/
|
|
166
|
+
async handleTokenRequest(req, res) {
|
|
167
|
+
try {
|
|
168
|
+
const { grant_type, code, refresh_token, client_id, client_secret, username, password } = req.body;
|
|
169
|
+
// Validate required parameters
|
|
170
|
+
if (!grant_type || !client_id || !client_secret) {
|
|
171
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
172
|
+
status: 400,
|
|
173
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT0`,
|
|
174
|
+
addECToUserMsg: true,
|
|
175
|
+
message: 'Missing required OAuth2 parameters',
|
|
176
|
+
userMessage: 'Invalid token request',
|
|
177
|
+
issuerService: this.serviceName,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
// Validate client credentials
|
|
181
|
+
if (!this.validateClientCredentials(client_id, client_secret)) {
|
|
182
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
183
|
+
status: 401,
|
|
184
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT4`,
|
|
185
|
+
addECToUserMsg: true,
|
|
186
|
+
message: 'Invalid client credentials',
|
|
187
|
+
userMessage: 'Invalid token request',
|
|
188
|
+
issuerService: this.serviceName,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
switch (grant_type) {
|
|
192
|
+
case 'authorization_code':
|
|
193
|
+
if (!code) {
|
|
194
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
195
|
+
status: 400,
|
|
196
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT1`,
|
|
197
|
+
addECToUserMsg: true,
|
|
198
|
+
message: 'Missing authorization code',
|
|
199
|
+
userMessage: 'Invalid token request',
|
|
200
|
+
issuerService: this.serviceName,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
// Validate authorization code
|
|
204
|
+
const authCodeData = this.authorizationCodes.get(code);
|
|
205
|
+
if (!authCodeData || authCodeData.expiresAt < Date.now()) {
|
|
206
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
207
|
+
status: 400,
|
|
208
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT5`,
|
|
209
|
+
addECToUserMsg: true,
|
|
210
|
+
message: 'Invalid or expired authorization code',
|
|
211
|
+
userMessage: 'Invalid token request',
|
|
212
|
+
issuerService: this.serviceName,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
// Remove used authorization code
|
|
216
|
+
this.authorizationCodes.delete(code);
|
|
217
|
+
const accessToken = await this.generateAccessToken(client_id, authCodeData.scope);
|
|
218
|
+
const refreshToken = await this.generateRefreshToken(client_id);
|
|
219
|
+
// Store refresh token with access token reference
|
|
220
|
+
this.refreshTokens.set(refreshToken, {
|
|
221
|
+
clientId: client_id,
|
|
222
|
+
scope: authCodeData.scope,
|
|
223
|
+
accessToken
|
|
224
|
+
});
|
|
225
|
+
res.json({
|
|
226
|
+
access_token: accessToken,
|
|
227
|
+
token_type: 'Bearer',
|
|
228
|
+
expires_in: 3600,
|
|
229
|
+
refresh_token: refreshToken,
|
|
230
|
+
scope: authCodeData.scope
|
|
231
|
+
});
|
|
232
|
+
break;
|
|
233
|
+
case 'refresh_token':
|
|
234
|
+
if (!refresh_token) {
|
|
235
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
236
|
+
status: 400,
|
|
237
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT2`,
|
|
238
|
+
addECToUserMsg: true,
|
|
239
|
+
message: 'Missing refresh token',
|
|
240
|
+
userMessage: 'Invalid token request',
|
|
241
|
+
issuerService: this.serviceName,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
// Validate refresh token
|
|
245
|
+
const refreshTokenData = this.refreshTokens.get(refresh_token);
|
|
246
|
+
if (!refreshTokenData) {
|
|
247
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
248
|
+
status: 400,
|
|
249
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT6`,
|
|
250
|
+
addECToUserMsg: true,
|
|
251
|
+
message: 'Invalid refresh token',
|
|
252
|
+
userMessage: 'Invalid token request',
|
|
253
|
+
issuerService: this.serviceName,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
// Revoke old access token
|
|
257
|
+
this.accessTokens.delete(refreshTokenData.accessToken);
|
|
258
|
+
// Generate new access token
|
|
259
|
+
const newAccessToken = await this.generateAccessToken(client_id, refreshTokenData.scope);
|
|
260
|
+
const newRefreshToken = await this.generateRefreshToken(client_id);
|
|
261
|
+
// Store new refresh token
|
|
262
|
+
this.refreshTokens.set(newRefreshToken, {
|
|
263
|
+
clientId: client_id,
|
|
264
|
+
scope: refreshTokenData.scope,
|
|
265
|
+
accessToken: newAccessToken
|
|
266
|
+
});
|
|
267
|
+
res.json({
|
|
268
|
+
access_token: newAccessToken,
|
|
269
|
+
token_type: 'Bearer',
|
|
270
|
+
expires_in: 3600,
|
|
271
|
+
refresh_token: newRefreshToken,
|
|
272
|
+
scope: refreshTokenData.scope
|
|
273
|
+
});
|
|
274
|
+
break;
|
|
275
|
+
case 'client_credentials':
|
|
276
|
+
const clientAccessToken = await this.generateAccessToken(client_id, '');
|
|
277
|
+
res.json({
|
|
278
|
+
access_token: clientAccessToken,
|
|
279
|
+
token_type: 'Bearer',
|
|
280
|
+
expires_in: 3600
|
|
281
|
+
});
|
|
282
|
+
break;
|
|
283
|
+
case 'password':
|
|
284
|
+
if (!username || !password) {
|
|
285
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
286
|
+
status: 400,
|
|
287
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT7`,
|
|
288
|
+
addECToUserMsg: true,
|
|
289
|
+
message: 'Missing username or password',
|
|
290
|
+
userMessage: 'Invalid token request',
|
|
291
|
+
issuerService: this.serviceName,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
// Authenticate user
|
|
295
|
+
const userScopes = this.authenticateUser(username, password);
|
|
296
|
+
if (!userScopes) {
|
|
297
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
298
|
+
status: 401,
|
|
299
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT8`,
|
|
300
|
+
addECToUserMsg: true,
|
|
301
|
+
message: 'Invalid username or password',
|
|
302
|
+
userMessage: 'Invalid token request',
|
|
303
|
+
issuerService: this.serviceName,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
// Generate access token
|
|
307
|
+
const userAccessToken = await this.generateAccessToken(client_id, userScopes.join(' '));
|
|
308
|
+
const userRefreshToken = await this.generateRefreshToken(client_id);
|
|
309
|
+
// Store refresh token with access token reference
|
|
310
|
+
this.refreshTokens.set(userRefreshToken, {
|
|
311
|
+
clientId: client_id,
|
|
312
|
+
scope: userScopes.join(' '),
|
|
313
|
+
accessToken: userAccessToken
|
|
314
|
+
});
|
|
315
|
+
res.json({
|
|
316
|
+
access_token: userAccessToken,
|
|
317
|
+
token_type: 'Bearer',
|
|
318
|
+
expires_in: 3600,
|
|
319
|
+
refresh_token: userRefreshToken,
|
|
320
|
+
scope: userScopes.join(' ')
|
|
321
|
+
});
|
|
322
|
+
break;
|
|
323
|
+
default:
|
|
324
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
325
|
+
status: 400,
|
|
326
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HT3`,
|
|
327
|
+
addECToUserMsg: true,
|
|
328
|
+
message: 'Unsupported grant_type',
|
|
329
|
+
userMessage: 'Invalid token request',
|
|
330
|
+
issuerService: this.serviceName,
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
fsm_dynamo_1.DyFM_Log.error('Token request failed', error);
|
|
336
|
+
throw error;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Validates client credentials
|
|
341
|
+
* @param clientId The client ID
|
|
342
|
+
* @param clientSecret The client secret
|
|
343
|
+
* @returns true if the credentials are valid
|
|
344
|
+
*/
|
|
345
|
+
validateClientCredentials(clientId, clientSecret) {
|
|
346
|
+
const client = this.clients.get(clientId);
|
|
347
|
+
return (client?.clientSecret === clientSecret) && (client?.isActive ?? false);
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Handles the OAuth2 userinfo request
|
|
351
|
+
* @param req Express Request object
|
|
352
|
+
* @param res Express Response object
|
|
353
|
+
*/
|
|
354
|
+
async handleUserInfoRequest(req, res) {
|
|
355
|
+
try {
|
|
356
|
+
const token = this.authService.getTokenFromRequest(req);
|
|
357
|
+
// Validate token
|
|
358
|
+
const tokenData = this.accessTokens.get(token);
|
|
359
|
+
if (!tokenData || tokenData.expiresAt < Date.now()) {
|
|
360
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
361
|
+
status: 401,
|
|
362
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HU0`,
|
|
363
|
+
addECToUserMsg: true,
|
|
364
|
+
message: 'Invalid or expired access token',
|
|
365
|
+
userMessage: 'Invalid token',
|
|
366
|
+
issuerService: this.serviceName,
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
// Extract user information based on token scope
|
|
370
|
+
const userInfo = await this.getUserInfoFromToken(token);
|
|
371
|
+
res.json(userInfo);
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
fsm_dynamo_1.DyFM_Log.error('Userinfo request failed', error);
|
|
375
|
+
throw error;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Gets user information from the token
|
|
380
|
+
* @param token The access token
|
|
381
|
+
* @returns The user information object
|
|
382
|
+
*/
|
|
383
|
+
async getUserInfoFromToken(token) {
|
|
384
|
+
const tokenData = this.accessTokens.get(token);
|
|
385
|
+
if (!tokenData) {
|
|
386
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
387
|
+
status: 401,
|
|
388
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HU1`,
|
|
389
|
+
addECToUserMsg: true,
|
|
390
|
+
message: 'Invalid access token',
|
|
391
|
+
userMessage: 'Invalid token',
|
|
392
|
+
issuerService: this.serviceName,
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
// TODO: Implement user information retrieval from database/storage
|
|
396
|
+
// For now, return mock user information
|
|
397
|
+
return {
|
|
398
|
+
sub: 'user123',
|
|
399
|
+
name: 'John Doe',
|
|
400
|
+
email: 'john.doe@example.com',
|
|
401
|
+
// Add other user information based on scope
|
|
402
|
+
...(tokenData.scope.includes('profile') && {
|
|
403
|
+
given_name: 'John',
|
|
404
|
+
family_name: 'Doe',
|
|
405
|
+
picture: 'https://example.com/john.jpg'
|
|
406
|
+
}),
|
|
407
|
+
...(tokenData.scope.includes('email') && {
|
|
408
|
+
email_verified: true
|
|
409
|
+
})
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Handles the OAuth2 token revocation request
|
|
414
|
+
* @param req Express Request object
|
|
415
|
+
* @param res Express Response object
|
|
416
|
+
*/
|
|
417
|
+
async handleTokenRevocation(req, res) {
|
|
418
|
+
try {
|
|
419
|
+
const { token, token_type_hint } = req.body;
|
|
420
|
+
if (!token) {
|
|
421
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
422
|
+
status: 400,
|
|
423
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HR0`,
|
|
424
|
+
addECToUserMsg: true,
|
|
425
|
+
message: 'Missing token',
|
|
426
|
+
userMessage: 'Invalid revocation request',
|
|
427
|
+
issuerService: this.serviceName,
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
// Try to revoke the token based on token_type_hint
|
|
431
|
+
let revoked = false;
|
|
432
|
+
if (!token_type_hint || token_type_hint === 'access_token') {
|
|
433
|
+
// Try to revoke as access token
|
|
434
|
+
if (this.accessTokens.delete(token)) {
|
|
435
|
+
revoked = true;
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
if (!revoked && (!token_type_hint || token_type_hint === 'refresh_token')) {
|
|
439
|
+
// Try to revoke as refresh token
|
|
440
|
+
const refreshTokenData = this.refreshTokens.get(token);
|
|
441
|
+
if (refreshTokenData) {
|
|
442
|
+
// Also revoke the associated access token
|
|
443
|
+
this.accessTokens.delete(refreshTokenData.accessToken);
|
|
444
|
+
this.refreshTokens.delete(token);
|
|
445
|
+
revoked = true;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
if (!revoked) {
|
|
449
|
+
// Token not found or already revoked
|
|
450
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
451
|
+
status: 400,
|
|
452
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-OA2-HR1`,
|
|
453
|
+
addECToUserMsg: true,
|
|
454
|
+
message: 'Token not found or already revoked',
|
|
455
|
+
userMessage: 'Invalid revocation request',
|
|
456
|
+
issuerService: this.serviceName,
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
res.status(200).send();
|
|
460
|
+
}
|
|
461
|
+
catch (error) {
|
|
462
|
+
fsm_dynamo_1.DyFM_Log.error('Token revocation failed', error);
|
|
463
|
+
throw error;
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Generates an authorization code
|
|
468
|
+
* @param clientId The client ID
|
|
469
|
+
* @param scope The requested scope
|
|
470
|
+
* @returns The generated authorization code
|
|
471
|
+
*/
|
|
472
|
+
async generateAuthorizationCode(clientId, scope) {
|
|
473
|
+
const code = (0, crypto_1.randomBytes)(32).toString('hex');
|
|
474
|
+
const expiresAt = Date.now() + 600000; // 10 minutes expiration
|
|
475
|
+
this.authorizationCodes.set(code, {
|
|
476
|
+
clientId,
|
|
477
|
+
scope,
|
|
478
|
+
expiresAt
|
|
479
|
+
});
|
|
480
|
+
return code;
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Generates an access token
|
|
484
|
+
* @param clientId The client ID
|
|
485
|
+
* @param scope The requested scope
|
|
486
|
+
* @returns The generated access token
|
|
487
|
+
*/
|
|
488
|
+
async generateAccessToken(clientId, scope) {
|
|
489
|
+
const token = (0, crypto_1.randomBytes)(32).toString('hex');
|
|
490
|
+
const expiresAt = Date.now() + 3600000; // 1 hour expiration
|
|
491
|
+
this.accessTokens.set(token, {
|
|
492
|
+
clientId,
|
|
493
|
+
scope,
|
|
494
|
+
expiresAt
|
|
495
|
+
});
|
|
496
|
+
return token;
|
|
497
|
+
}
|
|
498
|
+
/**
|
|
499
|
+
* Generates a refresh token
|
|
500
|
+
* @param clientId The client ID
|
|
501
|
+
* @returns The generated refresh token
|
|
502
|
+
*/
|
|
503
|
+
async generateRefreshToken(clientId) {
|
|
504
|
+
const token = (0, crypto_1.randomBytes)(32).toString('hex');
|
|
505
|
+
this.refreshTokens.set(token, {
|
|
506
|
+
clientId,
|
|
507
|
+
scope: '',
|
|
508
|
+
accessToken: ''
|
|
509
|
+
});
|
|
510
|
+
return token;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Gets the access token data
|
|
514
|
+
* @param token The access token
|
|
515
|
+
* @returns The access token data or undefined if not found
|
|
516
|
+
*/
|
|
517
|
+
getAccessTokenData(token) {
|
|
518
|
+
return this.accessTokens.get(token);
|
|
519
|
+
}
|
|
520
|
+
/**
|
|
521
|
+
* Registers a new OAuth2 client
|
|
522
|
+
* @param clientId The client ID
|
|
523
|
+
* @param clientSecret The client secret
|
|
524
|
+
* @param redirectUris The allowed redirect URIs
|
|
525
|
+
* @param allowedScopes The allowed scopes
|
|
526
|
+
* @returns true if the client was registered successfully
|
|
527
|
+
*/
|
|
528
|
+
registerClient(clientId, clientSecret, redirectUris, allowedScopes) {
|
|
529
|
+
if (this.clients.has(clientId)) {
|
|
530
|
+
return false;
|
|
531
|
+
}
|
|
532
|
+
this.clients.set(clientId, {
|
|
533
|
+
clientId,
|
|
534
|
+
clientSecret,
|
|
535
|
+
redirectUris,
|
|
536
|
+
allowedScopes,
|
|
537
|
+
isActive: true
|
|
538
|
+
});
|
|
539
|
+
return true;
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* Authenticates a user with username and password
|
|
543
|
+
* @param username The username
|
|
544
|
+
* @param password The password
|
|
545
|
+
* @returns The user's scopes if authentication is successful, undefined otherwise
|
|
546
|
+
*/
|
|
547
|
+
authenticateUser(username, password) {
|
|
548
|
+
const user = this.users.get(username);
|
|
549
|
+
if (!user || user.password !== password) { // In a real implementation, compare hashed passwords
|
|
550
|
+
return undefined;
|
|
551
|
+
}
|
|
552
|
+
return user.scopes;
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Registers a new user
|
|
556
|
+
* @param username The username
|
|
557
|
+
* @param password The password
|
|
558
|
+
* @param scopes The user's scopes
|
|
559
|
+
* @returns true if the user was registered successfully
|
|
560
|
+
*/
|
|
561
|
+
registerUser(username, password, scopes) {
|
|
562
|
+
if (this.users.has(username)) {
|
|
563
|
+
return false;
|
|
564
|
+
}
|
|
565
|
+
this.users.set(username, {
|
|
566
|
+
username,
|
|
567
|
+
password, // In a real implementation, hash the password
|
|
568
|
+
scopes
|
|
569
|
+
});
|
|
570
|
+
return true;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
exports.DyNTS_OAuth2_ControlService = DyNTS_OAuth2_ControlService;
|
|
574
|
+
//# sourceMappingURL=oauth2.control-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.control-service.js","sourceRoot":"","sources":["../../../../src/_modules/oauth2/_services/oauth2.control-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/_modules/oauth2/index.ts"],"names":[],"mappings":"AAGA,cAAc,6BAA6B,CAAC;AAE5C,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./_routes/oauth2.controller"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./_services/oauth2.auth-service"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./_services/oauth2.control-service"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/_modules/oauth2/index.ts"],"names":[],"mappings":";;;AAGA,sEAA4C;AAE5C,0EAAgD;AAChD,6EAAmD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare enum DyNTS_OpenAIModel {
|
|
2
|
+
gpt4o = "gpt-4o",
|
|
3
|
+
gpt4o_20240806 = "gpt-4o-2024-08-06",
|
|
4
|
+
gpt4o_20240513 = "gpt-4o-2024-05-13",
|
|
5
|
+
gpt4o_mini = "gpt-4o-mini",
|
|
6
|
+
gpt4o_mini20240718 = "gpt-4o-mini-2024-07-18",
|
|
7
|
+
textEmbedding_3Small = "text-embedding-3-small",
|
|
8
|
+
textEmbedding_3Large = "text-embedding-3-large",
|
|
9
|
+
textEmbedding_ada002 = "text-embedding-ada-002"
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=open-ai-model.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-ai-model.enum.d.ts","sourceRoot":"","sources":["../../../../src/_modules/open-ai/_enums/open-ai-model.enum.ts"],"names":[],"mappings":"AAKA,oBAAY,iBAAiB;IAW3B,KAAK,WAAW;IAEhB,cAAc,sBAAsB;IAEpC,cAAc,sBAAsB;IAYpC,UAAU,gBAAgB;IAE1B,kBAAkB,2BAA2B;IAwB7C,oBAAoB,2BAA2B;IAE/C,oBAAoB,2BAA2B;IAE/C,oBAAoB,2BAA2B;CAsEhD"}
|