@cicctencent/midwayjs-base 1.0.35 → 1.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +347 -1
- package/dist/types/config/config.default.d.ts +3 -0
- package/dist/types/config/config.default.js +171 -0
- package/dist/types/config/env.js +52 -0
- package/dist/{configuration.js → types/configuration.js} +44 -20
- package/dist/{filter → types/filter}/default.filter.js +1 -2
- package/dist/{filter → types/filter}/notfound.filter.js +1 -3
- package/dist/{guard → types/guard}/api.d.ts +0 -3
- package/dist/types/guard/api.js +77 -0
- package/dist/{guard → types/guard}/auth.d.ts +0 -3
- package/dist/types/guard/auth.js +182 -0
- package/dist/{index.js → types/index.js} +27 -6
- package/dist/types/lib/decorator.d.ts +6 -0
- package/dist/types/lib/decorator.js +48 -0
- package/dist/types/lib/jwt.d.ts +34 -0
- package/dist/types/lib/jwt.js +59 -0
- package/dist/{lib → types/lib}/request.d.ts +0 -5
- package/dist/{lib → types/lib}/request.js +1 -1
- package/dist/{lib → types/lib}/utils.d.ts +1 -7
- package/dist/types/lib/utils.js +78 -0
- package/dist/types/middleware/apiResultFormatter.d.ts +7 -0
- package/dist/types/middleware/apiResultFormatter.js +83 -0
- package/dist/types/middleware/detect.middleware.d.ts +4 -0
- package/dist/types/middleware/detect.middleware.js +58 -0
- package/dist/types/middleware/requestInit.d.ts +7 -0
- package/dist/types/middleware/requestInit.js +139 -0
- package/dist/types/service/session.service.d.ts +9 -0
- package/dist/types/service/session.service.js +56 -0
- package/dist/types/service/tencent.service.d.ts +37 -0
- package/dist/types/service/tencent.service.js +132 -0
- package/dist/types/{base.controller.js → types/base.controller.js} +1 -4
- package/dist/types/{base.model.service.d.ts → types/base.model.service.d.ts} +1 -9
- package/dist/types/types/base.model.service.js +76 -0
- package/dist/types/{base.service.d.ts → types/base.service.d.ts} +1 -10
- package/dist/types/types/base.service.js +70 -0
- package/dist/types/{session.service.interface.d.ts → types/session.service.interface.d.ts} +1 -15
- package/dist/types/{session.service.interface.js → types/session.service.interface.js} +1 -5
- package/package.json +4 -1
- package/dist/config/config.default.d.ts +0 -3
- package/dist/config/config.default.js +0 -160
- package/dist/config/env.js +0 -19
- package/dist/guard/api.js +0 -88
- package/dist/guard/auth.js +0 -202
- package/dist/lib/decorator.d.ts +0 -36
- package/dist/lib/decorator.js +0 -79
- package/dist/lib/jwt.d.ts +0 -135
- package/dist/lib/jwt.js +0 -38
- package/dist/lib/utils.js +0 -89
- package/dist/middleware/apiResultFormatter.d.ts +0 -8
- package/dist/middleware/apiResultFormatter.js +0 -84
- package/dist/middleware/detect.middleware.d.ts +0 -5
- package/dist/middleware/detect.middleware.js +0 -61
- package/dist/middleware/requestInit.d.ts +0 -8
- package/dist/middleware/requestInit.js +0 -100
- package/dist/service/session.service.d.ts +0 -33
- package/dist/service/session.service.js +0 -81
- package/dist/service/tencent.service.d.ts +0 -45
- package/dist/service/tencent.service.js +0 -105
- package/dist/types/base.model.service.js +0 -86
- package/dist/types/base.service.js +0 -86
- /package/dist/{config → types/config}/env.d.ts +0 -0
- /package/dist/{configuration.d.ts → types/configuration.d.ts} +0 -0
- /package/dist/{filter → types/filter}/default.filter.d.ts +0 -0
- /package/dist/{filter → types/filter}/notfound.filter.d.ts +0 -0
- /package/dist/{index.d.ts → types/index.d.ts} +0 -0
- /package/dist/types/{base.controller.d.ts → types/base.controller.d.ts} +0 -0
|
@@ -7,11 +7,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.NotFoundFilter = void 0;
|
|
10
|
-
// @ts-ignore
|
|
11
10
|
const core_1 = require("@midwayjs/core");
|
|
12
11
|
let NotFoundFilter = class NotFoundFilter {
|
|
13
12
|
async catch(err, ctx) {
|
|
14
|
-
// 404 错误会到这里
|
|
15
13
|
ctx.redirect('/404.html');
|
|
16
14
|
}
|
|
17
15
|
};
|
|
@@ -19,4 +17,4 @@ exports.NotFoundFilter = NotFoundFilter;
|
|
|
19
17
|
exports.NotFoundFilter = NotFoundFilter = __decorate([
|
|
20
18
|
(0, core_1.Catch)(core_1.httpError.NotFoundError)
|
|
21
19
|
], NotFoundFilter);
|
|
22
|
-
//# sourceMappingURL=
|
|
20
|
+
//# sourceMappingURL=notfound.filter.js.map
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ApiGuard = void 0;
|
|
16
|
+
const core_1 = require("@midwayjs/core");
|
|
17
|
+
const decorator_1 = require("../lib/decorator");
|
|
18
|
+
const api_1 = __importDefault(require("@fefeding/common/dist/utils/api"));
|
|
19
|
+
let ApiGuard = class ApiGuard {
|
|
20
|
+
async canActivate(context, supplierClz, methodName) {
|
|
21
|
+
const needIP = (0, decorator_1.getCheckIP)(supplierClz, methodName);
|
|
22
|
+
if (needIP) {
|
|
23
|
+
this.checkIPInWhiteList(context);
|
|
24
|
+
}
|
|
25
|
+
const needToken = (0, decorator_1.getApiToken)(supplierClz, methodName);
|
|
26
|
+
if (needToken) {
|
|
27
|
+
await this.checkApiToken(context);
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
async checkApiToken(context) {
|
|
32
|
+
const body = (context.request.body || {});
|
|
33
|
+
const reqToken = context.URL.searchParams.get('api_token') ||
|
|
34
|
+
context.request.header['x-api-token'] ||
|
|
35
|
+
body.api_token ||
|
|
36
|
+
context.cookies.get('api_token');
|
|
37
|
+
const timestamp = Number(context.URL.searchParams.get('timestamp') ||
|
|
38
|
+
context.request.header['x-api-timestamp'] ||
|
|
39
|
+
body.timestamp ||
|
|
40
|
+
context.cookies.get('timestamp'));
|
|
41
|
+
if (!reqToken || !timestamp) {
|
|
42
|
+
context.logger.error(`token为空,非法请求, token: ${reqToken}, timestamp: ${timestamp}`);
|
|
43
|
+
throw Error('token为空,非法请求');
|
|
44
|
+
}
|
|
45
|
+
console.log('token time', reqToken, timestamp);
|
|
46
|
+
if (timestamp < Date.now() - 5 * 60 * 1000) {
|
|
47
|
+
throw Error('timestamp已超过有效时间');
|
|
48
|
+
}
|
|
49
|
+
const thisToken = api_1.default.createApiToken(this.apiOption.key, timestamp);
|
|
50
|
+
if (reqToken !== thisToken.sign) {
|
|
51
|
+
context.logger.error(`输入token:${reqToken} 本地: ${thisToken.sign} 不一致`);
|
|
52
|
+
throw Error('token输入错误');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
checkIPInWhiteList(context) {
|
|
56
|
+
const requestIp = context.detect?.REQUESTIP;
|
|
57
|
+
if (this.ipOption?.whiteList && !this.ipOption.whiteList.includes('*')) {
|
|
58
|
+
if (!this.ipOption.whiteList.includes(requestIp)) {
|
|
59
|
+
context.logger.error(`IP:${requestIp} 不在白名单内`);
|
|
60
|
+
throw Error(`IP:${requestIp} 不在白名单内`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.ApiGuard = ApiGuard;
|
|
66
|
+
__decorate([
|
|
67
|
+
(0, core_1.Config)('apiOption'),
|
|
68
|
+
__metadata("design:type", Object)
|
|
69
|
+
], ApiGuard.prototype, "apiOption", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
(0, core_1.Config)('ipOption'),
|
|
72
|
+
__metadata("design:type", Object)
|
|
73
|
+
], ApiGuard.prototype, "ipOption", void 0);
|
|
74
|
+
exports.ApiGuard = ApiGuard = __decorate([
|
|
75
|
+
(0, core_1.Guard)()
|
|
76
|
+
], ApiGuard);
|
|
77
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { IGuard } from '@midwayjs/core';
|
|
2
2
|
import { Application, Context } from '@midwayjs/koa';
|
|
3
3
|
import { ISessionService } from '../types/session.service.interface';
|
|
4
|
-
/**
|
|
5
|
-
* 校验请求的登陆态
|
|
6
|
-
*/
|
|
7
4
|
export declare class AuthGuard implements IGuard<Context> {
|
|
8
5
|
protected app: Application;
|
|
9
6
|
sessionService: ISessionService;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AuthGuard = void 0;
|
|
13
|
+
const core_1 = require("@midwayjs/core");
|
|
14
|
+
const decorator_1 = require("../lib/decorator");
|
|
15
|
+
const utils_1 = require("../lib/utils");
|
|
16
|
+
const session_service_interface_1 = require("../types/session.service.interface");
|
|
17
|
+
let AuthGuard = class AuthGuard {
|
|
18
|
+
async init() {
|
|
19
|
+
const appContext = this.app.getApplicationContext();
|
|
20
|
+
console.log('init auth guard');
|
|
21
|
+
this.sessionService = await appContext.getAsync(session_service_interface_1.DEFAULT_SESSION_SERVICE_KEY);
|
|
22
|
+
if (this.sessionService?.sessionOption?.serviceKey &&
|
|
23
|
+
this.sessionService?.sessionOption.serviceKey !==
|
|
24
|
+
session_service_interface_1.DEFAULT_SESSION_SERVICE_KEY) {
|
|
25
|
+
const sessionServiceObj = await appContext.getAsync(this.sessionService.sessionOption.serviceKey);
|
|
26
|
+
if (sessionServiceObj) {
|
|
27
|
+
console.log('use custom session service for auth guard', this.sessionService.sessionOption.serviceKey);
|
|
28
|
+
this.sessionService = sessionServiceObj;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
checkNeedAuth(context, supplierClz, methodName) {
|
|
33
|
+
if (this.authOption?.ignores) {
|
|
34
|
+
if (this.authOption.ignores === '*' ||
|
|
35
|
+
this.authOption.ignores === context.path) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (Array.isArray(this.authOption.ignores)) {
|
|
39
|
+
if (this.authOption.ignores.includes('*'))
|
|
40
|
+
return false;
|
|
41
|
+
for (const t of this.authOption.ignores) {
|
|
42
|
+
if (t instanceof RegExp) {
|
|
43
|
+
if (t.test(context.path))
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
else if (typeof t === 'string') {
|
|
47
|
+
if (t === context.path)
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const needAuth = (0, decorator_1.getCheckLogin)(supplierClz, methodName);
|
|
54
|
+
return needAuth;
|
|
55
|
+
}
|
|
56
|
+
async canActivate(context, supplierClz, methodName) {
|
|
57
|
+
const needAuth = this.checkNeedAuth(context, supplierClz, methodName);
|
|
58
|
+
const token = (0, utils_1.getAuthToken)(context);
|
|
59
|
+
if (token)
|
|
60
|
+
context.auth_token = token;
|
|
61
|
+
const ret = await this.checkAuth(context, token, needAuth);
|
|
62
|
+
return ret;
|
|
63
|
+
}
|
|
64
|
+
async checkAuth(context, token, needAuth) {
|
|
65
|
+
this.sessionService.ctx = context;
|
|
66
|
+
const authRet = 50001;
|
|
67
|
+
let errRes = null;
|
|
68
|
+
try {
|
|
69
|
+
let session = null;
|
|
70
|
+
const authCode = context.URL.searchParams.get('auth_code');
|
|
71
|
+
if (authCode) {
|
|
72
|
+
session = await this.sessionService.loginByCode(authCode);
|
|
73
|
+
if (session) {
|
|
74
|
+
(0, utils_1.setAuthToken)(context, session.id);
|
|
75
|
+
}
|
|
76
|
+
context.URL.searchParams.delete('auth_code');
|
|
77
|
+
context.URL.hostname = context.detect?.HOSTNAME || context.hostname;
|
|
78
|
+
const url = context.URL.toString();
|
|
79
|
+
context.redirect(url);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
if (token && !errRes && !session) {
|
|
83
|
+
if (token.startsWith('Bearer ')) {
|
|
84
|
+
const jwtData = (0, utils_1.decodeJWT)(token.replace('Bearer ', ''), this.sessionService?.sessionOption?.secretKey || 'fefeding');
|
|
85
|
+
if (jwtData) {
|
|
86
|
+
session = jwtData;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
session = await this.sessionService.getLoginSession(token);
|
|
91
|
+
}
|
|
92
|
+
if (!session || !session.id) {
|
|
93
|
+
(0, utils_1.setAuthToken)(context, '');
|
|
94
|
+
errRes = {
|
|
95
|
+
ret: authRet,
|
|
96
|
+
msg: 'token不存在或已过期',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!session) {
|
|
101
|
+
errRes = {
|
|
102
|
+
ret: authRet,
|
|
103
|
+
msg: '需要登陆态',
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
context.currentSession = session;
|
|
107
|
+
if (session && context.logger?.setOptions) {
|
|
108
|
+
context.logger.setOptions({
|
|
109
|
+
loginId: session?.loginId || '',
|
|
110
|
+
userId: (session?.userId || '').toString(),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
errRes = {
|
|
116
|
+
ret: e?.ret || authRet,
|
|
117
|
+
msg: e?.msg || e?.message || 'auth error',
|
|
118
|
+
};
|
|
119
|
+
console.error(e);
|
|
120
|
+
}
|
|
121
|
+
if (errRes && needAuth) {
|
|
122
|
+
this.authError(context, errRes);
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
authError(context, error) {
|
|
127
|
+
const isApi = this.apiOption?.reg?.test(context.path);
|
|
128
|
+
if (isApi) {
|
|
129
|
+
context.status = 200;
|
|
130
|
+
context.res.write('', 'utf8');
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
const loginUrl = `${this.ssoOption?.baseUrl || this.koa?.globalPrefix || ''}/login`;
|
|
135
|
+
if (!/\/login\/?(\?|$|#)/.test(context.URL.pathname)) {
|
|
136
|
+
const URL = context.URL;
|
|
137
|
+
if (context.detect?.HOSTNAME &&
|
|
138
|
+
URL.hostname !== context.detect?.HOSTNAME)
|
|
139
|
+
URL.hostname = context.detect.HOSTNAME;
|
|
140
|
+
URL.searchParams.delete('jv_auth_code');
|
|
141
|
+
URL.searchParams.delete('token');
|
|
142
|
+
URL.searchParams.delete('auth_code');
|
|
143
|
+
const redirectUrl = context.URL.toString();
|
|
144
|
+
context.redirect(`${loginUrl}?url=${encodeURIComponent(redirectUrl)}&appid=${this.ssoOption?.appId || 0}`);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
context.redirect(loginUrl);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
exports.AuthGuard = AuthGuard;
|
|
153
|
+
__decorate([
|
|
154
|
+
(0, core_1.App)(),
|
|
155
|
+
__metadata("design:type", Object)
|
|
156
|
+
], AuthGuard.prototype, "app", void 0);
|
|
157
|
+
__decorate([
|
|
158
|
+
(0, core_1.Config)('sso'),
|
|
159
|
+
__metadata("design:type", Object)
|
|
160
|
+
], AuthGuard.prototype, "ssoOption", void 0);
|
|
161
|
+
__decorate([
|
|
162
|
+
(0, core_1.Config)('auth'),
|
|
163
|
+
__metadata("design:type", Object)
|
|
164
|
+
], AuthGuard.prototype, "authOption", void 0);
|
|
165
|
+
__decorate([
|
|
166
|
+
(0, core_1.Config)('apiOption'),
|
|
167
|
+
__metadata("design:type", Object)
|
|
168
|
+
], AuthGuard.prototype, "apiOption", void 0);
|
|
169
|
+
__decorate([
|
|
170
|
+
(0, core_1.Config)('koa'),
|
|
171
|
+
__metadata("design:type", Object)
|
|
172
|
+
], AuthGuard.prototype, "koa", void 0);
|
|
173
|
+
__decorate([
|
|
174
|
+
(0, core_1.Init)(),
|
|
175
|
+
__metadata("design:type", Function),
|
|
176
|
+
__metadata("design:paramtypes", []),
|
|
177
|
+
__metadata("design:returntype", Promise)
|
|
178
|
+
], AuthGuard.prototype, "init", null);
|
|
179
|
+
exports.AuthGuard = AuthGuard = __decorate([
|
|
180
|
+
(0, core_1.Guard)()
|
|
181
|
+
], AuthGuard);
|
|
182
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -10,18 +10,39 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
12
|
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
13
35
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
37
|
};
|
|
16
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
39
|
exports.BaseEntity = exports.decorators = exports.jwt = exports.utils = exports.Configuration = exports.koa = void 0;
|
|
18
|
-
|
|
19
|
-
exports.koa = require("@midwayjs/koa");
|
|
40
|
+
exports.koa = __importStar(require("@midwayjs/koa"));
|
|
20
41
|
var configuration_1 = require("./configuration");
|
|
21
42
|
Object.defineProperty(exports, "Configuration", { enumerable: true, get: function () { return configuration_1.BaseConfiguration; } });
|
|
22
|
-
exports.utils = require("./lib/utils");
|
|
23
|
-
exports.jwt = require("./lib/jwt");
|
|
24
|
-
exports.decorators = require("./lib/decorator");
|
|
43
|
+
exports.utils = __importStar(require("./lib/utils"));
|
|
44
|
+
exports.jwt = __importStar(require("./lib/jwt"));
|
|
45
|
+
exports.decorators = __importStar(require("./lib/decorator"));
|
|
25
46
|
__exportStar(require("@fefeding/common/dist/models/base/enumType"), exports);
|
|
26
47
|
var baseORM_1 = require("@fefeding/common/dist/models/base/baseORM");
|
|
27
48
|
Object.defineProperty(exports, "BaseEntity", { enumerable: true, get: function () { return baseORM_1.BaseORM; } });
|
|
@@ -36,4 +57,4 @@ __exportStar(require("./types/base.controller"), exports);
|
|
|
36
57
|
__exportStar(require("./types/session.service.interface"), exports);
|
|
37
58
|
__exportStar(require("./service/session.service"), exports);
|
|
38
59
|
__exportStar(require("./service/tencent.service"), exports);
|
|
39
|
-
//# sourceMappingURL=
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function checkApiToken(need?: boolean): MethodDecorator;
|
|
2
|
+
export declare function getApiToken(target: any, propertyKey: string | symbol): any;
|
|
3
|
+
export declare function checkLogin(need?: boolean): MethodDecorator;
|
|
4
|
+
export declare function getCheckLogin(target: any, propertyKey: string | symbol): any;
|
|
5
|
+
export declare function checkIP(need?: boolean): MethodDecorator;
|
|
6
|
+
export declare function getCheckIP(target: any, propertyKey: string | symbol): any;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.checkApiToken = checkApiToken;
|
|
7
|
+
exports.getApiToken = getApiToken;
|
|
8
|
+
exports.checkLogin = checkLogin;
|
|
9
|
+
exports.getCheckLogin = getCheckLogin;
|
|
10
|
+
exports.checkIP = checkIP;
|
|
11
|
+
exports.getCheckIP = getCheckIP;
|
|
12
|
+
const core_1 = require("@midwayjs/core");
|
|
13
|
+
const decorator_1 = __importDefault(require("@fefeding/common/dist/utils/decorator"));
|
|
14
|
+
const CheckIPKey = 'decorator:CheckIPKey';
|
|
15
|
+
function checkApiToken(need = true) {
|
|
16
|
+
return (target, propertyKey) => {
|
|
17
|
+
(0, core_1.savePropertyMetadata)(decorator_1.default.apiTokenMetadataKey, need, target, propertyKey);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function getApiToken(target, propertyKey) {
|
|
21
|
+
try {
|
|
22
|
+
const value = (0, core_1.getPropertyMetadata)(decorator_1.default.apiTokenMetadataKey, target, propertyKey);
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
console.log(e);
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function checkLogin(need = true) {
|
|
31
|
+
return (target, propertyKey) => {
|
|
32
|
+
(0, core_1.savePropertyMetadata)(decorator_1.default.apiAuthMetadataKey, need, target, propertyKey);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function getCheckLogin(target, propertyKey) {
|
|
36
|
+
const value = (0, core_1.getPropertyMetadata)(decorator_1.default.apiAuthMetadataKey, target, propertyKey);
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
function checkIP(need = true) {
|
|
40
|
+
return (target, propertyKey) => {
|
|
41
|
+
(0, core_1.savePropertyMetadata)(CheckIPKey, need, target, propertyKey);
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function getCheckIP(target, propertyKey) {
|
|
45
|
+
const value = (0, core_1.getPropertyMetadata)(CheckIPKey, target, propertyKey);
|
|
46
|
+
return value;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=decorator.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as jwt from 'jsonwebtoken';
|
|
2
|
+
export type Algorithm = 'HS256' | 'HS384' | 'HS512' | 'RS256' | 'RS384' | 'RS512' | 'ES256' | 'ES384' | 'ES512' | 'PS256' | 'PS384' | 'PS512';
|
|
3
|
+
export interface VerifyOptions {
|
|
4
|
+
algorithms?: Algorithm[];
|
|
5
|
+
audience?: string | RegExp | (string | RegExp)[];
|
|
6
|
+
complete?: boolean;
|
|
7
|
+
issuer?: string | string[];
|
|
8
|
+
jwtid?: string;
|
|
9
|
+
ignoreExpiration?: boolean;
|
|
10
|
+
ignoreNotBefore?: boolean;
|
|
11
|
+
subject?: string;
|
|
12
|
+
clockTolerance?: number;
|
|
13
|
+
maxAge?: number | string;
|
|
14
|
+
clockTimestamp?: number;
|
|
15
|
+
nonce?: string;
|
|
16
|
+
allowInvalidAsymmetricKeyTypes?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface SignOptions {
|
|
19
|
+
algorithm?: Algorithm;
|
|
20
|
+
expiresIn?: number | string;
|
|
21
|
+
notBefore?: number | string;
|
|
22
|
+
audience?: string | string[];
|
|
23
|
+
issuer?: string;
|
|
24
|
+
jwtid?: string;
|
|
25
|
+
subject?: string;
|
|
26
|
+
noTimestamp?: boolean;
|
|
27
|
+
header?: Record<string, any>;
|
|
28
|
+
keyid?: string;
|
|
29
|
+
mutatePayload?: boolean;
|
|
30
|
+
allowInsecureKeySizes?: boolean;
|
|
31
|
+
allowInvalidAsymmetricKeyTypes?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare function decodeJWT(token: string, secretKey: string, options?: VerifyOptions): jwt.Jwt | null;
|
|
34
|
+
export declare function encodeJWT(data: any, secretKey: string, options?: SignOptions): string;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.decodeJWT = decodeJWT;
|
|
37
|
+
exports.encodeJWT = encodeJWT;
|
|
38
|
+
const jwt = __importStar(require("jsonwebtoken"));
|
|
39
|
+
function decodeJWT(token, secretKey, options) {
|
|
40
|
+
try {
|
|
41
|
+
const decoded = jwt.verify(token, secretKey, {
|
|
42
|
+
algorithms: ['HS256'],
|
|
43
|
+
...(options || {}),
|
|
44
|
+
});
|
|
45
|
+
return decoded;
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
console.error('Token 验证失败:', err?.message);
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function encodeJWT(data, secretKey, options) {
|
|
53
|
+
const token = jwt.sign(data, secretKey, {
|
|
54
|
+
algorithm: 'HS256',
|
|
55
|
+
...(options || {}),
|
|
56
|
+
});
|
|
57
|
+
return token;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=jwt.js.map
|
|
@@ -4,4 +4,4 @@ exports.requestServer = exports.requestApi = void 0;
|
|
|
4
4
|
const axios_1 = require("@fefeding/common/dist/utils/axios");
|
|
5
5
|
Object.defineProperty(exports, "requestApi", { enumerable: true, get: function () { return axios_1.requestApi; } });
|
|
6
6
|
Object.defineProperty(exports, "requestServer", { enumerable: true, get: function () { return axios_1.requestServer; } });
|
|
7
|
-
//# sourceMappingURL=
|
|
7
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -3,13 +3,7 @@ import { CookieSetOptions, CookieGetOptions } from '@midwayjs/cookies';
|
|
|
3
3
|
export * from './jwt';
|
|
4
4
|
import { loadEnv } from '../config/env';
|
|
5
5
|
export declare function checkUrlHost(url: string, host: string | Array<string>): boolean;
|
|
6
|
-
/**
|
|
7
|
-
* render模板
|
|
8
|
-
* @param ctx
|
|
9
|
-
* @param file
|
|
10
|
-
* @returns
|
|
11
|
-
*/
|
|
12
6
|
export declare function getDefaultTemplate(ctx: Context, file?: string, data?: any): Promise<string>;
|
|
13
7
|
export declare function getAuthToken(ctx: Context, option?: CookieGetOptions): any;
|
|
14
8
|
export declare function setAuthToken(ctx: Context, token: string, option?: CookieSetOptions): void;
|
|
15
|
-
export { loadEnv
|
|
9
|
+
export { loadEnv };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.loadEnv = void 0;
|
|
18
|
+
exports.checkUrlHost = checkUrlHost;
|
|
19
|
+
exports.getDefaultTemplate = getDefaultTemplate;
|
|
20
|
+
exports.getAuthToken = getAuthToken;
|
|
21
|
+
exports.setAuthToken = setAuthToken;
|
|
22
|
+
__exportStar(require("./jwt"), exports);
|
|
23
|
+
const env_1 = require("../config/env");
|
|
24
|
+
Object.defineProperty(exports, "loadEnv", { enumerable: true, get: function () { return env_1.loadEnv; } });
|
|
25
|
+
function checkUrlHost(url, host) {
|
|
26
|
+
if (/^\/[^\/]{1,}/.test(url))
|
|
27
|
+
return true;
|
|
28
|
+
if (Array.isArray(host)) {
|
|
29
|
+
for (const h of host) {
|
|
30
|
+
if (checkUrlHost(url, h))
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const reg = new RegExp('^(http(s)?:)?//' + host);
|
|
36
|
+
return reg.test(url);
|
|
37
|
+
}
|
|
38
|
+
function getDefaultTemplate(ctx, file = 'index.html', data = {}) {
|
|
39
|
+
const viteTarget = process.env.VITE_PORT;
|
|
40
|
+
const config = ctx.app.getConfig();
|
|
41
|
+
const prefix = config.koa.globalPrefix;
|
|
42
|
+
const option = {
|
|
43
|
+
data: {
|
|
44
|
+
session: ctx.currentSession || null,
|
|
45
|
+
...data,
|
|
46
|
+
config: {
|
|
47
|
+
prefix,
|
|
48
|
+
...(data.config || {}),
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
title: data.title || '',
|
|
52
|
+
description: process.env.DESCRIPTION || '',
|
|
53
|
+
env: process.env,
|
|
54
|
+
prefix,
|
|
55
|
+
viteTarget: viteTarget ? `//${ctx.hostname}:${viteTarget}` : '',
|
|
56
|
+
};
|
|
57
|
+
return ctx.render(file, option);
|
|
58
|
+
}
|
|
59
|
+
function getAuthToken(ctx, option) {
|
|
60
|
+
const body = (ctx.request.body || {});
|
|
61
|
+
const token = ctx.URL.searchParams.get('token') ||
|
|
62
|
+
ctx.request.header['x-auth-token'] ||
|
|
63
|
+
ctx.cookies.get('token', {
|
|
64
|
+
signed: false,
|
|
65
|
+
...(option || {}),
|
|
66
|
+
}) ||
|
|
67
|
+
ctx.request.header['authorization'] ||
|
|
68
|
+
body.token;
|
|
69
|
+
return token;
|
|
70
|
+
}
|
|
71
|
+
function setAuthToken(ctx, token, option) {
|
|
72
|
+
ctx.cookies.set('token', token, {
|
|
73
|
+
httpOnly: true,
|
|
74
|
+
maxAge: 1000 * 60 * 60 * 24 * 30,
|
|
75
|
+
...(option || {}),
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IMiddleware, IMidwayContext } from '@midwayjs/core';
|
|
2
|
+
export declare class ApiResultFormatterMiddleware implements IMiddleware<IMidwayContext, any> {
|
|
3
|
+
apiOption: any;
|
|
4
|
+
ignore(ctx: IMidwayContext): boolean;
|
|
5
|
+
resolve(): (ctx: IMidwayContext, next: any) => Promise<void>;
|
|
6
|
+
canFormat(data: any): boolean;
|
|
7
|
+
}
|