sumor 3.0.0 → 3.0.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/dist/server/controllers/getAuthorizeUrlController.d.ts.map +1 -1
- package/dist/server/controllers/getAuthorizeUrlController.js +5 -4
- package/dist/server/controllers/getAuthorizeUrlController.js.map +1 -1
- package/dist/server/controllers/infoController.d.ts.map +1 -1
- package/dist/server/controllers/infoController.js +5 -4
- package/dist/server/controllers/infoController.js.map +1 -1
- package/dist/server/controllers/oauthCallbackController.d.ts.map +1 -1
- package/dist/server/controllers/oauthCallbackController.js +3 -2
- package/dist/server/controllers/oauthCallbackController.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -6
- package/dist/server/index.js.map +1 -1
- package/dist/server/models/tokenModel.d.ts.map +1 -1
- package/dist/server/models/tokenModel.js +4 -6
- package/dist/server/models/tokenModel.js.map +1 -1
- package/dist/server/services/oauthService.d.ts.map +1 -1
- package/dist/server/services/oauthService.js +25 -12
- package/dist/server/services/oauthService.js.map +1 -1
- package/dist/server/utils/config.d.ts +15 -2
- package/dist/server/utils/config.d.ts.map +1 -1
- package/dist/server/utils/config.js +23 -5
- package/dist/server/utils/config.js.map +1 -1
- package/dist/server/utils/http.d.ts +6 -2
- package/dist/server/utils/http.d.ts.map +1 -1
- package/dist/server/utils/http.js +17 -7
- package/dist/server/utils/http.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthorizeUrlController.d.ts","sourceRoot":"","sources":["../../../server/controllers/getAuthorizeUrlController.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"getAuthorizeUrlController.d.ts","sourceRoot":"","sources":["../../../server/controllers/getAuthorizeUrlController.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAgE3C,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,QAgB5E"}
|
|
@@ -11,7 +11,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.default = getAuthorizeUrlController;
|
|
13
13
|
const crypto_1 = __importDefault(require("crypto"));
|
|
14
|
-
const config_1 =
|
|
14
|
+
const config_1 = require("../utils/config");
|
|
15
15
|
/**
|
|
16
16
|
* 生成 PKCE code_challenge 和 code_verifier
|
|
17
17
|
*/
|
|
@@ -40,15 +40,16 @@ function generateState() {
|
|
|
40
40
|
* RFC 6749 §4.1.1,支持 PKCE(RFC 7636)用于增强安全性
|
|
41
41
|
*/
|
|
42
42
|
function generateAuthorizationUrl() {
|
|
43
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
43
44
|
const { codeChallenge, codeVerifier } = generateCodeChallenge();
|
|
44
|
-
const uri =
|
|
45
|
+
const uri = oauthConfig.redirectUri;
|
|
45
46
|
if (!uri || uri.trim() === '') {
|
|
46
47
|
throw new Error('redirectUri 为空或未配置,无法生成授权 URL');
|
|
47
48
|
}
|
|
48
49
|
const randomState = generateState();
|
|
49
50
|
const encryptedState = Buffer.from(codeVerifier).toString('base64') + ':' + randomState;
|
|
50
51
|
const params = new URLSearchParams({
|
|
51
|
-
clientKey:
|
|
52
|
+
clientKey: oauthConfig.clientKey,
|
|
52
53
|
redirectUri: uri,
|
|
53
54
|
responseType: 'code',
|
|
54
55
|
scope: 'profile',
|
|
@@ -56,7 +57,7 @@ function generateAuthorizationUrl() {
|
|
|
56
57
|
codeChallenge: codeChallenge,
|
|
57
58
|
codeChallengeMethod: 'S256'
|
|
58
59
|
});
|
|
59
|
-
const authUrl = `${
|
|
60
|
+
const authUrl = `${oauthConfig.baseUrl}/authorize?${params.toString()}`;
|
|
60
61
|
return authUrl;
|
|
61
62
|
}
|
|
62
63
|
function getAuthorizeUrlController(req, res) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAuthorizeUrlController.js","sourceRoot":"","sources":["../../../server/controllers/getAuthorizeUrlController.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;
|
|
1
|
+
{"version":3,"file":"getAuthorizeUrlController.js","sourceRoot":"","sources":["../../../server/controllers/getAuthorizeUrlController.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAmEH,4CAgBC;AAjFD,oDAA2B;AAE3B,4CAAgD;AAEhD;;GAEG;AACH,SAAS,qBAAqB;IAI5B,MAAM,YAAY,GAAG,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,gBAAM;SACrB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,QAAQ,CAAC;SAChB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEpB,OAAO;QACL,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,YAAY;KAC3B,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,OAAO,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB;IAC/B,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;IACpC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,qBAAqB,EAAE,CAAA;IAE/D,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAA;IAEnC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,EAAE,CAAA;IACnC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,WAAW,CAAA;IAEvF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,MAAM;QACpB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,cAAc;QACrB,aAAa,EAAE,aAAa;QAC5B,mBAAmB,EAAE,MAAM;KAC5B,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,GAAG,WAAW,CAAC,OAAO,cAAc,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAEvE,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAwB,yBAAyB,CAAC,GAAY,EAAE,GAAa;IAC3E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,wBAAwB,EAAE,CAAA;QAE1C,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,IAAI;YACV,IAAI,EAAE;gBACJ,OAAO;aACR;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infoController.d.ts","sourceRoot":"","sources":["../../../server/controllers/infoController.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"infoController.d.ts","sourceRoot":"","sources":["../../../server/controllers/infoController.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkEH;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAU,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,kBAc7D,CAAA"}
|
|
@@ -9,7 +9,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.getItsInfo = void 0;
|
|
11
11
|
const crypto_1 = __importDefault(require("crypto"));
|
|
12
|
-
const config_1 =
|
|
12
|
+
const config_1 = require("../utils/config");
|
|
13
13
|
/**
|
|
14
14
|
* 生成 PKCE code_challenge 和 code_verifier
|
|
15
15
|
*/
|
|
@@ -38,15 +38,16 @@ function generateState() {
|
|
|
38
38
|
* RFC 6749 §4.1.1,支持 PKCE(RFC 7636)用于增强安全性
|
|
39
39
|
*/
|
|
40
40
|
function generateAuthorizationUrl() {
|
|
41
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
41
42
|
const { codeChallenge, codeVerifier } = generateCodeChallenge();
|
|
42
|
-
const uri =
|
|
43
|
+
const uri = oauthConfig.redirectUri;
|
|
43
44
|
if (!uri || uri.trim() === '') {
|
|
44
45
|
throw new Error('redirectUri 为空或未配置,无法生成授权 URL');
|
|
45
46
|
}
|
|
46
47
|
const randomState = generateState();
|
|
47
48
|
const encryptedState = Buffer.from(codeVerifier).toString('base64') + ':' + randomState;
|
|
48
49
|
const params = new URLSearchParams({
|
|
49
|
-
clientKey:
|
|
50
|
+
clientKey: oauthConfig.clientKey,
|
|
50
51
|
redirectUri: uri,
|
|
51
52
|
responseType: 'code',
|
|
52
53
|
scope: 'profile',
|
|
@@ -54,7 +55,7 @@ function generateAuthorizationUrl() {
|
|
|
54
55
|
codeChallenge: codeChallenge,
|
|
55
56
|
codeChallengeMethod: 'S256'
|
|
56
57
|
});
|
|
57
|
-
const authUrl = `${
|
|
58
|
+
const authUrl = `${oauthConfig.baseUrl}/authorize?${params.toString()}`;
|
|
58
59
|
return authUrl;
|
|
59
60
|
}
|
|
60
61
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"infoController.js","sourceRoot":"","sources":["../../../server/controllers/infoController.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,oDAA2B;AAC3B,
|
|
1
|
+
{"version":3,"file":"infoController.js","sourceRoot":"","sources":["../../../server/controllers/infoController.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,oDAA2B;AAC3B,4CAAgD;AAEhD;;GAEG;AACH,SAAS,qBAAqB;IAI5B,MAAM,YAAY,GAAG,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,SAAS,GAAG,gBAAM;SACrB,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,QAAQ,CAAC;SAChB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEpB,OAAO;QACL,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,YAAY;KAC3B,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,OAAO,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAC/C,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB;IAC/B,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;IACpC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,qBAAqB,EAAE,CAAA;IAE/D,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAA;IAEnC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAED,MAAM,WAAW,GAAG,aAAa,EAAE,CAAA;IACnC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,WAAW,CAAA;IAEvF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;QACjC,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,MAAM;QACpB,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,cAAc;QACrB,aAAa,EAAE,aAAa;QAC5B,mBAAmB,EAAE,MAAM;KAC5B,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,GAAG,WAAW,CAAC,OAAO,cAAc,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;IAEvE,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;GAKG;AACI,MAAM,UAAU,GAAG,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,wBAAwB,EAAE,CAAA;QAEpD,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,IAAI;YACV,IAAI,EAAE;gBACJ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ;gBAClC,YAAY,EAAE,iBAAiB;aAChC;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAdY,QAAA,UAAU,cActB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthCallbackController.d.ts","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"oauthCallbackController.d.ts","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAsD3C,wBAA8B,uBAAuB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,iBAsEhF"}
|
|
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.default = oauthCallbackController;
|
|
13
13
|
const oauthService_1 = __importDefault(require("../services/oauthService"));
|
|
14
14
|
const tokenModel_1 = require("../models/tokenModel");
|
|
15
|
-
const config_1 =
|
|
15
|
+
const config_1 = require("../utils/config");
|
|
16
16
|
const oauthTokenUtils_1 = require("../utils/oauthTokenUtils");
|
|
17
17
|
/**
|
|
18
18
|
* 用授权码交换 Token
|
|
@@ -22,7 +22,8 @@ async function exchangeCodeForToken(code, codeVerifier) {
|
|
|
22
22
|
// 使用传入的 codeVerifier
|
|
23
23
|
const verifier = codeVerifier || '';
|
|
24
24
|
// 使用配置中的 redirectUri
|
|
25
|
-
const
|
|
25
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
26
|
+
const uri = oauthConfig.redirectUri;
|
|
26
27
|
const oauthService = new oauthService_1.default();
|
|
27
28
|
const data = await oauthService.exchangeCode('authorization_code', code, uri, verifier);
|
|
28
29
|
// 验证响应数据的完整性
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;
|
|
1
|
+
{"version":3,"file":"oauthCallbackController.js","sourceRoot":"","sources":["../../../server/controllers/oauthCallbackController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKjC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAiBrD;;;;;;GAMG;AACH,wBAA8B,UAAU,CACtC,GAAG,EAAE,OAAO,EACZ,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
package/dist/server/index.js
CHANGED
|
@@ -11,6 +11,7 @@ exports.default = setupSumor;
|
|
|
11
11
|
const oauthService_1 = __importDefault(require("./services/oauthService"));
|
|
12
12
|
const routes_1 = __importDefault(require("./routes"));
|
|
13
13
|
const loadJwtUserMiddleware_1 = require("./middlewares/loadJwtUserMiddleware");
|
|
14
|
+
const config_1 = require("./utils/config");
|
|
14
15
|
/**
|
|
15
16
|
* 初始化 Sumor OAuth 权限同步
|
|
16
17
|
* 将 client 的权限定义同步到 Sumor
|
|
@@ -34,19 +35,19 @@ async function initializeOAuthPermissions(permissionConfig) {
|
|
|
34
35
|
*/
|
|
35
36
|
async function setupSumor(app, permissionConfig) {
|
|
36
37
|
try {
|
|
37
|
-
// 0.
|
|
38
|
-
;
|
|
38
|
+
// 0. 初始化 OAuth 配置(验证环境变量)
|
|
39
|
+
(0, config_1.initializeOAuthConfig)();
|
|
39
40
|
app.sumor = new oauthService_1.default();
|
|
40
|
-
//
|
|
41
|
+
// 2. 初始化 OAuth 权限同步
|
|
41
42
|
await initializeOAuthPermissions(permissionConfig);
|
|
42
|
-
//
|
|
43
|
+
// 3. 注册 JWT 用户加载中间件
|
|
43
44
|
app.use('/api', loadJwtUserMiddleware_1.loadJwtUserMiddleware);
|
|
44
|
-
//
|
|
45
|
+
// 3.5. 在 /api 路由上注册 req.sumor 挂载中间件
|
|
45
46
|
app.use('/api', (req, res, next) => {
|
|
46
47
|
req.sumor = app.sumor;
|
|
47
48
|
next();
|
|
48
49
|
});
|
|
49
|
-
//
|
|
50
|
+
// 4. 注册 OAuth 路由
|
|
50
51
|
app.use('/api/oauth', routes_1.default);
|
|
51
52
|
}
|
|
52
53
|
catch (error) {
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AA+BH,6BA4BC;AAxDD,2EAAkD;AAClD,sDAAkC;AAClC,+EAA2E;AAC3E,2CAAsD;AAGtD;;;GAGG;AACH,KAAK,UAAU,0BAA0B,CAAC,gBAAkC;IAC1E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,sBAAY,EAAE,CAAA;QAEvC,iBAAiB;QACjB,MAAO,YAAoB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IACjE,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACY,KAAK,UAAU,UAAU,CACtC,GAAY,EACZ,gBAAkC;IAElC,IAAI,CAAC;QACH,0BAA0B;QAC1B,IAAA,8BAAqB,GAAE,CAGtB;QAAC,GAAW,CAAC,KAAK,GAAG,IAAI,sBAAY,EAAE,CAAA;QAExC,oBAAoB;QACpB,MAAM,0BAA0B,CAAC,gBAAgB,CAAC,CAAA;QAElD,oBAAoB;QACpB,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,6CAAqB,CAAC,CAAA;QAEtC,oCAAoC;QACpC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACtC,GAAG,CAAC,KAAK,GAAI,GAAW,CAAC,KAAK,CAAA;YAC9B,IAAI,EAAE,CAAA;QACR,CAAC,CAAC,CAAA;QAEF,iBAAiB;QACjB,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAW,CAAC,CAAA;IACpC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenModel.d.ts","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tokenModel.d.ts","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAElD;;;GAGG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;CAgCnD;AAKD;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAM1C;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAGtE"}
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
* Token 模型
|
|
4
4
|
* 支持 Token 验证和解析(使用本地缓存的公钥)
|
|
5
5
|
*/
|
|
6
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
-
};
|
|
9
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
7
|
exports.TokenModel = void 0;
|
|
11
8
|
exports.getTokenModel = getTokenModel;
|
|
@@ -13,7 +10,7 @@ exports.verifyToken = verifyToken;
|
|
|
13
10
|
const jsonwebtoken_1 = require("jsonwebtoken");
|
|
14
11
|
const jwksModel_1 = require("./jwksModel");
|
|
15
12
|
const blacklistModel_1 = require("./blacklistModel");
|
|
16
|
-
const config_1 =
|
|
13
|
+
const config_1 = require("../utils/config");
|
|
17
14
|
/**
|
|
18
15
|
* Token 模型类
|
|
19
16
|
* 用于验证和解析 OAuth Token
|
|
@@ -38,8 +35,9 @@ class TokenModel {
|
|
|
38
35
|
// 2. 验证 Token 签名(本地验证,无网络延迟)
|
|
39
36
|
// issuer: ITS 的域名(不含协议和端口)
|
|
40
37
|
// audience: client 的域名(不含协议和端口)
|
|
41
|
-
const
|
|
42
|
-
const
|
|
38
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
39
|
+
const itsIssuer = new URL(oauthConfig.itsEndpoint).hostname;
|
|
40
|
+
const expectedAudience = new URL(oauthConfig.redirectUri).hostname;
|
|
43
41
|
const payload = (0, jsonwebtoken_1.verify)(token, publicKey, {
|
|
44
42
|
algorithms: ['RS256'],
|
|
45
43
|
issuer: itsIssuer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenModel.js","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":";AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"tokenModel.js","sourceRoot":"","sources":["../../../server/models/tokenModel.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkEH,sCAMC;AAOD,kCAGC;AAhFD,+CAAqC;AACrC,2CAA0C;AAC1C,qDAAoD;AACpD,4CAAgD;AAGhD;;;GAGG;AACH,MAAa,UAAU;IACrB;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,gCAAgC;QAChC,MAAM,SAAS,GAAG,MAAM,IAAA,wBAAY,GAAE,CAAA;QAEtC,6BAA6B;QAC7B,2BAA2B;QAC3B,gCAAgC;QAChC,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;QACpC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAA;QAC3D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAA;QAElE,MAAM,OAAO,GAAG,IAAA,qBAAM,EAAC,KAAK,EAAE,SAAS,EAAE;YACvC,UAAU,EAAE,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,gBAAgB;SAC3B,CAAiB,CAAA;QAElB,iCAAiC;QACjC,yBAAyB;QACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,mCAAmC;YACnC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,kCAAiB,GAAE,CAAA;QAC1C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC5E,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AA9CD,gCA8CC;AAED,KAAK;AACL,IAAI,kBAAkB,GAAsB,IAAI,CAAA;AAEhD;;GAEG;AACH,SAAgB,aAAa;IAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,kBAAkB,GAAG,IAAI,UAAU,EAAE,CAAA;IACvC,CAAC;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,WAAW,CAAC,KAAa;IAC7C,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthService.d.ts","sourceRoot":"","sources":["../../../server/services/oauthService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,gBAAgB,CAAA;AAEvB;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAEjC,IAAI,EAAE,MAAM;IAEZ,OAAO,CAAC,EAAE,GAAG;gBAFb,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,GAAG;CAKvB;AAED;;;GAGG;AACH,qBAAa,YAAY;;IAGvB;;;;;;;;;;OAUG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"oauthService.d.ts","sourceRoot":"","sources":["../../../server/services/oauthService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAChC,MAAM,gBAAgB,CAAA;AAEvB;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAEjC,IAAI,EAAE,MAAM;IAEZ,OAAO,CAAC,EAAE,GAAG;gBAFb,IAAI,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,GAAG;CAKvB;AAED;;;GAGG;AACH,qBAAa,YAAY;;IAGvB;;;;;;;;;;OAUG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC;IAoB1B;;;;;;OAMG;IACG,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC;IAavC;;;;;;;OAOG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAazE;;;;;;OAMG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD;;;;;;;OAOG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAoBvE;;;;;;OAMG;IACG,iBAAiB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAoBzC;;;;;;;;;OASG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,0BAA0B,CAAC;IAuBtC;;;;;;;;;OASG;IACG,sBAAsB,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,EACvC,OAAO,EAAE,MAAM,EAAE,EACjB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,+BAA+B,CAAC;IAuB3C;;;;;;;OAOG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAgB/C;;;;;;;OAOG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;IA+B9D;;;;;;;;OAQG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAuBzE;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC;IAapC;;;;;;;;;OASG;IACG,iBAAiB,CAAC,iBAAiB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAY9D;AAKD;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAO,YAOnC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,YAAY,GAAG,IAEjD,CAAA;AAED,eAAe,YAAY,CAAA"}
|
|
@@ -42,7 +42,8 @@ class OAuthService {
|
|
|
42
42
|
*/
|
|
43
43
|
async exchangeCode(grantType, code, redirectUri, codeVerifier) {
|
|
44
44
|
try {
|
|
45
|
-
const
|
|
45
|
+
const httpClient = (0, http_1.default)();
|
|
46
|
+
const response = await httpClient.post('/token', {
|
|
46
47
|
code,
|
|
47
48
|
redirectUri
|
|
48
49
|
});
|
|
@@ -65,7 +66,8 @@ class OAuthService {
|
|
|
65
66
|
*/
|
|
66
67
|
async getJWKS() {
|
|
67
68
|
try {
|
|
68
|
-
const
|
|
69
|
+
const httpClient = (0, http_1.default)();
|
|
70
|
+
const response = await httpClient.get('/jwks');
|
|
69
71
|
return response.data;
|
|
70
72
|
}
|
|
71
73
|
catch (error) {
|
|
@@ -83,7 +85,8 @@ class OAuthService {
|
|
|
83
85
|
*/
|
|
84
86
|
async checkBlacklist(sessionId) {
|
|
85
87
|
try {
|
|
86
|
-
const
|
|
88
|
+
const httpClient = (0, http_1.default)();
|
|
89
|
+
const response = await httpClient.get(`/sessions/${sessionId}/blacklist`);
|
|
87
90
|
return response.data;
|
|
88
91
|
}
|
|
89
92
|
catch (error) {
|
|
@@ -100,7 +103,8 @@ class OAuthService {
|
|
|
100
103
|
*/
|
|
101
104
|
async revokeSession(sessionId) {
|
|
102
105
|
try {
|
|
103
|
-
|
|
106
|
+
const httpClient = (0, http_1.default)();
|
|
107
|
+
await httpClient.post('/logout', {
|
|
104
108
|
sessionId
|
|
105
109
|
});
|
|
106
110
|
}
|
|
@@ -119,7 +123,8 @@ class OAuthService {
|
|
|
119
123
|
*/
|
|
120
124
|
async refreshAccessToken(refreshToken) {
|
|
121
125
|
try {
|
|
122
|
-
const
|
|
126
|
+
const httpClient = (0, http_1.default)();
|
|
127
|
+
const response = await httpClient.put('/token', {
|
|
123
128
|
refreshToken
|
|
124
129
|
});
|
|
125
130
|
// ITS API PUT /token 返回格式与 POST 一致:
|
|
@@ -142,7 +147,8 @@ class OAuthService {
|
|
|
142
147
|
*/
|
|
143
148
|
async getSuperUsersList() {
|
|
144
149
|
try {
|
|
145
|
-
const
|
|
150
|
+
const httpClient = (0, http_1.default)();
|
|
151
|
+
const response = await httpClient.get('/users', {
|
|
146
152
|
params: {
|
|
147
153
|
roleLevel: '>=100',
|
|
148
154
|
limit: 1000
|
|
@@ -176,7 +182,8 @@ class OAuthService {
|
|
|
176
182
|
if (url) {
|
|
177
183
|
payload.url = url;
|
|
178
184
|
}
|
|
179
|
-
const
|
|
185
|
+
const httpClient = (0, http_1.default)();
|
|
186
|
+
const response = await httpClient.post('/message/wechat', payload);
|
|
180
187
|
return response.data;
|
|
181
188
|
}
|
|
182
189
|
catch (error) {
|
|
@@ -204,7 +211,8 @@ class OAuthService {
|
|
|
204
211
|
if (url) {
|
|
205
212
|
payload.url = url;
|
|
206
213
|
}
|
|
207
|
-
const
|
|
214
|
+
const httpClient = (0, http_1.default)();
|
|
215
|
+
const response = await httpClient.post('/message/wechat/broadcast', payload);
|
|
208
216
|
return response.data;
|
|
209
217
|
}
|
|
210
218
|
catch (error) {
|
|
@@ -225,7 +233,8 @@ class OAuthService {
|
|
|
225
233
|
if (!userId) {
|
|
226
234
|
return null;
|
|
227
235
|
}
|
|
228
|
-
const
|
|
236
|
+
const httpClient = (0, http_1.default)();
|
|
237
|
+
const response = await httpClient.get(`/users/${userId}`);
|
|
229
238
|
const user = response.data?.data || null;
|
|
230
239
|
return user;
|
|
231
240
|
}
|
|
@@ -249,6 +258,7 @@ class OAuthService {
|
|
|
249
258
|
// 去重并过滤空值
|
|
250
259
|
const uniqueIds = [...new Set(userIds.filter(Boolean))];
|
|
251
260
|
// 并行请求所有用户
|
|
261
|
+
const httpClient = (0, http_1.default)();
|
|
252
262
|
const promises = uniqueIds.map(userId => this.getUserInfo(userId).catch(() => null));
|
|
253
263
|
const results = await Promise.all(promises);
|
|
254
264
|
// 构建 userId -> user 的 Map
|
|
@@ -279,7 +289,8 @@ class OAuthService {
|
|
|
279
289
|
if (!searchTerm || searchTerm.trim() === '') {
|
|
280
290
|
return [];
|
|
281
291
|
}
|
|
282
|
-
const
|
|
292
|
+
const httpClient = (0, http_1.default)();
|
|
293
|
+
const response = await httpClient.get('/users', {
|
|
283
294
|
params: {
|
|
284
295
|
term: searchTerm.trim(),
|
|
285
296
|
limit: Math.min(limit, 100),
|
|
@@ -302,7 +313,8 @@ class OAuthService {
|
|
|
302
313
|
*/
|
|
303
314
|
async getPermissions() {
|
|
304
315
|
try {
|
|
305
|
-
const
|
|
316
|
+
const httpClient = (0, http_1.default)();
|
|
317
|
+
const response = await httpClient.get('/permissions');
|
|
306
318
|
return response.data;
|
|
307
319
|
}
|
|
308
320
|
catch (error) {
|
|
@@ -322,7 +334,8 @@ class OAuthService {
|
|
|
322
334
|
*/
|
|
323
335
|
async updatePermissions(permissionsConfig) {
|
|
324
336
|
try {
|
|
325
|
-
const
|
|
337
|
+
const httpClient = (0, http_1.default)();
|
|
338
|
+
const response = await httpClient.put('/permissions', { ...permissionsConfig });
|
|
326
339
|
return response.data;
|
|
327
340
|
}
|
|
328
341
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthService.js","sourceRoot":"","sources":["../../../server/services/oauthService.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"oauthService.js","sourceRoot":"","sources":["../../../server/services/oauthService.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
* 从环境变量读取配置
|
|
4
4
|
*/
|
|
5
5
|
import type { OAuthConfig } from '../types/oauth';
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* 初始化 OAuth 配置
|
|
8
|
+
* 验证环境变量并创建配置对象
|
|
9
|
+
* 必须在应用启动时调用,且要在 dotenv 加载之后
|
|
10
|
+
*
|
|
11
|
+
* @throws 当缺少必需的环境变量时抛出错误
|
|
12
|
+
*/
|
|
13
|
+
export declare function initializeOAuthConfig(): void;
|
|
14
|
+
/**
|
|
15
|
+
* 获取 OAuth 配置
|
|
16
|
+
* 必须在 initializeOAuthConfig 调用后使用
|
|
17
|
+
*
|
|
18
|
+
* @throws 当未调用 initializeOAuthConfig 时抛出错误
|
|
19
|
+
*/
|
|
20
|
+
export declare function getOAuthConfig(): OAuthConfig;
|
|
8
21
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAejD;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CA2B5C;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAK5C"}
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
* 从环境变量读取配置
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.initializeOAuthConfig = initializeOAuthConfig;
|
|
8
|
+
exports.getOAuthConfig = getOAuthConfig;
|
|
7
9
|
/**
|
|
8
10
|
* 构建完整的 OAuth API 基础 URL
|
|
9
11
|
* 将 OAUTH_ENDPOINT 补全为 {endpoint}/api/oauth 的格式
|
|
@@ -13,10 +15,16 @@ function buildBaseUrl(endpoint) {
|
|
|
13
15
|
? endpoint
|
|
14
16
|
: `${endpoint.endsWith('/api') ? endpoint : `${endpoint}/api`}/oauth`;
|
|
15
17
|
}
|
|
18
|
+
// 缓存的配置对象
|
|
19
|
+
let oauthConfig = null;
|
|
16
20
|
/**
|
|
17
|
-
*
|
|
21
|
+
* 初始化 OAuth 配置
|
|
22
|
+
* 验证环境变量并创建配置对象
|
|
23
|
+
* 必须在应用启动时调用,且要在 dotenv 加载之后
|
|
24
|
+
*
|
|
25
|
+
* @throws 当缺少必需的环境变量时抛出错误
|
|
18
26
|
*/
|
|
19
|
-
function
|
|
27
|
+
function initializeOAuthConfig() {
|
|
20
28
|
const itsEndpoint = process.env.OAUTH_ENDPOINT;
|
|
21
29
|
const itsClientId = process.env.OAUTH_CLIENT_KEY;
|
|
22
30
|
const itsClientSecret = process.env.OAUTH_CLIENT_SECRET;
|
|
@@ -31,7 +39,7 @@ function createOAuthConfig() {
|
|
|
31
39
|
if (!itsClientCallback) {
|
|
32
40
|
throw new Error('缺少 OAUTH_REDIRECT_URI 环境变量配置(回调地址)');
|
|
33
41
|
}
|
|
34
|
-
|
|
42
|
+
oauthConfig = {
|
|
35
43
|
endpoint: itsEndpoint,
|
|
36
44
|
baseUrl: buildBaseUrl(itsEndpoint),
|
|
37
45
|
clientKey: itsClientId,
|
|
@@ -40,6 +48,16 @@ function createOAuthConfig() {
|
|
|
40
48
|
itsEndpoint: itsEndpoint
|
|
41
49
|
};
|
|
42
50
|
}
|
|
43
|
-
|
|
44
|
-
|
|
51
|
+
/**
|
|
52
|
+
* 获取 OAuth 配置
|
|
53
|
+
* 必须在 initializeOAuthConfig 调用后使用
|
|
54
|
+
*
|
|
55
|
+
* @throws 当未调用 initializeOAuthConfig 时抛出错误
|
|
56
|
+
*/
|
|
57
|
+
function getOAuthConfig() {
|
|
58
|
+
if (!oauthConfig) {
|
|
59
|
+
throw new Error('OAuth 配置未初始化,请先调用 initializeOAuthConfig()');
|
|
60
|
+
}
|
|
61
|
+
return oauthConfig;
|
|
62
|
+
}
|
|
45
63
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../server/utils/config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAwBH,sDA2BC;AAQD,wCAKC;AA5DD;;;GAGG;AACH,SAAS,YAAY,CAAC,QAAgB;IACpC,OAAO,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;QACpC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,MAAM,QAAQ,CAAA;AACzE,CAAC;AAED,UAAU;AACV,IAAI,WAAW,GAAuB,IAAI,CAAA;AAE1C;;;;;;GAMG;AACH,SAAgB,qBAAqB;IACnC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;IAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAA;IAChD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAA;IACvD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IAExD,YAAY;IACZ,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,WAAW,GAAG;QACZ,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,YAAY,CAAC,WAAW,CAAC;QAClC,SAAS,EAAE,WAAW;QACtB,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,iBAAiB;QAC9B,WAAW,EAAE,WAAW;KACzB,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,cAAc;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
|
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
* - Authorization header: Basic Auth (client_key:client_secret)
|
|
7
7
|
*/
|
|
8
8
|
import { AxiosInstance } from 'axios';
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
/**
|
|
10
|
+
* 获取 HTTP 客户端实例
|
|
11
|
+
* 延迟初始化,确保配置已加载
|
|
12
|
+
*/
|
|
13
|
+
declare function getHttpClient(): AxiosInstance;
|
|
14
|
+
export default getHttpClient;
|
|
11
15
|
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AA+B5C;;;GAGG;AACH,iBAAS,aAAa,IAAI,aAAa,CAKtC;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -11,7 +11,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
const axios_1 = __importDefault(require("axios"));
|
|
14
|
-
const config_1 =
|
|
14
|
+
const config_1 = require("./config");
|
|
15
|
+
let httpClient = null;
|
|
15
16
|
/**
|
|
16
17
|
* 创建 OAuth HTTP 客户端实例
|
|
17
18
|
*
|
|
@@ -19,19 +20,28 @@ const config_1 = __importDefault(require("./config"));
|
|
|
19
20
|
* @throws 当环境变量缺失时抛出错误
|
|
20
21
|
*/
|
|
21
22
|
function createOAuthHttpClient() {
|
|
23
|
+
const oauthConfig = (0, config_1.getOAuthConfig)();
|
|
22
24
|
// 生成 Basic Auth header
|
|
23
|
-
const authHeader = Buffer.from(`${
|
|
25
|
+
const authHeader = Buffer.from(`${oauthConfig.clientKey}:${oauthConfig.clientSecret}`).toString('base64');
|
|
24
26
|
// 创建 axios 实例
|
|
25
|
-
const
|
|
26
|
-
baseURL:
|
|
27
|
+
const client = axios_1.default.create({
|
|
28
|
+
baseURL: oauthConfig.baseUrl,
|
|
27
29
|
timeout: 10000,
|
|
28
30
|
headers: {
|
|
29
31
|
Authorization: `Basic ${authHeader}`
|
|
30
32
|
}
|
|
31
33
|
});
|
|
34
|
+
return client;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 获取 HTTP 客户端实例
|
|
38
|
+
* 延迟初始化,确保配置已加载
|
|
39
|
+
*/
|
|
40
|
+
function getHttpClient() {
|
|
41
|
+
if (!httpClient) {
|
|
42
|
+
httpClient = createOAuthHttpClient();
|
|
43
|
+
}
|
|
32
44
|
return httpClient;
|
|
33
45
|
}
|
|
34
|
-
|
|
35
|
-
const httpClient = createOAuthHttpClient();
|
|
36
|
-
exports.default = httpClient;
|
|
46
|
+
exports.default = getHttpClient;
|
|
37
47
|
//# sourceMappingURL=http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,kDAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../server/utils/http.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,kDAA4C;AAC5C,qCAAyC;AAEzC,IAAI,UAAU,GAAyB,IAAI,CAAA;AAE3C;;;;;GAKG;AACH,SAAS,qBAAqB;IAC5B,MAAM,WAAW,GAAG,IAAA,uBAAc,GAAE,CAAA;IAEpC,uBAAuB;IACvB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAC7F,QAAQ,CACT,CAAA;IAED,cAAc;IACd,MAAM,MAAM,GAAG,eAAK,CAAC,MAAM,CAAC;QAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,OAAO,EAAE,KAAK;QACd,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,UAAU,EAAE;SACrC;KACF,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa;IACpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,UAAU,GAAG,qBAAqB,EAAE,CAAA;IACtC,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,kBAAe,aAAa,CAAA"}
|