mirror of
https://github.com/cool-team-official/cool-admin-midway.git
synced 2025-12-14 19:22:50 +00:00
5.x
This commit is contained in:
parent
ca038a4141
commit
7b9affde5c
@ -6,7 +6,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cool-midway/core": "^5.0.6",
|
"@cool-midway/core": "^5.0.6",
|
||||||
"@cool-midway/es": "^5.0.2",
|
"@cool-midway/es": "^5.0.2",
|
||||||
"@cool-midway/file": "^5.0.2",
|
"@cool-midway/file": "^5.0.3",
|
||||||
"@cool-midway/pay": "^5.0.0",
|
"@cool-midway/pay": "^5.0.0",
|
||||||
"@cool-midway/rpc": "^5.0.1",
|
"@cool-midway/rpc": "^5.0.1",
|
||||||
"@cool-midway/task": "^5.0.1",
|
"@cool-midway/task": "^5.0.1",
|
||||||
@ -21,6 +21,7 @@
|
|||||||
"@midwayjs/static-file": "^3.2.0",
|
"@midwayjs/static-file": "^3.2.0",
|
||||||
"@midwayjs/validate": "^3.2.0",
|
"@midwayjs/validate": "^3.2.0",
|
||||||
"@midwayjs/view-ejs": "^3.2.0",
|
"@midwayjs/view-ejs": "^3.2.0",
|
||||||
|
"cfork": "^1.8.0",
|
||||||
"ipip-ipdb": "^0.6.0",
|
"ipip-ipdb": "^0.6.0",
|
||||||
"jsonwebtoken": "^8.5.1",
|
"jsonwebtoken": "^8.5.1",
|
||||||
"mini-svg-data-uri": "^1.4.4",
|
"mini-svg-data-uri": "^1.4.4",
|
||||||
@ -45,7 +46,8 @@
|
|||||||
"node": ">=12.0.0"
|
"node": ">=12.0.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "NODE_ENV=prod node ./bootstrap.js",
|
"start_single": "NODE_ENV=prod node ./bootstrap.js",
|
||||||
|
"start": "NODE_ENV=prod node ./server.js",
|
||||||
"dev": "cross-env && cross-env NODE_ENV=local TS_NODE_TYPE_CHECK=false TS_NODE_TRANSPILE_ONLY=true midway-bin dev --ts",
|
"dev": "cross-env && cross-env NODE_ENV=local TS_NODE_TYPE_CHECK=false TS_NODE_TRANSPILE_ONLY=true midway-bin dev --ts",
|
||||||
"test": "midway-bin test --ts",
|
"test": "midway-bin test --ts",
|
||||||
"cov": "midway-bin cov --ts",
|
"cov": "midway-bin cov --ts",
|
||||||
|
|||||||
51
server.js
Normal file
51
server.js
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const cfork = require('cfork');
|
||||||
|
const util = require('util');
|
||||||
|
const path = require('path');
|
||||||
|
const os = require('os');
|
||||||
|
|
||||||
|
// 获取 cpu 核数
|
||||||
|
const cpuNumbers = os.cpus().length;
|
||||||
|
|
||||||
|
cfork({
|
||||||
|
exec: path.join(__dirname, './bootstrap.js'),
|
||||||
|
count: cpuNumbers,
|
||||||
|
})
|
||||||
|
.on('fork', worker => {
|
||||||
|
console.warn(
|
||||||
|
'[%s] [worker:%d] new worker start',
|
||||||
|
Date(),
|
||||||
|
worker.process.pid
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.on('disconnect', worker => {
|
||||||
|
console.warn(
|
||||||
|
'[%s] [master:%s] wroker:%s disconnect, exitedAfterDisconnect: %s, state: %s.',
|
||||||
|
Date(),
|
||||||
|
process.pid,
|
||||||
|
worker.process.pid,
|
||||||
|
worker.exitedAfterDisconnect,
|
||||||
|
worker.state
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.on('exit', (worker, code, signal) => {
|
||||||
|
const exitCode = worker.process.exitCode;
|
||||||
|
const err = new Error(
|
||||||
|
util.format(
|
||||||
|
'worker %s died (code: %s, signal: %s, exitedAfterDisconnect: %s, state: %s)',
|
||||||
|
worker.process.pid,
|
||||||
|
exitCode,
|
||||||
|
signal,
|
||||||
|
worker.exitedAfterDisconnect,
|
||||||
|
worker.state
|
||||||
|
)
|
||||||
|
);
|
||||||
|
err.name = 'WorkerDiedError';
|
||||||
|
console.error(
|
||||||
|
'[%s] [master:%s] wroker exit: %s',
|
||||||
|
Date(),
|
||||||
|
process.pid,
|
||||||
|
err.stack
|
||||||
|
);
|
||||||
|
});
|
||||||
@ -8,6 +8,10 @@ export default {
|
|||||||
koa: {
|
koa: {
|
||||||
port: 8001,
|
port: 8001,
|
||||||
},
|
},
|
||||||
|
// 文件上传
|
||||||
|
upload: {
|
||||||
|
fileSize: '200mb',
|
||||||
|
},
|
||||||
// 模板渲染
|
// 模板渲染
|
||||||
view: {
|
view: {
|
||||||
mapping: {
|
mapping: {
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
import { App, Config, Middleware } from '@midwayjs/decorator';
|
import { App, Config, Inject, Middleware } from '@midwayjs/decorator';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import { RESCODE } from '@cool-midway/core';
|
import { RESCODE } from '@cool-midway/core';
|
||||||
import * as jwt from 'jsonwebtoken';
|
import * as jwt from 'jsonwebtoken';
|
||||||
import { NextFunction, Context } from '@midwayjs/koa';
|
import { NextFunction, Context } from '@midwayjs/koa';
|
||||||
import { IMiddleware, IMidwayApplication } from '@midwayjs/core';
|
import { IMiddleware, IMidwayApplication } from '@midwayjs/core';
|
||||||
|
import { CacheManager } from '@midwayjs/cache';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 权限校验
|
* 权限校验
|
||||||
@ -18,7 +19,8 @@ export class BaseAuthorityMiddleware
|
|||||||
@Config('module.base')
|
@Config('module.base')
|
||||||
jwtConfig;
|
jwtConfig;
|
||||||
|
|
||||||
coolCache;
|
@Inject()
|
||||||
|
cacheManager: CacheManager;
|
||||||
|
|
||||||
@App()
|
@App()
|
||||||
app: IMidwayApplication;
|
app: IMidwayApplication;
|
||||||
@ -60,10 +62,8 @@ export class BaseAuthorityMiddleware
|
|||||||
};
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 需要动态获得缓存
|
|
||||||
this.coolCache = await ctx.requestContext.getAsync('cool:cache');
|
|
||||||
// 判断密码版本是否正确
|
// 判断密码版本是否正确
|
||||||
const passwordV = await this.coolCache.get(
|
const passwordV = await this.cacheManager.get(
|
||||||
`admin:passwordVersion:${ctx.admin.userId}`
|
`admin:passwordVersion:${ctx.admin.userId}`
|
||||||
);
|
);
|
||||||
if (passwordV != ctx.admin.passwordVersion) {
|
if (passwordV != ctx.admin.passwordVersion) {
|
||||||
@ -74,7 +74,7 @@ export class BaseAuthorityMiddleware
|
|||||||
};
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const rToken = await this.coolCache.get(
|
const rToken = await this.cacheManager.get(
|
||||||
`admin:token:${ctx.admin.userId}`
|
`admin:token:${ctx.admin.userId}`
|
||||||
);
|
);
|
||||||
if (!rToken) {
|
if (!rToken) {
|
||||||
@ -88,11 +88,11 @@ export class BaseAuthorityMiddleware
|
|||||||
if (rToken !== token && this.jwtConfig.sso) {
|
if (rToken !== token && this.jwtConfig.sso) {
|
||||||
statusCode = 401;
|
statusCode = 401;
|
||||||
} else {
|
} else {
|
||||||
let perms = await this.coolCache.get(
|
let perms: string[] = await this.cacheManager.get(
|
||||||
`admin:perms:${ctx.admin.userId}`
|
`admin:perms:${ctx.admin.userId}`
|
||||||
);
|
);
|
||||||
if (!_.isEmpty(perms)) {
|
if (!_.isEmpty(perms)) {
|
||||||
perms = JSON.parse(perms).map(e => {
|
perms = perms.map(e => {
|
||||||
return e.replace(/:/g, '/');
|
return e.replace(/:/g, '/');
|
||||||
});
|
});
|
||||||
if (!perms.includes(url.split('?')[0].replace('/admin/', ''))) {
|
if (!perms.includes(url.split('?')[0].replace('/admin/', ''))) {
|
||||||
|
|||||||
@ -87,14 +87,8 @@ export class BaseSysLoginService extends BaseService {
|
|||||||
roleIds,
|
roleIds,
|
||||||
user.username === 'admin'
|
user.username === 'admin'
|
||||||
);
|
);
|
||||||
await this.cacheManager.set(
|
await this.cacheManager.set(`admin:department:${user.id}`, departments);
|
||||||
`admin:department:${user.id}`,
|
await this.cacheManager.set(`admin:perms:${user.id}`, perms);
|
||||||
JSON.stringify(departments)
|
|
||||||
);
|
|
||||||
await this.cacheManager.set(
|
|
||||||
`admin:perms:${user.id}`,
|
|
||||||
JSON.stringify(perms)
|
|
||||||
);
|
|
||||||
await this.cacheManager.set(`admin:token:${user.id}`, result.token);
|
await this.cacheManager.set(`admin:token:${user.id}`, result.token);
|
||||||
await this.cacheManager.set(
|
await this.cacheManager.set(
|
||||||
`admin:token:refresh:${user.id}`,
|
`admin:token:refresh:${user.id}`,
|
||||||
|
|||||||
@ -68,7 +68,7 @@ export class BaseSysPermsService extends BaseService {
|
|||||||
`admin:department:${userId}`
|
`admin:department:${userId}`
|
||||||
);
|
);
|
||||||
if (department) {
|
if (department) {
|
||||||
return JSON.parse(department);
|
return department;
|
||||||
} else {
|
} else {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user