北斗启航科技教育平台登录系统
This commit is contained in:
1
.eslintignore
Normal file
1
.eslintignore
Normal file
@@ -0,0 +1 @@
|
|||||||
|
coverage
|
||||||
15
.gitignore
vendored
Normal file
15
.gitignore
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
logs/
|
||||||
|
npm-debug.log
|
||||||
|
yarn-error.log
|
||||||
|
node_modules/
|
||||||
|
*-lock.json
|
||||||
|
*-lock.yaml
|
||||||
|
yarn.lock
|
||||||
|
coverage/
|
||||||
|
.idea/
|
||||||
|
run/
|
||||||
|
.DS_Store
|
||||||
|
*.sw*
|
||||||
|
*.un~
|
||||||
|
typings/
|
||||||
|
.nyc_output/
|
||||||
10
.sequelizerc
Normal file
10
.sequelizerc
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
"config": path.join(__dirname, 'database/config.json'),
|
||||||
|
'migrations-path': path.join(__dirname, 'database/migrations'),
|
||||||
|
'seeders-path': path.join(__dirname, 'database/seeders'),
|
||||||
|
'models-path': path.join(__dirname, 'app/model'),
|
||||||
|
};
|
||||||
31
README.md
Normal file
31
README.md
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# authentication
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## QuickStart
|
||||||
|
|
||||||
|
<!-- add docs here for user -->
|
||||||
|
|
||||||
|
see [egg docs][egg] for more detail.
|
||||||
|
|
||||||
|
### Development
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm i
|
||||||
|
npm run dev
|
||||||
|
open http://localhost:7001/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm start
|
||||||
|
npm stop
|
||||||
|
```
|
||||||
|
|
||||||
|
### npm scripts
|
||||||
|
|
||||||
|
- Use `npm run lint` to check code style.
|
||||||
|
- Use `npm test` to run unit test.
|
||||||
|
|
||||||
|
[egg]: https://eggjs.org
|
||||||
109
app/controller/BSide.js
Normal file
109
app/controller/BSide.js
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "BSide";
|
||||||
|
|
||||||
|
const checkUid = async (thisPlace) => {
|
||||||
|
const ctx = thisPlace.ctx;
|
||||||
|
const token = ctx.request.header.authorization;
|
||||||
|
const redis = ctx.app.redis;
|
||||||
|
let rdmcode = await redis.get('db0').get(token);
|
||||||
|
if (!rdmcode) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return rdmcode;
|
||||||
|
};
|
||||||
|
|
||||||
|
class BSideController extends Controller {
|
||||||
|
// B端登录
|
||||||
|
async login() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const name = this.decryptRequest(body.name);
|
||||||
|
const password = this.decryptRequest(body.password);
|
||||||
|
const user = await ctx.service.bSide.loginUser(name);
|
||||||
|
if(user == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const client = await ctx.service.verify.loginClient(body.client_id);
|
||||||
|
if(client == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// await ctx.service.bSide.subscribe(user.dataValues, client.dataValues);
|
||||||
|
if (user && client && user.dataValues.status !== 2 && user.dataValues.password == this.shaForm(password, this.decryptRequest(user.dataValues.salt))) {
|
||||||
|
const result = await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/user/authorize', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
state: 'xyz',
|
||||||
|
response_type: 'code',
|
||||||
|
username: user.dataValues.uid,
|
||||||
|
password: password,
|
||||||
|
client_id: client.dataValues.client_id,
|
||||||
|
client_secret: client.dataValues.client_secret,
|
||||||
|
redirect_uri: 'http://127.0.0.1:' + ctx.app.server.address().port + '/getToken/'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(user.dataValues.uid + '?' + timestamp),
|
||||||
|
redirect: client.dataValues.client_url + '?' + result.headers.location.split('?')[1].split('&')[0].split('=')[1]
|
||||||
|
};
|
||||||
|
await ctx.service.bSide.loginStatus(user.dataValues.uid, 1);
|
||||||
|
this.setResponse(ctx, 200, '登录成功', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
const data = user.dataValues.status == 2 ? { msg: '该账号已被封禁,请联系管理员申诉', code: 444 } : { msg: '登录失败', code: 404 };
|
||||||
|
this.setResponse(ctx, 404, '登录失败', "deconstruction", data);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "login";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//B端管理员修改用户基本信息
|
||||||
|
async editUserManager() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
let rdmcode = await checkUid(this);
|
||||||
|
if (!rdmcode) {
|
||||||
|
this.setResponse(ctx, 401, 'token过期或错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const uid = JSON.parse(rdmcode).uid;
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const Manager = await ctx.service.bSide.uidfinder(uid);
|
||||||
|
if (Manager == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (Manager && Manager.dataValues.role == '1') {
|
||||||
|
const userData = await ctx.service.bSide.editUserManager(body.editMsg, body.userMsg);
|
||||||
|
if (userData == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (userData[0] !== 0) {
|
||||||
|
this.setResponse(ctx, 200, '修改用户基本信息成功', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '修改用户基本信息失败', "none");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '修改用户基本信息失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUserManager";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = BSideController;
|
||||||
50
app/controller/CNTEVService.js
Normal file
50
app/controller/CNTEVService.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "CNTEVService";
|
||||||
|
|
||||||
|
class CNTEVServiceController extends Controller {
|
||||||
|
// 身份证二要素核验
|
||||||
|
async CNTEV() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const { user_name, identity_card } = ctx.request.body;
|
||||||
|
const result = await ctx.service.cNTEVService.CNTEV(user_name, identity_card);
|
||||||
|
if (result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result.status == "1") {
|
||||||
|
await ctx.service.cNTEVService.realMark(user_name, identity_card, true);
|
||||||
|
this.setResponse(ctx, 200, result.msg, "none");
|
||||||
|
} else if (result.status == "0" || result.status == "2" || result.status == "400") {
|
||||||
|
await ctx.service.cNTEVService.realMark(user_name, identity_card, false);
|
||||||
|
this.setResponse(ctx, 200, result.msg, "none");
|
||||||
|
} else if (result.status == "600") {
|
||||||
|
setTimeout(async () => {
|
||||||
|
await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/CNTEV', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
identity_card,
|
||||||
|
user_name
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}, 3000);
|
||||||
|
this.setResponse(ctx, 200, '正在核验中', "none");
|
||||||
|
} else {
|
||||||
|
await ctx.service.cNTEVService.realMark(user_name, identity_card, false);
|
||||||
|
this.setResponse(ctx, 404, '核验失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "CNTEV";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = CNTEVServiceController;
|
||||||
170
app/controller/CSide.js
Normal file
170
app/controller/CSide.js
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "CSide";
|
||||||
|
|
||||||
|
class CSideController extends Controller {
|
||||||
|
// 比较用户名
|
||||||
|
async diffName() {
|
||||||
|
try {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const result = await ctx.service.cSide.loginUser(body.name);
|
||||||
|
if (result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result) {
|
||||||
|
this.setResponse(ctx, 404, '该用户名已存在', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 200, '验证通过', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "diffName";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 比较电话号码
|
||||||
|
async diffPhone() {
|
||||||
|
try {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const result = await ctx.service.cSide.diffPhone(body.phone);
|
||||||
|
if (result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result) {
|
||||||
|
this.setResponse(ctx, 404, '该手机号已注册', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 200, '验证通过', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "diffPhone";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 比较邮箱
|
||||||
|
async diffEmail() {
|
||||||
|
try {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const result = await ctx.service.cSide.diffEmail(body.email);
|
||||||
|
if (result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result) {
|
||||||
|
this.setResponse(ctx, 404, '该邮箱已经注册', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 200, '验证通过', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "diffEmail";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// C端用户注册
|
||||||
|
async registered() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const form = {
|
||||||
|
uid: this.generateNumberString('C'),
|
||||||
|
salt: this.encryptRequest(salt),
|
||||||
|
status: 0,
|
||||||
|
role: 0,
|
||||||
|
avatar: 'default',
|
||||||
|
account_name: this.decryptRequest(body.account_name),
|
||||||
|
password: this.shaForm(this.decryptRequest(body.password), salt),
|
||||||
|
user_name: body.user_name == "" ? "" : this.decryptRequest(body.user_name),
|
||||||
|
phone: this.decryptRequest(body.phone),
|
||||||
|
gender: body.gender == "" ? null : this.decryptRequest(body.gender),
|
||||||
|
age: body.age == "" ? null : this.decryptRequest(body.age),
|
||||||
|
email: body.email == "" ? "" : this.decryptRequest(body.email),
|
||||||
|
address: body.address == "" ? "" : this.decryptRequest(body.address),
|
||||||
|
post_code: body.post_code == "" ? "" : this.decryptRequest(body.post_code),
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
login_at: new Date(),
|
||||||
|
login_status: 0,
|
||||||
|
};
|
||||||
|
const result = await ctx.service.cSide.registered(form);
|
||||||
|
if(result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result) {
|
||||||
|
this.setResponse(ctx, result.code, result.message, "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '注册失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "registered";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通用服务登录
|
||||||
|
async login() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const name = this.decryptRequest(body.name);
|
||||||
|
const password = this.decryptRequest(body.password);
|
||||||
|
const user = await ctx.service.cSide.loginUser(name);
|
||||||
|
if(user == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const client = await ctx.service.verify.loginClient(body.client_id);
|
||||||
|
if(client == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// await ctx.service.cSide.subscribe(user.dataValues, client.dataValues);
|
||||||
|
if (user && client && user.dataValues.status !== 2 && user.dataValues.password == this.shaForm(password, this.decryptRequest(user.dataValues.salt))) {
|
||||||
|
const result = await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/user/authorize', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
state: 'xyz',
|
||||||
|
response_type: 'code',
|
||||||
|
username: user.dataValues.uid,
|
||||||
|
password: password,
|
||||||
|
client_id: client.dataValues.client_id,
|
||||||
|
client_secret: client.dataValues.client_secret,
|
||||||
|
redirect_uri: 'http://127.0.0.1:' + ctx.app.server.address().port + '/getToken/'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(user.dataValues.uid + '?' + timestamp),
|
||||||
|
redirect: client.dataValues.client_url + '?' + result.headers.location.split('?')[1].split('&')[0].split('=')[1]
|
||||||
|
};
|
||||||
|
await ctx.service.cSide.loginStatus(user.dataValues.uid, 1);
|
||||||
|
this.setResponse(ctx, 200, '登录成功', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
const data = user.dataValues.status == 2 ? { msg: '该账号已被封禁,请联系管理员申诉', code: 444 } : { msg: '登录失败', code: 404 };
|
||||||
|
this.setResponse(ctx, 404, '登录失败', "deconstruction", data);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "login";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = CSideController;
|
||||||
60
app/controller/Contest.js
Normal file
60
app/controller/Contest.js
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "Contest";
|
||||||
|
|
||||||
|
class ContestController extends Controller {
|
||||||
|
// 竞赛用户登录
|
||||||
|
async login() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const name = this.decryptRequest(body.name);
|
||||||
|
const password = this.decryptRequest(body.password);
|
||||||
|
const user = await ctx.service.contest.loginUser(name);
|
||||||
|
if(user == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const client = await ctx.service.verify.loginClient(body.client_id);
|
||||||
|
if(client == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (user && client && user.dataValues.status !== 2 && user.dataValues.password == this.shaForm(password, this.decryptRequest(user.dataValues.salt))) {
|
||||||
|
const result = await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/user/authorize', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
state: 'xyz',
|
||||||
|
response_type: 'code',
|
||||||
|
username: user.dataValues.uid,
|
||||||
|
password: password,
|
||||||
|
client_id: client.dataValues.client_id,
|
||||||
|
client_secret: client.dataValues.client_secret,
|
||||||
|
redirect_uri: 'http://127.0.0.1:' + ctx.app.server.address().port + '/getToken/'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(user.dataValues.uid + '?' + timestamp),
|
||||||
|
redirect: client.dataValues.client_url + '?' + result.headers.location.split('?')[1].split('&')[0].split('=')[1]
|
||||||
|
};
|
||||||
|
await ctx.service.contest.loginStatus(user.dataValues.uid, 1);
|
||||||
|
this.setResponse(ctx, 200, '登录成功', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
const data = user.dataValues.status == 2 ? { msg: '该账号已被封禁,请联系管理员申诉', code: 444 } : { msg: '登录失败', code: 404 };
|
||||||
|
this.setResponse(ctx, 404, '登录失败', "deconstruction", data);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "login";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ContestController;
|
||||||
55
app/controller/Exam.js
Normal file
55
app/controller/Exam.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "Exam";
|
||||||
|
|
||||||
|
class ExamController extends Controller {
|
||||||
|
// 北斗应用技术培训证书项目报名系统登录
|
||||||
|
async login() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const phone = this.decryptRequest(body.phone);
|
||||||
|
const password = this.decryptRequest(body.password);
|
||||||
|
const user = await ctx.service.exam.loginUser(phone);
|
||||||
|
if(user == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (user && user.dataValues.status !== 2 && user.dataValues.password == this.shaForm(password, this.decryptRequest(user.dataValues.salt))) {
|
||||||
|
const result =await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/user/authorize', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
state: 'xyz',
|
||||||
|
response_type: 'code',
|
||||||
|
username: user.dataValues.uid,
|
||||||
|
password: password,
|
||||||
|
client_id: "exam",
|
||||||
|
client_secret: "exam",
|
||||||
|
redirect_uri: 'http://127.0.0.1:' + ctx.app.server.address().port + '/getToken/'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(user.dataValues.uid + '?' + timestamp),
|
||||||
|
loginCode: result.headers.location.split('?')[1].split('&')[0].split('=')[1]
|
||||||
|
};
|
||||||
|
await ctx.service.exam.loginStatus(user.dataValues.uid, 1);
|
||||||
|
this.setResponse(ctx, 200, '登录成功', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
const data = user.dataValues.status == 2 ? { msg: '该账号已被封禁,请联系管理员申诉', code: 444 } : { msg: '登录失败', code: 404 };
|
||||||
|
this.setResponse(ctx, 404, '登录失败', "deconstruction", data);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "login";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ExamController;
|
||||||
55
app/controller/ExamManager.js
Normal file
55
app/controller/ExamManager.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "ExamManager";
|
||||||
|
|
||||||
|
class ExamManagerController extends Controller {
|
||||||
|
// 北斗应用技术培训证书项目报名系统管理系统登录
|
||||||
|
async login() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const name = this.decryptRequest(body.name);
|
||||||
|
const password = this.decryptRequest(body.password);
|
||||||
|
const user = await ctx.service.examManager.loginUser(name);
|
||||||
|
if(user == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (user && user.dataValues.status !== 2 && user.dataValues.password == this.shaForm(password, this.decryptRequest(user.dataValues.salt))) {
|
||||||
|
const result =await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/user/authorize', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
state: 'xyz',
|
||||||
|
response_type: 'code',
|
||||||
|
username: user.dataValues.uid,
|
||||||
|
password: password,
|
||||||
|
client_id: "exam-manager",
|
||||||
|
client_secret: "exam-manager",
|
||||||
|
redirect_uri: 'http://127.0.0.1:' + ctx.app.server.address().port + '/getToken/'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(user.dataValues.uid + '?' + timestamp),
|
||||||
|
loginCode: result.headers.location.split('?')[1].split('&')[0].split('=')[1]
|
||||||
|
};
|
||||||
|
await ctx.service.examManager.loginStatus(user.dataValues.uid, 1);
|
||||||
|
this.setResponse(ctx, 200, '登录成功', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
const data = user.dataValues.status == 2 ? { msg: '该账号已被封禁,请联系管理员申诉', code: 444 } : { msg: '登录失败', code: 404 };
|
||||||
|
this.setResponse(ctx, 404, '登录失败', "deconstruction", data);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "login";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ExamManagerController;
|
||||||
47
app/controller/Id2MVService.js
Normal file
47
app/controller/Id2MVService.js
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "Id2MVService";
|
||||||
|
|
||||||
|
class Id2MVServiceController extends Controller {
|
||||||
|
// 身份二要素核验
|
||||||
|
async checkIdCard() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
// this.decryptRequest(body.idCard)
|
||||||
|
// this.decryptRequest(body.name)
|
||||||
|
const { idCard, name } = ctx.request.body;
|
||||||
|
const result = await ctx.service.id2MVService.checkIdCard(idCard, name);
|
||||||
|
if (result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result.status == "1" || result.status == "2" || result.status == "3") {
|
||||||
|
this.setResponse(ctx, 200, result.msg, "none");
|
||||||
|
} else if (result.status == "600") {
|
||||||
|
setTimeout(async () => {
|
||||||
|
await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/checkIdCard', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
idCard,
|
||||||
|
name
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}, 3000);
|
||||||
|
this.setResponse(ctx, 200, '正在核验中', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '核验失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "checkIdCard";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Id2MVServiceController;
|
||||||
55
app/controller/Insiders.js
Normal file
55
app/controller/Insiders.js
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "Insiders";
|
||||||
|
|
||||||
|
class InsidersController extends Controller {
|
||||||
|
// 管理系统登录
|
||||||
|
async login() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const name = this.decryptRequest(body.name);
|
||||||
|
const password = this.decryptRequest(body.password);
|
||||||
|
const user = await ctx.service.insiders.loginUser(name);
|
||||||
|
if(user == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (user && user.dataValues.status !== 2 && user.dataValues.password == this.shaForm(password, this.decryptRequest(user.dataValues.salt))) {
|
||||||
|
const result =await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/user/authorize', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
state: 'xyz',
|
||||||
|
response_type: 'code',
|
||||||
|
username: user.dataValues.uid,
|
||||||
|
password: password,
|
||||||
|
client_id: "insiders-manager",
|
||||||
|
client_secret: "insiders-manager",
|
||||||
|
redirect_uri: 'http://127.0.0.1:' + ctx.app.server.address().port + '/getToken/'
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(user.dataValues.uid + '?' + timestamp),
|
||||||
|
loginCode: result.headers.location.split('?')[1].split('&')[0].split('=')[1]
|
||||||
|
};
|
||||||
|
await ctx.service.insiders.loginStatus(user.dataValues.uid, 1);
|
||||||
|
this.setResponse(ctx, 200, '登录成功', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
const data = user.dataValues.status == 2 ? { msg: '该账号已被封禁,请联系管理员申诉', code: 444 } : { msg: '登录失败', code: 404 };
|
||||||
|
this.setResponse(ctx, 404, '登录失败', "deconstruction", data);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "login";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = InsidersController;
|
||||||
68
app/controller/SMSService.js
Normal file
68
app/controller/SMSService.js
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "SMSService";
|
||||||
|
|
||||||
|
class SMSServiceController extends Controller {
|
||||||
|
// 向手机发送短信验证码
|
||||||
|
async sendSMS() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const { phone } = ctx.request.body;
|
||||||
|
const result = await ctx.service.sMSService.sendSMS(this.decryptRequest(phone));
|
||||||
|
if (result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result.status == "200") {
|
||||||
|
this.setResponse(ctx, 200, '验证码已发送', "none");
|
||||||
|
} else if (result.status == "600") {
|
||||||
|
setTimeout(async () => {
|
||||||
|
await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/sendSMS', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 6000,
|
||||||
|
data: {
|
||||||
|
phone
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}, 3000);
|
||||||
|
this.setResponse(ctx, 200, '正在发送验证码', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '请重试', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "sendSMS";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验短信验证码
|
||||||
|
async checkCode() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const phone = this.decryptRequest(body.phone);
|
||||||
|
const code = this.decryptRequest(body.code);
|
||||||
|
const result = await ctx.service.sMSService.checkCode(phone, code);
|
||||||
|
if (result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result) {
|
||||||
|
this.setResponse(ctx, 200, '验证通过', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '验证失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "checkCode";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = SMSServiceController;
|
||||||
396
app/controller/verify.js
Normal file
396
app/controller/verify.js
Normal file
@@ -0,0 +1,396 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Controller = require('../core/base_controller');
|
||||||
|
|
||||||
|
const fileName = "verify";
|
||||||
|
|
||||||
|
const redisType = {
|
||||||
|
"B": "db0",
|
||||||
|
"C": "db1",
|
||||||
|
"M": "db2",
|
||||||
|
"T": "db5",
|
||||||
|
"E": "db6",
|
||||||
|
"A": "db7"
|
||||||
|
};
|
||||||
|
|
||||||
|
const modelType = {
|
||||||
|
"B": "bSide",
|
||||||
|
"C": "cSide",
|
||||||
|
"M": "insiders",
|
||||||
|
"T": "contest",
|
||||||
|
"E": "exam",
|
||||||
|
"A": "examManager"
|
||||||
|
};
|
||||||
|
|
||||||
|
const checkUid = async (thisPlace) => {
|
||||||
|
const ctx = thisPlace.ctx;
|
||||||
|
const uid = ctx.request.body.uid;
|
||||||
|
const token = ctx.request.header.authorization;
|
||||||
|
const redis = ctx.app.redis;
|
||||||
|
let rdmcode;
|
||||||
|
if (!uid) {
|
||||||
|
let allRedis = [];
|
||||||
|
Object.entries(redisType).forEach(([key, value]) => {
|
||||||
|
allRedis.push(redis.get(value).get(token));
|
||||||
|
});
|
||||||
|
const [buser, cuser, muser, tuser, euser, auser] = await Promise.all(allRedis);
|
||||||
|
rdmcode = buser || cuser || muser || tuser || euser || auser;
|
||||||
|
} else {
|
||||||
|
let decryptUid = thisPlace.decryptRequest(uid).split('?')[0];
|
||||||
|
const lastCode = decryptUid[decryptUid.length - 1];
|
||||||
|
rdmcode = await redis.get(redisType[lastCode]).get(token);
|
||||||
|
}
|
||||||
|
if (!rdmcode) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return rdmcode;
|
||||||
|
};
|
||||||
|
|
||||||
|
class VerifyController extends Controller {
|
||||||
|
// 确定登录页面
|
||||||
|
async toLogin() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
// 请求发出的源网址,适用于不同端用户登录不同域名网站
|
||||||
|
const origin_url = ctx.request.header.origin;
|
||||||
|
// 请求发出的具体网址,适用于不同端用户登录同一域名的网站
|
||||||
|
// const { origin_url } = ctx.request.body;
|
||||||
|
const result = await ctx.service.verify.toLogin(origin_url);
|
||||||
|
if (result == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result) {
|
||||||
|
const data = { redirect: result.dataValues.login_url + '?client_id=' + result.dataValues.temporary_id };
|
||||||
|
this.setResponse(ctx, 200, '跳转到登录页', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '未找到登录页', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "toLogin";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确定登录状态
|
||||||
|
async loginStatus() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const uid = this.decryptRequest(body.data).split('?')[0];
|
||||||
|
const lastCode = uid[uid.length - 1];
|
||||||
|
const status = await ctx.app.redis.get(redisType[lastCode]).get(uid);
|
||||||
|
const client = await ctx.service.verify.loginClient(body.client_id);
|
||||||
|
if (client == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (status !== null && client.dataValues.login_url == ctx.request.header.referer.split('?')[0] && client.dataValues.client_id == JSON.parse(status).clientId) {
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const serverType = ctx.service[modelType[lastCode]];
|
||||||
|
await serverType.loginStatus(uid, 1);
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(uid + '?' + timestamp),
|
||||||
|
access_token: JSON.parse(status).accessToken,
|
||||||
|
refresh_token: JSON.parse(status).refreshToken,
|
||||||
|
redirect: client.dataValues.client_url + '?' + body.data,
|
||||||
|
};
|
||||||
|
this.setResponse(ctx, 200, '已登录', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
const serverType = ctx.service[modelType[lastCode]];
|
||||||
|
await serverType.loginStatus(uid, 0);
|
||||||
|
this.setResponse(ctx, 404, '未登录', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginStatus";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 退出登录
|
||||||
|
async unLogin() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
let rdmcode = await checkUid(this);
|
||||||
|
if (!rdmcode) {
|
||||||
|
this.setResponse(ctx, 401, 'token过期或错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const uid = JSON.parse(rdmcode).uid;
|
||||||
|
const lastCode = uid[uid.length - 1];
|
||||||
|
const serverType = ctx.service[modelType[lastCode]];
|
||||||
|
if(modelType == 'B' || modelType == 'C' || modelType == 'M') await serverType.loginStatus(uid, 0);
|
||||||
|
const redisDbType = redisType[lastCode];
|
||||||
|
await ctx.app.redis.get(redisDbType).del(ctx.request.body.access_token);
|
||||||
|
await ctx.app.redis.get(redisDbType).del(ctx.request.body.refresh_token);
|
||||||
|
await ctx.app.redis.get(redisDbType).del(uid);
|
||||||
|
this.setResponse(ctx, 200, 'unLogin', "none");
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "unLogin";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取 token
|
||||||
|
async getToken() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
const body = ctx.request.body;
|
||||||
|
let code = body.code, type = this.decryptRequest(body.type), codeObj, typeMark = type, accessToken, refreshToken;
|
||||||
|
if (type === 'code') {
|
||||||
|
codeObj = await ctx.app.redis.get('db3').get(code);
|
||||||
|
if (!codeObj) {
|
||||||
|
typeMark = 'passLogin';
|
||||||
|
code = this.decryptRequest(code).split('?')[0];
|
||||||
|
const redisDbType = redisType[code[code.length - 1]];
|
||||||
|
codeObj = await ctx.app.redis.get(redisDbType).get(code);
|
||||||
|
if (!codeObj) return codeObj;
|
||||||
|
accessToken = JSON.parse(codeObj).accessToken;
|
||||||
|
refreshToken = JSON.parse(codeObj).refreshToken;
|
||||||
|
codeObj = await ctx.app.redis.get(redisDbType).get(refreshToken);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
type = type.split('?')[0];
|
||||||
|
const redisDbType = redisType[type[type.length - 1]];
|
||||||
|
codeObj = await ctx.app.redis.get(redisDbType).get(code);
|
||||||
|
}
|
||||||
|
if (!codeObj) {
|
||||||
|
this.setResponse(ctx, 402, '请重新登录', "none");
|
||||||
|
} else {
|
||||||
|
const client_id = JSON.parse(codeObj).clientId;
|
||||||
|
const client = await ctx.service.verify.getToken(client_id);
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const origin_url = ctx.request.header.origin;
|
||||||
|
if (client == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
} else if (client && typeMark == "passLogin") {
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(JSON.parse(codeObj).uid + '?' + timestamp),
|
||||||
|
access_token: accessToken,
|
||||||
|
refresh_token: refreshToken,
|
||||||
|
redirect: origin_url
|
||||||
|
};
|
||||||
|
this.setResponse(ctx, 200, '验证通过', "deconstruction", data);
|
||||||
|
} else if (client && typeMark !== "passLogin") {
|
||||||
|
const redisCode = { code, type };
|
||||||
|
const result = await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/user/token', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
grant_type: 'authorization_code',
|
||||||
|
code: JSON.stringify(redisCode),
|
||||||
|
client_id: client.dataValues.client_id,
|
||||||
|
client_secret: client.dataValues.client_secret,
|
||||||
|
redirect_uri: 'http://127.0.0.1:' + ctx.app.server.address().port + '/getToken/',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
if (result.status == 200) {
|
||||||
|
const data = {
|
||||||
|
data: this.encryptRequest(result.data.access_token.uid + '?' + timestamp),
|
||||||
|
access_token: result.data.access_token.token,
|
||||||
|
refresh_token: result.data.refresh_token,
|
||||||
|
redirect: client.dataValues.client_id == "insiders-manager" ? origin_url : client.dataValues.client_url
|
||||||
|
}
|
||||||
|
this.setResponse(ctx, 200, '验证通过', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 402, '请重新登录', "none");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 402, '请重新登录', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getToken";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证token
|
||||||
|
async getMsg() {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
// 客户端实现
|
||||||
|
// 访问 /user/token 端口验证 accessToken,获取用户信息
|
||||||
|
let accessToken = {
|
||||||
|
access_token: ctx.request.header.authorization,
|
||||||
|
uid: this.decryptRequest(ctx.request.body.data).split('?')[0]
|
||||||
|
};
|
||||||
|
const result = await ctx.curl('http://127.0.0.1:' + ctx.app.server.address().port + '/user/authenticate', {
|
||||||
|
dataType: 'json',
|
||||||
|
contentType: 'application/x-www-form-urlencoded',
|
||||||
|
method: 'POST',
|
||||||
|
timeout: 3000,
|
||||||
|
data: {
|
||||||
|
status: 'success',
|
||||||
|
access_token: JSON.stringify(accessToken)
|
||||||
|
},
|
||||||
|
});
|
||||||
|
if (result.status == 200) {
|
||||||
|
let uid = result.data.data.token.user.uid;
|
||||||
|
let lastCode = uid[uid.length - 1];
|
||||||
|
const userdata = await ctx.service[modelType[lastCode]].uidfinder(uid);
|
||||||
|
if (userdata == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const timestamp = new Date().getTime();
|
||||||
|
const encryptData = this.encryptRequest(userdata.uid + '?' + timestamp);
|
||||||
|
if (userdata) {
|
||||||
|
const data = { data: encryptData };
|
||||||
|
this.setResponse(ctx, 200, '验证通过', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 401, 'token错误或过期', "none");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 401, 'token错误或过期', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getMsg";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async show() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
const data = { data: ctx.state.oauth };
|
||||||
|
this.setResponse(ctx, 200, '返回信息', "deconstruction", data);
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "show";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取用户基本信息
|
||||||
|
async getUser() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
let rdmcode = await checkUid(this);
|
||||||
|
if (!rdmcode) {
|
||||||
|
this.setResponse(ctx, 401, 'token过期或错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const uid = JSON.parse(rdmcode).uid;
|
||||||
|
const lastCode = uid[uid.length - 1];
|
||||||
|
const userData = await ctx.service[modelType[lastCode]].getUser(uid);
|
||||||
|
if (userData == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (userData) {
|
||||||
|
const data = { userData };
|
||||||
|
this.setResponse(ctx, 200, '获取用户基本信息成功', "deconstruction", data);
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '获取用户基本信息失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getUser";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改用户基本信息
|
||||||
|
async editUser() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
let rdmcode = await checkUid(this);
|
||||||
|
if (!rdmcode) {
|
||||||
|
this.setResponse(ctx, 401, 'token过期或错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const uid = JSON.parse(rdmcode).uid;
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const lastCode = uid[uid.length - 1];
|
||||||
|
const userData = await ctx.service[modelType[lastCode]].editUser(body.userMsg, uid);
|
||||||
|
if (userData == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (userData[0] != 0) {
|
||||||
|
this.setResponse(ctx, 200, '修改用户基本信息成功', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '修改用户基本信息失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUser";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改密码
|
||||||
|
async changePassword() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
let rdmcode = await checkUid(this);
|
||||||
|
if (!rdmcode) {
|
||||||
|
this.setResponse(ctx, 401, 'token过期或错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const uid = JSON.parse(rdmcode).uid;
|
||||||
|
const lastCode = uid[uid.length - 1];
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const oldPassword = this.decryptRequest(body.passwordForm.oldPassword);
|
||||||
|
const newPassword = this.decryptRequest(body.passwordForm.newPassword);
|
||||||
|
const changeList = await ctx.service[modelType[lastCode]].changePassword(uid, oldPassword, newPassword);
|
||||||
|
if (changeList == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (changeList && changeList[0] !== 0) {
|
||||||
|
this.setResponse(ctx, 200, '修改密码成功', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '修改密码失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "changePassword";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置密码
|
||||||
|
async resetPassword() {
|
||||||
|
const ctx = this.ctx;
|
||||||
|
try {
|
||||||
|
let rdmcode = await checkUid(this);
|
||||||
|
if (!rdmcode) {
|
||||||
|
this.setResponse(ctx, 401, 'token过期或错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const uid = JSON.parse(rdmcode).uid;
|
||||||
|
const lastCode = uid[uid.length - 1];
|
||||||
|
const body = ctx.request.body;
|
||||||
|
const model = this.decryptRequest(body.model);
|
||||||
|
const defaultPassword = this.decryptRequest(body.defaultPassword);
|
||||||
|
const password = this.decryptRequest(body.password);
|
||||||
|
const requestMsg = body.userMsg;
|
||||||
|
const resetType = body.resetType;
|
||||||
|
const resetList = await ctx.service[modelType[lastCode]].resetPassword(uid, model, defaultPassword, password, requestMsg, resetType);
|
||||||
|
if (resetList == "error") {
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (resetList) {
|
||||||
|
this.setResponse(ctx, 200, '重置密码成功', "none");
|
||||||
|
} else {
|
||||||
|
this.setResponse(ctx, 404, '重置密码失败', "none");
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "resetPassword";
|
||||||
|
ctx.app.middleware.log('../../controllerLog', blockName + ">>>>" + error);
|
||||||
|
this.setResponse(ctx, 500, '服务器错误', "none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = VerifyController;
|
||||||
95
app/core/base_controller.js
Normal file
95
app/core/base_controller.js
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
const { Controller } = require('egg');
|
||||||
|
|
||||||
|
const sha256 = require("crypto-js/sha256");
|
||||||
|
|
||||||
|
const CryptoJS = require("crypto-js");
|
||||||
|
|
||||||
|
const KEY = CryptoJS.enc.Utf8.parse('BDQH');
|
||||||
|
|
||||||
|
class BaseController extends Controller {
|
||||||
|
shaForm = (body, salt) => {
|
||||||
|
return sha256(sha256(body).toString() + salt).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
encryptRequest = (body) => {
|
||||||
|
return CryptoJS.AES.encrypt(body, KEY, {
|
||||||
|
mode: CryptoJS.mode.ECB,
|
||||||
|
padding: CryptoJS.pad.Pkcs7
|
||||||
|
}).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
decryptRequest = (body) => {
|
||||||
|
return CryptoJS.AES.decrypt(body, KEY, {
|
||||||
|
mode: CryptoJS.mode.ECB,
|
||||||
|
padding: CryptoJS.pad.Pkcs7
|
||||||
|
}).toString(CryptoJS.enc.Utf8);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户uid生成函数
|
||||||
|
generateNumberString = (side) => {
|
||||||
|
// 获取当前日期(年月日)
|
||||||
|
const now = new Date();
|
||||||
|
const year = String(now.getFullYear()).padStart(4, '0');
|
||||||
|
const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以加1
|
||||||
|
const date = String(now.getDate()).padStart(2, '0');
|
||||||
|
const dateString = year + month + date;
|
||||||
|
|
||||||
|
// 获取当前时间戳的后三位
|
||||||
|
const timestamp = String(Date.now()).slice(-3);
|
||||||
|
|
||||||
|
// 生成三位随机数字
|
||||||
|
const randomDigits = Math.floor(Math.random() * 100).toString().padStart(3, '0');
|
||||||
|
|
||||||
|
// 组合成最终的15位字符串
|
||||||
|
const fullNumberString = dateString + timestamp + randomDigits + side;
|
||||||
|
|
||||||
|
return fullNumberString;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 随机盐生成函数
|
||||||
|
generateRandomString = () => {
|
||||||
|
const lowerCaseLetters = 'abcdefghijklmnopqrstuvwxyz';
|
||||||
|
const upperCaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||||
|
const numbers = '0123456789';
|
||||||
|
|
||||||
|
let result = '';
|
||||||
|
|
||||||
|
// 生成5位随机小写字母
|
||||||
|
for (let i = 0; i < 5; i++) {
|
||||||
|
const randomIndex = Math.floor(Math.random() * lowerCaseLetters.length);
|
||||||
|
result += lowerCaseLetters[randomIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成5位随机大写字母
|
||||||
|
for (let i = 0; i < 5; i++) {
|
||||||
|
const randomIndex = Math.floor(Math.random() * upperCaseLetters.length);
|
||||||
|
result += upperCaseLetters[randomIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成2位随机数字
|
||||||
|
for (let i = 0; i < 2; i++) {
|
||||||
|
const randomIndex = Math.floor(Math.random() * numbers.length);
|
||||||
|
result += numbers[randomIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打乱整个字符串
|
||||||
|
const characters = result.split('');
|
||||||
|
for (let i = characters.length - 1; i > 0; i--) {
|
||||||
|
const j = Math.floor(Math.random() * (i + 1));
|
||||||
|
[characters[i], characters[j]] = [characters[j], characters[i]];
|
||||||
|
}
|
||||||
|
|
||||||
|
return characters.join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
setResponse = (ctx, code, msg, model, data = {}) => {
|
||||||
|
const modelType = {
|
||||||
|
"none": { code, msg },
|
||||||
|
"deconstruction": { code, msg, ...data },
|
||||||
|
"polymerization": { code, msg, data }
|
||||||
|
}
|
||||||
|
ctx.body = modelType[model];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = BaseController;
|
||||||
114
app/core/base_service.js
Normal file
114
app/core/base_service.js
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
const { Service } = require('egg');
|
||||||
|
|
||||||
|
const crypto = require('crypto');
|
||||||
|
|
||||||
|
const sha256 = require("crypto-js/sha256");
|
||||||
|
|
||||||
|
const CryptoJS = require("crypto-js");
|
||||||
|
|
||||||
|
const KEY = CryptoJS.enc.Utf8.parse('BDQH');
|
||||||
|
|
||||||
|
class BaseService extends Service {
|
||||||
|
calculateMD5 = (data) => {
|
||||||
|
return crypto.createHash('md5').update(data).digest('hex');
|
||||||
|
}
|
||||||
|
|
||||||
|
shaForm = (body, salt) => {
|
||||||
|
return sha256(sha256(body).toString() + salt).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
encryptRequest = (body) => {
|
||||||
|
return CryptoJS.AES.encrypt(body, KEY, {
|
||||||
|
mode: CryptoJS.mode.ECB,
|
||||||
|
padding: CryptoJS.pad.Pkcs7
|
||||||
|
}).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
decryptRequest = (body) => {
|
||||||
|
return CryptoJS.AES.decrypt(body, KEY, {
|
||||||
|
mode: CryptoJS.mode.ECB,
|
||||||
|
padding: CryptoJS.pad.Pkcs7
|
||||||
|
}).toString(CryptoJS.enc.Utf8);
|
||||||
|
}
|
||||||
|
|
||||||
|
// uid生成函数
|
||||||
|
generateNumberString = () => {
|
||||||
|
// 获取当前日期(年月日)
|
||||||
|
const now = new Date();
|
||||||
|
const year = String(now.getFullYear()).padStart(4, '0');
|
||||||
|
const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以加1
|
||||||
|
const date = String(now.getDate()).padStart(2, '0');
|
||||||
|
const dateString = year + month + date;
|
||||||
|
|
||||||
|
// 获取当前时间戳的后四位
|
||||||
|
const timestamp = String(Date.now()).slice(-4);
|
||||||
|
|
||||||
|
// 生成四位随机数字
|
||||||
|
const randomDigits = Math.floor(Math.random() * 10000).toString().padStart(4, '0');
|
||||||
|
|
||||||
|
// 组合成最终的16位数字字符串
|
||||||
|
const fullNumberString = dateString + timestamp + randomDigits;
|
||||||
|
|
||||||
|
return fullNumberString;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 随机盐生成函数
|
||||||
|
generateRandomString = () => {
|
||||||
|
const lowerCaseLetters = 'abcdefghijklmnopqrstuvwxyz';
|
||||||
|
const upperCaseLetters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
||||||
|
const numbers = '0123456789';
|
||||||
|
|
||||||
|
let result = '';
|
||||||
|
|
||||||
|
// 生成5位随机小写字母
|
||||||
|
for (let i = 0; i < 5; i++) {
|
||||||
|
const randomIndex = Math.floor(Math.random() * lowerCaseLetters.length);
|
||||||
|
result += lowerCaseLetters[randomIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成5位随机大写字母
|
||||||
|
for (let i = 0; i < 5; i++) {
|
||||||
|
const randomIndex = Math.floor(Math.random() * upperCaseLetters.length);
|
||||||
|
result += upperCaseLetters[randomIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 生成2位随机数字
|
||||||
|
for (let i = 0; i < 2; i++) {
|
||||||
|
const randomIndex = Math.floor(Math.random() * numbers.length);
|
||||||
|
result += numbers[randomIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打乱整个字符串
|
||||||
|
const characters = result.split('');
|
||||||
|
for (let i = characters.length - 1; i > 0; i--) {
|
||||||
|
const j = Math.floor(Math.random() * (i + 1));
|
||||||
|
[characters[i], characters[j]] = [characters[j], characters[i]];
|
||||||
|
}
|
||||||
|
|
||||||
|
return characters.join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 随机验证码生成函数
|
||||||
|
generateCodeString = () => {
|
||||||
|
const numbers = '0123456789';
|
||||||
|
|
||||||
|
let result = '';
|
||||||
|
|
||||||
|
// 生成6位随机数字
|
||||||
|
for (let i = 0; i < 6; i++) {
|
||||||
|
const randomIndex = Math.floor(Math.random() * numbers.length);
|
||||||
|
result += numbers[randomIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 打乱整个字符串
|
||||||
|
const characters = result.split('');
|
||||||
|
for (let i = characters.length - 1; i > 0; i--) {
|
||||||
|
const j = Math.floor(Math.random() * (i + 1));
|
||||||
|
[characters[i], characters[j]] = [characters[j], characters[i]];
|
||||||
|
}
|
||||||
|
|
||||||
|
return characters.join('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = BaseService;
|
||||||
333
app/extend/oauth.js
Normal file
333
app/extend/oauth.js
Normal file
@@ -0,0 +1,333 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
// const sha256 = require("crypto-js/sha256");
|
||||||
|
|
||||||
|
module.exports = () => {
|
||||||
|
class Model {
|
||||||
|
constructor(ctx) {
|
||||||
|
this.ctx = ctx;
|
||||||
|
this.fileName = "oauth";
|
||||||
|
this.redisType = {
|
||||||
|
"B": "db0",
|
||||||
|
"C": "db1",
|
||||||
|
"M": "db2",
|
||||||
|
"T": "db5",
|
||||||
|
"E": "db6",
|
||||||
|
"A": "db7"
|
||||||
|
};
|
||||||
|
this.modelType = {
|
||||||
|
"B": this.ctx.model.BSide,
|
||||||
|
"C": this.ctx.model2.CSide,
|
||||||
|
"M": this.ctx.model3.Insiders,
|
||||||
|
"T": this.ctx.model4.Account,
|
||||||
|
"E": this.ctx.model5.Examinee,
|
||||||
|
"A": this.ctx.model5.Manager,
|
||||||
|
};
|
||||||
|
this.redisAccessTokenEX = {
|
||||||
|
"B": 1000,
|
||||||
|
"C": 1000,
|
||||||
|
"M": 1000,
|
||||||
|
"T": 1000,
|
||||||
|
"E": 3000,
|
||||||
|
"A": 1000
|
||||||
|
};
|
||||||
|
this.redisRefreshTokenEX = {
|
||||||
|
"B": 1000,
|
||||||
|
"C": 1000,
|
||||||
|
"M": 1000,
|
||||||
|
"T": 1000,
|
||||||
|
"E": 360000,
|
||||||
|
"A": 1000
|
||||||
|
};
|
||||||
|
}
|
||||||
|
async getClient(clientId) {
|
||||||
|
// let clientSecret = this.ctx.request.body.client_secret;
|
||||||
|
try {
|
||||||
|
// 1. 从数据库中查询客户端信息
|
||||||
|
// if(clientId == "insiders-manager" && clientSecret == "insiders-manager") {
|
||||||
|
let checkFixedClient = false;
|
||||||
|
this.ctx.app.config.fixedClient.forEach(element => {
|
||||||
|
if (clientId == element) checkFixedClient = true;
|
||||||
|
});
|
||||||
|
if (checkFixedClient) {
|
||||||
|
return {
|
||||||
|
id: clientId,
|
||||||
|
redirectUris: 'http://127.0.0.1:'+this.ctx.app.server.address().port+'/getToken/',
|
||||||
|
grants: ['authorization_code'],
|
||||||
|
type: clientId,
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
const client = await this.ctx.model3.Business.findOne({ where: { client_id: clientId } });
|
||||||
|
if (!client) return false;
|
||||||
|
|
||||||
|
// 2. 校验客户端密钥
|
||||||
|
// if (clientSecret && (clientSecret !== client.client_secret)) {
|
||||||
|
// return false;
|
||||||
|
// }
|
||||||
|
// 3. 返回数据
|
||||||
|
return {
|
||||||
|
id: client.client_id,
|
||||||
|
redirectUris: 'http://127.0.0.1:'+this.ctx.app.server.address().port+'/getToken/',
|
||||||
|
grants: ['authorization_code'],
|
||||||
|
type: client.type,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "getClient";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async grantTypeAllowed (clientId, grantType) {
|
||||||
|
try {
|
||||||
|
const client = await this.ctx.model.Oauth2.findOne({ where: { clientId: clientId } });
|
||||||
|
if(clientId == client.clientId && grantType == client.grants.split(',')){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "grantTypeAllowed";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getUser(username, password) {
|
||||||
|
try {
|
||||||
|
// 返回用户信息
|
||||||
|
return {
|
||||||
|
uid: username,
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "getUser";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getUserFromClient (clientId) {
|
||||||
|
try {
|
||||||
|
return {
|
||||||
|
uid:clientId.id
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "getUserFromClient";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
async saveToken(token, client, user) {
|
||||||
|
try {
|
||||||
|
const rdmtoken = {
|
||||||
|
accessToken: token.accessToken,
|
||||||
|
refreshToken: token.refreshToken,
|
||||||
|
clientId: client.id,
|
||||||
|
};
|
||||||
|
const lastCode = user.uid[user.uid.length-1];
|
||||||
|
const redisDbType = this.redisType[lastCode];
|
||||||
|
const redisAccessTokenEX = this.redisAccessTokenEX[lastCode];
|
||||||
|
const redisRefreshTokenEX = this.redisRefreshTokenEX[lastCode];
|
||||||
|
let reex = ((new Date(token.refreshTokenExpiresAt).getTime() - new Date().getTime()) / redisRefreshTokenEX).toFixed(0);
|
||||||
|
const usertoken = await this.ctx.app.redis.get(redisDbType).get(user.uid);
|
||||||
|
if(usertoken){
|
||||||
|
await this.ctx.app.redis.get(redisDbType).del(JSON.parse(usertoken).accessToken);
|
||||||
|
let remainder = await this.ctx.app.redis.get(redisDbType).ttl(user.uid);
|
||||||
|
reex = remainder;
|
||||||
|
await this.ctx.app.redis.get(redisDbType).del(JSON.parse(usertoken).refreshToken);
|
||||||
|
}
|
||||||
|
await this.ctx.app.redis.get(redisDbType).set(user.uid, JSON.stringify(rdmtoken), 'EX', reex);
|
||||||
|
// 1.保存访问令牌
|
||||||
|
const rdmaccess = {
|
||||||
|
token: token.accessToken,
|
||||||
|
expiresAt: token.accessTokenExpiresAt,
|
||||||
|
scope: token.scope || '',
|
||||||
|
clientId: client.id,
|
||||||
|
clientType: client.type,
|
||||||
|
uid: user.uid,
|
||||||
|
};
|
||||||
|
let acex = ((new Date(token.accessTokenExpiresAt).getTime() - new Date().getTime()) / redisAccessTokenEX).toFixed(0);
|
||||||
|
await this.ctx.app.redis.get(redisDbType).set(token.accessToken, JSON.stringify(rdmaccess), 'EX', acex);
|
||||||
|
// 2.保存刷新令牌
|
||||||
|
if(token.refreshToken){
|
||||||
|
const rdmrefresh = {
|
||||||
|
token: token.refreshToken,
|
||||||
|
expiresAt: token.refreshTokenExpiresAt,
|
||||||
|
scope: token.scope || '',
|
||||||
|
clientId: client.id,
|
||||||
|
clientType: client.type,
|
||||||
|
uid: user.uid,
|
||||||
|
};
|
||||||
|
await this.ctx.app.redis.get(redisDbType).set(token.refreshToken, JSON.stringify(rdmrefresh), 'EX', reex);
|
||||||
|
}
|
||||||
|
// 3.返回保存的令牌信息
|
||||||
|
return {
|
||||||
|
accessToken: { uid: user.uid, token:token.accessToken },
|
||||||
|
accessTokenExpiresAt: token.accessTokenExpiresAt,
|
||||||
|
refreshToken: token.refreshToken ? token.refreshToken : '',
|
||||||
|
refreshTokenExpiresAt: token.refreshTokenExpiresAt ? token.refreshTokenExpiresAt : '',
|
||||||
|
scope: token.scope || '',
|
||||||
|
client: { id: client.id, type: client.type },
|
||||||
|
user: { uid: user.uid },
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "saveToken";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getAccessToken(bearerToken) {
|
||||||
|
try {
|
||||||
|
// 1. 查询数据库,获取访问密钥信息
|
||||||
|
// 2. 查询数据库,获取客户端信息
|
||||||
|
// 3. 查询数据库,获取用户信息
|
||||||
|
let { access_token, uid } = JSON.parse(bearerToken);
|
||||||
|
const lastCode = uid[uid.length-1];
|
||||||
|
const redisDbType = this.redisType[lastCode];
|
||||||
|
const token = await this.ctx.app.redis.get(redisDbType).get(access_token);
|
||||||
|
if (token == null) {
|
||||||
|
const data = await this.ctx.app.redis.get(redisDbType).get(uid);
|
||||||
|
const refreshToken = await this.ctx.app.redis.get(redisDbType).get(JSON.parse(data).refreshToken);
|
||||||
|
if (refreshToken == null) await this.ctx.app.redis.get(redisDbType).del(uid);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 4. 返回数据
|
||||||
|
let accessToken = {
|
||||||
|
accessTokenExpiresAt: new Date(JSON.parse(token).expiresAt),
|
||||||
|
user: { uid: JSON.parse(token).uid },
|
||||||
|
client_type: JSON.parse(token).clientType,
|
||||||
|
}
|
||||||
|
return accessToken;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "getAccessToken";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async revokeToken(token) {
|
||||||
|
try {
|
||||||
|
// 查询数据库并删除刷新令牌
|
||||||
|
const revokeValue = await this.ctx.app.redis.del(token.refreshToken);
|
||||||
|
if(revokeValue){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "revokeToken";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async saveAuthorizationCode(code, client, user) {
|
||||||
|
try {
|
||||||
|
// 1. 保存授权码信息到数据库
|
||||||
|
const rdmcode = {
|
||||||
|
code: code.authorizationCode,
|
||||||
|
expiresAt: code.expiresAt,
|
||||||
|
redirectUri: code.redirectUri,
|
||||||
|
scope: code.scope || '',
|
||||||
|
clientId: client.id,
|
||||||
|
clientType: client.type,
|
||||||
|
uid: user.uid
|
||||||
|
}
|
||||||
|
let ex = ((new Date(code.expiresAt).getTime() - new Date().getTime()) / 1000).toFixed(0);
|
||||||
|
await this.ctx.app.redis.get('db3').set(code.authorizationCode, JSON.stringify(rdmcode), 'EX', ex);
|
||||||
|
|
||||||
|
// 2. 返回数据
|
||||||
|
return {
|
||||||
|
authorizationCode: code.authorizationCode,
|
||||||
|
expiresAt: code.expiresAt,
|
||||||
|
redirectUri: code.redirectUri,
|
||||||
|
scope: code.scope || '',
|
||||||
|
client: { id: client.id },
|
||||||
|
user: { uid: user.uid },
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "saveAuthorizationCode";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getAuthorizationCode(authorizationCode) {
|
||||||
|
try {
|
||||||
|
// 1. 从数据库中查询授权码信息
|
||||||
|
const { code, type } = JSON.parse(authorizationCode);
|
||||||
|
const lastCode = type[type.length - 1];
|
||||||
|
const redisDbType = this.redisType[lastCode];
|
||||||
|
let rdmcode;
|
||||||
|
if(type == 'code') {
|
||||||
|
rdmcode = await this.ctx.app.redis.get('db3').get(code);
|
||||||
|
} else {
|
||||||
|
rdmcode = await this.ctx.app.redis.get(redisDbType).get(code);
|
||||||
|
}
|
||||||
|
if (!rdmcode) return false;
|
||||||
|
|
||||||
|
// 2. 从数据库中查询客户端信息、用户信息
|
||||||
|
const cloneRdmcode = JSON.parse(rdmcode);
|
||||||
|
const cloneLastCode = cloneRdmcode.uid[cloneRdmcode.uid.length-1];
|
||||||
|
const modelDbType = this.modelType[cloneLastCode];
|
||||||
|
const user = await modelDbType.findOne({ where: { uid: cloneRdmcode.uid } });
|
||||||
|
if (!user) return false;
|
||||||
|
|
||||||
|
// 3. 返回数据
|
||||||
|
return {
|
||||||
|
code: authorizationCode,
|
||||||
|
expiresAt: new Date(cloneRdmcode.expiresAt),
|
||||||
|
redirectUri: cloneRdmcode.redirectUri,
|
||||||
|
scope: cloneRdmcode.scope,
|
||||||
|
client: { id: cloneRdmcode.clientId },
|
||||||
|
user: { uid: cloneRdmcode.uid },
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "getAuthorizationCode";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async revokeAuthorizationCode(authorizationCode) {
|
||||||
|
try {
|
||||||
|
// 从数据库中查询该授权码并删除
|
||||||
|
const { code, type } = JSON.parse(authorizationCode.code);
|
||||||
|
const lastCode = type[type.length - 1];
|
||||||
|
const redisDbType = this.redisType[lastCode];
|
||||||
|
let revokeValue;
|
||||||
|
if(type == 'code') {
|
||||||
|
revokeValue = await this.ctx.app.redis.get('db3').del(code);
|
||||||
|
} else {
|
||||||
|
revokeValue = await this.ctx.app.redis.get(redisDbType).del(code);
|
||||||
|
}
|
||||||
|
if(revokeValue){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "revokeAuthorizationCode";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
async getRefreshToken(refreshToken) {
|
||||||
|
try {
|
||||||
|
// 1. 查询数据库获取刷新令牌
|
||||||
|
const rdmrefresh = await this.ctx.app.redis.get(refreshToken);
|
||||||
|
if (!rdmrefresh) return false;
|
||||||
|
|
||||||
|
// 2. 返回数据
|
||||||
|
return {
|
||||||
|
refreshToken: JSON.parse(rdmrefresh).token,
|
||||||
|
refreshTokenExpiresAt: new Date(JSON.parse(rdmrefresh).expiresAt),
|
||||||
|
scope: JSON.parse(rdmrefresh).scope,
|
||||||
|
client: { id: JSON.parse(rdmrefresh).clientId },
|
||||||
|
user: { uid: JSON.parse(rdmrefresh).uid },
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = this.fileName + "--" + "getRefreshToken";
|
||||||
|
this.ctx.app.middleware.log('../../oauthLog', blockName + ">>>>" + error);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Model;
|
||||||
|
};
|
||||||
72
app/middleware/log.js
Normal file
72
app/middleware/log.js
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
// 错误日志
|
||||||
|
const fs = require('fs');
|
||||||
|
const os = require('os');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const dirCheck = (dirPath) => {
|
||||||
|
// 检查文件夹是否存在
|
||||||
|
fs.access(dirPath, fs.constants.F_OK, (err) => {
|
||||||
|
if (err) {
|
||||||
|
// 文件夹不存在
|
||||||
|
console.log('文件夹不存在,正在创建...');
|
||||||
|
fs.mkdir(dirPath, { recursive: true }, (err) => {
|
||||||
|
if (err) throw err;
|
||||||
|
console.log('文件夹已创建');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// 文件夹存在
|
||||||
|
console.log('文件夹已存在');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = (filePath, msg) => {
|
||||||
|
// 获取时间
|
||||||
|
let now = new Date(),
|
||||||
|
times = {
|
||||||
|
year: now.getFullYear(),
|
||||||
|
month: now.getMonth() + 1,
|
||||||
|
day: now.getDate(),
|
||||||
|
hour: now.getHours(),
|
||||||
|
minute: now.getMinutes(),
|
||||||
|
second: now.getSeconds()
|
||||||
|
};
|
||||||
|
// 获取操作系统类型
|
||||||
|
const type = os.type();
|
||||||
|
console.log(`操作系统类型: ${type}`);
|
||||||
|
filePath = path.join(__dirname, filePath);
|
||||||
|
dirCheck(filePath);
|
||||||
|
const yearPath = filePath + '/' + times.year;
|
||||||
|
dirCheck(yearPath);
|
||||||
|
const monthPath = yearPath + '/' + times.month;
|
||||||
|
dirCheck(monthPath);
|
||||||
|
const dayPath = monthPath + '/' + times.day + '.txt';
|
||||||
|
const logTime = '[' + times.year + '-' + times.month + '-' + times.day + '>>>' + times.hour + ':' + times.minute + ':' + times.second + ']' + '>>>';
|
||||||
|
let crlf;
|
||||||
|
// 判断操作系统类型,设置换行符
|
||||||
|
if (type === 'Windows_NT') {
|
||||||
|
crlf = '\n';
|
||||||
|
} else {
|
||||||
|
crlf = '\r\n';
|
||||||
|
}
|
||||||
|
// 读取文件内容
|
||||||
|
fs.readFile(dayPath, 'utf8', (err, data) => {
|
||||||
|
if (err) {
|
||||||
|
if (err.code === 'ENOENT') {
|
||||||
|
// 文件不存在,直接写入新内容(这里实际上还是使用了覆盖的方式)
|
||||||
|
fs.writeFile(dayPath, logTime + msg + crlf, (err) => {
|
||||||
|
if (err) throw err;
|
||||||
|
console.log('文件已创建并写入新内容');
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 文件存在,追加新内容
|
||||||
|
fs.appendFile(dayPath, logTime + msg + crlf, (err) => {
|
||||||
|
if (err) throw err;
|
||||||
|
console.log('新内容已追加到文件');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
30
app/model/BSide.js
Normal file
30
app/model/BSide.js
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, STRING, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const BSide = app.model.define('b-side', {
|
||||||
|
id: { type: INTEGER(8), primaryKey: true, autoIncrement: true },
|
||||||
|
uid: CHAR(15),
|
||||||
|
salt: CHAR(24),
|
||||||
|
status: INTEGER(3),
|
||||||
|
role: INTEGER(3),
|
||||||
|
account_name: STRING(20),
|
||||||
|
password: CHAR(64),
|
||||||
|
organization: CHAR(16),
|
||||||
|
user_name: STRING(20),
|
||||||
|
phone: CHAR(11),
|
||||||
|
msg: STRING(300),
|
||||||
|
created_at: DATE,
|
||||||
|
updated_at: DATE,
|
||||||
|
login_at: DATE,
|
||||||
|
login_status: INTEGER(3)
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return BSide;
|
||||||
|
};
|
||||||
22
app/model/BSubscribe.js
Normal file
22
app/model/BSubscribe.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const BSubscribe = app.model.define('bsubscribe', {
|
||||||
|
id: { type: INTEGER(11), primaryKey: true, autoIncrement: true },
|
||||||
|
user_uid: CHAR(15),
|
||||||
|
business: INTEGER(3),
|
||||||
|
status: INTEGER(3),
|
||||||
|
type: INTEGER(3),
|
||||||
|
created_at: DATE,
|
||||||
|
updated_at: DATE,
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return BSubscribe;
|
||||||
|
};
|
||||||
34
app/model2/CSide.js
Normal file
34
app/model2/CSide.js
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, STRING, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const CSide = app.model2.define('c-side', {
|
||||||
|
id: { type: INTEGER(8), primaryKey: true, autoIncrement: true },
|
||||||
|
uid: CHAR(15),
|
||||||
|
salt: CHAR(24),
|
||||||
|
status: INTEGER(3),
|
||||||
|
role: INTEGER(3),
|
||||||
|
avatar: STRING(200),
|
||||||
|
account_name: STRING(20),
|
||||||
|
password: CHAR(64),
|
||||||
|
user_name: STRING(20),
|
||||||
|
phone: CHAR(11),
|
||||||
|
gender: INTEGER(1),
|
||||||
|
age: INTEGER(3),
|
||||||
|
email: STRING(254),
|
||||||
|
address: STRING(300),
|
||||||
|
post_code: CHAR(6),
|
||||||
|
created_at: DATE,
|
||||||
|
updated_at: DATE,
|
||||||
|
login_at: DATE,
|
||||||
|
login_status: INTEGER(3)
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return CSide;
|
||||||
|
};
|
||||||
22
app/model2/CSubscribe.js
Normal file
22
app/model2/CSubscribe.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const CSubscribe = app.model2.define('csubscribe', {
|
||||||
|
id: { type: INTEGER(11), primaryKey: true, autoIncrement: true },
|
||||||
|
user_uid: CHAR(15),
|
||||||
|
business: INTEGER(3),
|
||||||
|
status: INTEGER(3),
|
||||||
|
type: INTEGER(3),
|
||||||
|
created_at: DATE,
|
||||||
|
updated_at: DATE,
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return CSubscribe;
|
||||||
|
};
|
||||||
28
app/model3/Business.js
Normal file
28
app/model3/Business.js
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, STRING, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const Business = app.model3.define('business', {
|
||||||
|
id: { type: INTEGER(3), primaryKey: true, autoIncrement: true },
|
||||||
|
salt: CHAR(24),
|
||||||
|
login_url: STRING(200),
|
||||||
|
client_url: STRING(200),
|
||||||
|
temporary_id: CHAR(64),
|
||||||
|
client_id: CHAR(12),
|
||||||
|
client_secret: CHAR(64),
|
||||||
|
name: STRING(30),
|
||||||
|
type: INTEGER(3),
|
||||||
|
level: INTEGER(3),
|
||||||
|
status: INTEGER(3),
|
||||||
|
created_at: DATE,
|
||||||
|
updated_at: DATE,
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return Business;
|
||||||
|
};
|
||||||
28
app/model3/Insiders.js
Normal file
28
app/model3/Insiders.js
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, STRING, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const Insiders = app.model3.define('insiders', {
|
||||||
|
id: { type: INTEGER(5), primaryKey: true, autoIncrement: true },
|
||||||
|
uid: CHAR(15),
|
||||||
|
salt: CHAR(24),
|
||||||
|
status: INTEGER(3),
|
||||||
|
role: INTEGER(3),
|
||||||
|
name: STRING(20),
|
||||||
|
password: CHAR(64),
|
||||||
|
department: STRING(20),
|
||||||
|
change: STRING(200),
|
||||||
|
created_at: DATE,
|
||||||
|
updated_at: DATE,
|
||||||
|
login_at: DATE,
|
||||||
|
login_status: INTEGER(3)
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return Insiders;
|
||||||
|
};
|
||||||
24
app/model4/Account.js
Normal file
24
app/model4/Account.js
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const Account = app.model4.define('account', {
|
||||||
|
id: { type: INTEGER(8), primaryKey: true, autoIncrement: true },
|
||||||
|
uid: CHAR(15),
|
||||||
|
salt: CHAR(24),
|
||||||
|
contest_uid: CHAR(15),
|
||||||
|
account_name: CHAR(20),
|
||||||
|
password: CHAR(64),
|
||||||
|
status: INTEGER(3),
|
||||||
|
created_at: DATE,
|
||||||
|
login_status: INTEGER(3),
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
return Account;
|
||||||
|
};
|
||||||
21
app/model5/Audit.js
Normal file
21
app/model5/Audit.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, STRING, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const Audit = app.model5.define('audit', {
|
||||||
|
id: { type: INTEGER(8), primaryKey: true, autoIncrement: true },
|
||||||
|
user_uid: CHAR(15),
|
||||||
|
identity_card: CHAR(18),
|
||||||
|
user_name: STRING(6),
|
||||||
|
status: INTEGER(3),
|
||||||
|
created_at: DATE,
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
return Audit;
|
||||||
|
};
|
||||||
30
app/model5/Examinee.js
Normal file
30
app/model5/Examinee.js
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, STRING, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const Examinee = app.model5.define('examinee', {
|
||||||
|
id: { type: INTEGER(8), primaryKey: true, autoIncrement: true },
|
||||||
|
uid: CHAR(15),
|
||||||
|
salt: CHAR(24),
|
||||||
|
password: CHAR(64),
|
||||||
|
user_name: STRING(6),
|
||||||
|
identity_card: CHAR(18),
|
||||||
|
real_check: INTEGER(3),
|
||||||
|
workplace: STRING(60),
|
||||||
|
address: STRING(120),
|
||||||
|
phone: CHAR(11),
|
||||||
|
email: STRING(60),
|
||||||
|
status: INTEGER(3),
|
||||||
|
created_at: DATE,
|
||||||
|
updated_at: DATE,
|
||||||
|
login_status: INTEGER(3),
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return Examinee;
|
||||||
|
};
|
||||||
25
app/model5/Manager.js
Normal file
25
app/model5/Manager.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
module.exports = (app) => {
|
||||||
|
const { INTEGER, CHAR, STRING, DATE } = app.Sequelize;
|
||||||
|
|
||||||
|
const Manager = app.model5.define('manager', {
|
||||||
|
id: { type: INTEGER(8), primaryKey: true, autoIncrement: true },
|
||||||
|
uid: CHAR(15),
|
||||||
|
salt: CHAR(24),
|
||||||
|
account_name: STRING(5),
|
||||||
|
password: CHAR(64),
|
||||||
|
role: INTEGER(3),
|
||||||
|
status: INTEGER(3),
|
||||||
|
created_at: DATE,
|
||||||
|
updated_at: DATE,
|
||||||
|
login_status: INTEGER(3),
|
||||||
|
},{
|
||||||
|
freezeTableName: true,
|
||||||
|
timestamp: true,
|
||||||
|
createdAt: true,
|
||||||
|
updatedAt: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return Manager;
|
||||||
|
};
|
||||||
69
app/router.js
Normal file
69
app/router.js
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
/**
|
||||||
|
* @param {Egg.Application} app - egg application
|
||||||
|
*/
|
||||||
|
module.exports = app => {
|
||||||
|
const { router, controller } = app;
|
||||||
|
|
||||||
|
// 获取授权码
|
||||||
|
// authorize 是用来获取授权码的路由
|
||||||
|
// 生命周期:getClient --> getUser --> saveAuthorizationCode
|
||||||
|
router.all('/user/authorize', app.oAuth2Server.authorize());
|
||||||
|
// 通过授权码获取 accessToken
|
||||||
|
// token 是用来发放访问令牌的路由
|
||||||
|
// 生命周期:getClient --> getAuthorizationCode --> saveToken --> revokeAuthorizationCode
|
||||||
|
router.all('/user/token', app.oAuth2Server.token());
|
||||||
|
// 通过 accessToken 获取用户信息
|
||||||
|
// authenticate 是登录之后可以访问的路由
|
||||||
|
// 生命周期:getAccessToken
|
||||||
|
router.all('/user/authenticate', app.oAuth2Server.authenticate(), controller.verify.show);
|
||||||
|
// 北斗启航科技教育平台管理系统登录
|
||||||
|
router.post("/mlogin", controller.insiders.login);
|
||||||
|
// 北斗启航科技教育平台B端用户登录
|
||||||
|
router.post("/blogin", controller.bSide.login);
|
||||||
|
// 北斗启航科技教育平台通用服务登录
|
||||||
|
router.post("/clogin", controller.cSide.login);
|
||||||
|
// 北斗启航科技教育平台竞赛用户登录
|
||||||
|
router.post("/tlogin", controller.contest.login);
|
||||||
|
// 北斗启航科技教育平台C端用户注册
|
||||||
|
router.post("/cregistered", controller.cSide.registered);
|
||||||
|
// 比较用户名
|
||||||
|
router.post("/diffName", controller.cSide.diffName);
|
||||||
|
// 比较电话号码
|
||||||
|
router.post("/diffPhone", controller.cSide.diffPhone);
|
||||||
|
// 比较邮箱
|
||||||
|
router.post("/diffEmail", controller.cSide.diffEmail);
|
||||||
|
// 获取token
|
||||||
|
router.post("/getToken", controller.verify.getToken);
|
||||||
|
// 确定登录页面
|
||||||
|
router.post("/toLogin", controller.verify.toLogin);
|
||||||
|
// 确定登录状态
|
||||||
|
router.post("/loginStatus", controller.verify.loginStatus);
|
||||||
|
// 退出登录
|
||||||
|
router.post("/unLogin", controller.verify.unLogin);
|
||||||
|
// 验证token
|
||||||
|
router.post("/verify", controller.verify.getMsg);
|
||||||
|
// 获取用户基本信息
|
||||||
|
router.post("/getUser", controller.verify.getUser);
|
||||||
|
// 修改用户基本信息
|
||||||
|
router.post("/editUser", controller.verify.editUser);
|
||||||
|
// 修改密码
|
||||||
|
router.post("/changePassword", controller.verify.changePassword);
|
||||||
|
// 重置密码
|
||||||
|
router.post("/resetPassword", controller.verify.resetPassword);
|
||||||
|
// 北斗启航科技教育平台B端单位管理员编辑用户基本信息
|
||||||
|
router.post("/editUserManager", controller.bSide.editUserManager);
|
||||||
|
|
||||||
|
// 北斗应用技术培训证书项目报名系统登录
|
||||||
|
router.post("/elogin", controller.exam.login);
|
||||||
|
// 北斗应用技术培训证书项目报名系统管理系统登录
|
||||||
|
router.post("/alogin", controller.examManager.login);
|
||||||
|
|
||||||
|
// 向手机发送短信验证码
|
||||||
|
router.post("/sendSMS", controller.sMSService.sendSMS);
|
||||||
|
// 校验短信验证码
|
||||||
|
router.post("/checkCode", controller.sMSService.checkCode);
|
||||||
|
// 身份二要素核验
|
||||||
|
router.post("/checkIdCard", controller.id2MVService.checkIdCard);
|
||||||
|
// 身份证二要素核验
|
||||||
|
router.post("/CNTEV", controller.cNTEVService.CNTEV);
|
||||||
|
};
|
||||||
182
app/service/BSide.js
Normal file
182
app/service/BSide.js
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "BSide";
|
||||||
|
|
||||||
|
const { Op } = require('sequelize');
|
||||||
|
|
||||||
|
const shunt = (uid) => {
|
||||||
|
return uid[uid.length - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
class BSideService extends Service {
|
||||||
|
async loginUser(name) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { account_name: name };
|
||||||
|
const result = await ctx.model.BSide.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async subscribe(user, client) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = {
|
||||||
|
user_uid: user.uid,
|
||||||
|
business: client.id
|
||||||
|
};
|
||||||
|
const defaults = {
|
||||||
|
user_uid: user.uid,
|
||||||
|
business: client.id,
|
||||||
|
status: 0,
|
||||||
|
type: 0,
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
}
|
||||||
|
await ctx.model.BSubscribe.findOrCreate({ where, defaults });
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "subscribe";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUser(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const attributes = ['status', 'role', 'account_name', 'user_name', 'phone'];
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model.BSide.findOne({ attributes, where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async editUserManager(editMsg, userMsg) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
delete userMsg.location;
|
||||||
|
const where = { ...userMsg };
|
||||||
|
const result = await ctx.model.BSide.update(editMsg, { where });
|
||||||
|
return result[0] == 0 ? false : result;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUserManager";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async editUser(userMsg, uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model.BSide.update(userMsg, { where });
|
||||||
|
return result[0] == 0 ? false : result;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async uidfinder(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model.BSide.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "uidfinder";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async changePassword(uid, oldPassword, newPassword) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
const setPassword = this.shaForm(newPassword, salt);
|
||||||
|
const result = await ctx.model.BSide.findOne({ where });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(oldPassword, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const resultList = await ctx.model.BSide.update({ salt: this.encryptRequest(salt), status: 1, password: setPassword }, { where });
|
||||||
|
return resultList[0] == 0 ? false : resultList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "changePassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async resetPassword(uid, modelType, defaultPassword, password, body, resetType) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const uidLastCode = shunt(uid);
|
||||||
|
const modelName = uidLastCode === 'B' ? 'BSide' : 'Insiders';
|
||||||
|
const model = uidLastCode === 'B' ? ctx.model : ctx.model3;
|
||||||
|
const managerWhere = uidLastCode === 'B' ? { uid, role: 1 } : { uid, role: [3, 6, 9] };
|
||||||
|
const result = await model[modelName].findOne({ where: managerWhere });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(password, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
if(defaultPassword == "") {
|
||||||
|
defaultPassword = '123456';
|
||||||
|
}
|
||||||
|
const originPassword = this.shaForm(defaultPassword, salt);
|
||||||
|
let where = {};
|
||||||
|
const organization = result.organization;
|
||||||
|
const role = { [Op.not]: 1 };
|
||||||
|
if(modelType == "single") {
|
||||||
|
where = { role, organization, ...body };
|
||||||
|
delete where.location;
|
||||||
|
} else if (modelType == "multiple") {
|
||||||
|
let account_name = [], user_name = [], phone = [];
|
||||||
|
for (const key in body) {
|
||||||
|
body[key].forEach(element => {
|
||||||
|
account_name.push(element.account_name);
|
||||||
|
user_name.push(element.user_name);
|
||||||
|
phone.push(element.phone);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
where = { role, organization, account_name, user_name, phone };
|
||||||
|
} else if (modelType == "all") {
|
||||||
|
where = { role, organization, };
|
||||||
|
}
|
||||||
|
let updateObj = { salt: this.encryptRequest(salt), status: 0, password: originPassword };
|
||||||
|
if(resetType == "default") {
|
||||||
|
updateObj.user_name = "";
|
||||||
|
updateObj.phone = "";
|
||||||
|
}
|
||||||
|
const resetList = await ctx.model.BSide.update(updateObj, { where });
|
||||||
|
return resetList.length == 0 ? false : resetList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "resetPassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loginStatus(uid, login_status) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
await ctx.model.BSide.update({ login_status }, { where });
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginStatus";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = BSideService;
|
||||||
93
app/service/CNTEVService.js
Normal file
93
app/service/CNTEVService.js
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "CNTEVService";
|
||||||
|
|
||||||
|
const Dytnsapi20200217 = require('@alicloud/dytnsapi20200217');
|
||||||
|
const OpenApi = require('@alicloud/openapi-client');
|
||||||
|
const Util = require('@alicloud/tea-util');
|
||||||
|
|
||||||
|
class Client {
|
||||||
|
static createClient() {
|
||||||
|
let config = new OpenApi.Config({
|
||||||
|
// 凭证类型。
|
||||||
|
// type: 'access_key',
|
||||||
|
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
|
||||||
|
accessKeyId: "LTAI5tM3QC6kY4r23sWnsvuY",
|
||||||
|
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
|
||||||
|
accessKeySecret: "Lj9QTWVMJSTAffscjykhaKZt7RN0Xh",
|
||||||
|
// 访问的地域
|
||||||
|
// regionId: 'cn-beijing'
|
||||||
|
});
|
||||||
|
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
|
||||||
|
// 访问的地址
|
||||||
|
config.endpoint = `dytnsapi.aliyuncs.com`;
|
||||||
|
return new Dytnsapi20200217.default(config);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CNTEVServiceService extends Service {
|
||||||
|
// 身份证二要素核验
|
||||||
|
async CNTEV(user_name, identity_card) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
let client = Client.createClient();
|
||||||
|
// 创建请求对象并设置入参
|
||||||
|
let certNoTwoElementVerificationRequest = new Dytnsapi20200217.CertNoTwoElementVerificationRequest({
|
||||||
|
authCode: "3V2qgr9a2W",
|
||||||
|
certName: user_name,
|
||||||
|
certNo: identity_card,
|
||||||
|
});
|
||||||
|
// 创建运行时配置对象
|
||||||
|
let runtime = new Util.RuntimeOptions({});
|
||||||
|
runtime.readTimeout = 5000;
|
||||||
|
runtime.connectTimeout = 5000;
|
||||||
|
// 发起请求
|
||||||
|
const response = await client.certNoTwoElementVerificationWithOptions(certNoTwoElementVerificationRequest, runtime);
|
||||||
|
const { code, data } = response.body;
|
||||||
|
if (code == "OK") {
|
||||||
|
await ctx.app.redis.get('db3').set(identity_card, JSON.stringify({ user_name, real_check: data.isConsistent }), 'EX', 600);
|
||||||
|
if (data.isConsistent == "1") return { status: 1, msg: "姓名与身份证信息核验一致" };
|
||||||
|
if (data.isConsistent == "0") return { status: 0, msg: "姓名与身份证信息核验不一致" };
|
||||||
|
if (data.isConsistent == "2") return { status: 2, msg: "查无此人" };
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
|
||||||
|
// 错误 message
|
||||||
|
// console.log('1===========================================')
|
||||||
|
// console.log(error.message);
|
||||||
|
if (error.message.includes("身份证号参数非法")) return { status: 400, msg: "身份证号参数非法" };
|
||||||
|
// 若捕捉到 ConnectTimeout 错误,则尝试重发
|
||||||
|
if (error.message.includes("ConnectTimeout")) return { status: 600, msg: "尝试重新核验" };
|
||||||
|
// console.log('2===========================================')
|
||||||
|
// 诊断地址
|
||||||
|
console.log(error);
|
||||||
|
// console.log('3===========================================')
|
||||||
|
// console.log(error.data);
|
||||||
|
// console.log('4===========================================')
|
||||||
|
// console.log(error.data["Recommend"]);
|
||||||
|
// Util.default.assertAsString(error.message);
|
||||||
|
|
||||||
|
const blockName = fileName + "--" + "CNTEV";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 身份证二要素核验结果标记
|
||||||
|
async realMark(user_name, identity_card, real_check) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
await ctx.model5.Examinee.update({ real_check: real_check ? 1 : 2 }, { where: { user_name, identity_card } });
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "realMark";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = CNTEVServiceService;
|
||||||
203
app/service/CSide.js
Normal file
203
app/service/CSide.js
Normal file
@@ -0,0 +1,203 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "CSide";
|
||||||
|
|
||||||
|
class CSideService extends Service {
|
||||||
|
async diffPhone(phone) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { phone };
|
||||||
|
const result = await ctx.model2.CSide.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "diffPhone";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async diffEmail(email) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { email };
|
||||||
|
const result = await ctx.model2.CSide.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "diffEmail";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async registered(form) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const user = await ctx.model2.CSide.create(form);
|
||||||
|
if (!user) {
|
||||||
|
return { code: 404, message: '注册失败', data: false };
|
||||||
|
};
|
||||||
|
return { code: 200, message: '注册成功', data: user };
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "registered";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loginUser(name) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { account_name: name };
|
||||||
|
const [buser, cuser] = await Promise.all([
|
||||||
|
ctx.model.BSide.findOne({ where }),
|
||||||
|
ctx.model2.CSide.findOne({ where })
|
||||||
|
]);
|
||||||
|
if (!buser && !cuser) return false;
|
||||||
|
return buser || cuser;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async subscribe(user, client) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = {
|
||||||
|
user_uid: user.uid,
|
||||||
|
business: client.id
|
||||||
|
};
|
||||||
|
const uidLastCode = user.uid[user.uid.length - 1];
|
||||||
|
const subscribeModel = {
|
||||||
|
"B": ctx.model.BSubscribe,
|
||||||
|
"C": ctx.model2.CSubscribe
|
||||||
|
};
|
||||||
|
const defaults = {
|
||||||
|
user_uid: user.uid,
|
||||||
|
business: client.id,
|
||||||
|
status: 0,
|
||||||
|
type: 0,
|
||||||
|
created_at: new Date(),
|
||||||
|
updated_at: new Date(),
|
||||||
|
};
|
||||||
|
await subscribeModel[uidLastCode].findOrCreate({ where, defaults });
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "subscribe";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUser(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const attributes = ['status', 'role', 'account_name', 'user_name', 'phone', 'gender', 'age', 'email', 'address', 'post_code'];
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model2.CSide.findOne({ attributes, where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async editUser(userMsg, uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
userMsg.gender = userMsg.gender == "1" ? true : false;
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model2.CSide.update(userMsg, { where });
|
||||||
|
return result[0] == 0 ? false : result;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async uidfinder(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model2.CSide.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "uidfinder";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async changePassword(uid, oldPassword, newPassword) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
const setPassword = this.shaForm(newPassword, salt);
|
||||||
|
const result = await ctx.model2.CSide.findOne({ where });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(oldPassword, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const resultList = await ctx.model2.CSide.update({ salt: this.encryptRequest(salt), status: 1, password: setPassword }, { where });
|
||||||
|
return resultList[0] == 0 ? false : resultList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "changePassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async resetPassword(uid, modelType, defaultPassword, password, body, resetType) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const uidLastCode = shunt(uid);
|
||||||
|
const modelName = uidLastCode === 'C' ? 'CSide' : 'Insiders';
|
||||||
|
const model = uidLastCode === 'C' ? ctx.model : ctx.model3;
|
||||||
|
const managerWhere = uidLastCode === 'C' ? { uid } : { uid, role: [3, 6, 9] };
|
||||||
|
const result = await model[modelName].findOne({ where: managerWhere });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(password, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
if(defaultPassword == "") {
|
||||||
|
defaultPassword = '123456';
|
||||||
|
}
|
||||||
|
const originPassword = this.shaForm(defaultPassword, salt);
|
||||||
|
let where = {};
|
||||||
|
if(modelType == "single") {
|
||||||
|
where = body;
|
||||||
|
} else if (modelType == "multiple") {
|
||||||
|
let account_name = [], user_name = [], phone = [];
|
||||||
|
for (const key in body) {
|
||||||
|
body[key].forEach(element => {
|
||||||
|
account_name.push(element.account_name);
|
||||||
|
user_name.push(element.user_name);
|
||||||
|
phone.push(element.phone);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
where = { account_name, user_name, phone };
|
||||||
|
}
|
||||||
|
const resetList = await ctx.model2.CSide.update({ salt: this.encryptRequest(salt), status: 0, password: originPassword }, { where });
|
||||||
|
return resetList.length == 0 ? false : resetList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "resetPassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loginStatus(uid, login_status) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
await ctx.model.BSide.update({ login_status }, { where });
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginStatus";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = CSideService;
|
||||||
151
app/service/Contest.js
Normal file
151
app/service/Contest.js
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "Contest";
|
||||||
|
|
||||||
|
const { Op } = require('sequelize');
|
||||||
|
|
||||||
|
class ContestService extends Service {
|
||||||
|
async loginUser(name) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { account_name: name };
|
||||||
|
const result = await ctx.model4.Account.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUser(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const attributes = ['account_name', 'status'];
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model4.Account.findOne({ attributes, where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async editUserManager(editMsg, userMsg) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
delete userMsg.location;
|
||||||
|
const where = { ...userMsg };
|
||||||
|
const result = await ctx.model4.Account.update(editMsg, { where });
|
||||||
|
return result[0] == 0 ? false : result;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUserManager";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async editUser(userMsg, uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model4.Account.update(userMsg, { where });
|
||||||
|
return result[0] == 0 ? false : result;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async uidfinder(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model4.Account.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "uidfinder";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async changePassword(uid, oldPassword, newPassword) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
const setPassword = this.shaForm(newPassword, salt);
|
||||||
|
const result = await ctx.model4.Account.findOne({ where });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(oldPassword, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const resultList = await ctx.model4.Account.update({ salt: this.encryptRequest(salt), status: 1, password: setPassword }, { where });
|
||||||
|
return resultList[0] == 0 ? false : resultList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "changePassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async resetPassword(uid, modelType, defaultPassword, password, body, resetType) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const managerWhere = { uid, role: [3, 6, 9] };
|
||||||
|
const result = await ctx.model3.Insiders.findOne({ where: managerWhere });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(password, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
if(defaultPassword == "") {
|
||||||
|
defaultPassword = '123456';
|
||||||
|
}
|
||||||
|
const originPassword = this.shaForm(defaultPassword, salt);
|
||||||
|
let where = {};
|
||||||
|
const organization = result.organization;
|
||||||
|
const role = { [Op.not]: 1 };
|
||||||
|
if(modelType == "single") {
|
||||||
|
where = { role, organization, ...body };
|
||||||
|
delete where.location;
|
||||||
|
} else if (modelType == "multiple") {
|
||||||
|
let account_name = [], user_name = [], phone = [];
|
||||||
|
for (const key in body) {
|
||||||
|
body[key].forEach(element => {
|
||||||
|
account_name.push(element.account_name);
|
||||||
|
user_name.push(element.user_name);
|
||||||
|
phone.push(element.phone);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
where = { role, organization, account_name, user_name, phone };
|
||||||
|
} else if (modelType == "all") {
|
||||||
|
where = { role, organization, };
|
||||||
|
}
|
||||||
|
let updateObj = { salt: this.encryptRequest(salt), status: 0, password: originPassword };
|
||||||
|
if(resetType == "default") {
|
||||||
|
updateObj.user_name = "";
|
||||||
|
updateObj.phone = "";
|
||||||
|
}
|
||||||
|
const resetList = await ctx.model4.Account.update(updateObj, { where });
|
||||||
|
return resetList.length == 0 ? false : resetList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "resetPassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loginStatus(uid, login_status) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
await ctx.model4.Account.update({ login_status }, { where });
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginStatus";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ContestService;
|
||||||
166
app/service/Exam.js
Normal file
166
app/service/Exam.js
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "Exam";
|
||||||
|
|
||||||
|
const { Op } = require('sequelize');
|
||||||
|
|
||||||
|
class ExamService extends Service {
|
||||||
|
async loginUser(phone) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { phone };
|
||||||
|
const result = await ctx.model5.Examinee.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async uidfinder(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model5.Examinee.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "uidfinder";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUser(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const attributes = ['user_name', 'identity_card', 'real_check', 'email', 'phone', 'address', 'workplace', 'status'];
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model5.Examinee.findOne({ attributes, where });
|
||||||
|
if(result.dataValues.status == 2) return false;
|
||||||
|
if(result.dataValues.real_check == 0 || result.dataValues.real_check == 2) {
|
||||||
|
const where = {
|
||||||
|
user_uid: uid,
|
||||||
|
user_name: result.dataValues.user_name,
|
||||||
|
identity_card: result.dataValues.identity_card,
|
||||||
|
};
|
||||||
|
const audit = await ctx.model5.Audit.findOne({ attributes: ['status'], where });
|
||||||
|
if (audit != null) await ctx.model5.Examinee.update({ real_check: audit.dataValues.status }, { where: { uid } });
|
||||||
|
};
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async editUser(userMsg, uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
let attributes = ['user_name', 'identity_card'];
|
||||||
|
const check = await ctx.model5.Examinee.findOne({ attributes, where });
|
||||||
|
const { user_name, identity_card } = check.dataValues;
|
||||||
|
if(user_name !== userMsg.user_name || identity_card !== userMsg.identity_card) {
|
||||||
|
userMsg.real_check = 0;
|
||||||
|
};
|
||||||
|
const audit = await ctx.model5.Audit.findOne({ where: { user_uid: uid, status: 0 } });
|
||||||
|
if(audit == null) {
|
||||||
|
const auditForm = {
|
||||||
|
user_uid: uid,
|
||||||
|
user_name: userMsg.user_name,
|
||||||
|
identity_card: userMsg.identity_card,
|
||||||
|
status: 0,
|
||||||
|
created_at: new Date(),
|
||||||
|
};
|
||||||
|
await ctx.model5.Audit.create(auditForm);
|
||||||
|
} else {
|
||||||
|
const auditUpdate = {
|
||||||
|
user_name: userMsg.user_name,
|
||||||
|
identity_card: userMsg.identity_card,
|
||||||
|
created_at: new Date(),
|
||||||
|
}
|
||||||
|
await ctx.model5.Audit.update(auditUpdate, { where: { user_uid: uid, status: 0 } });
|
||||||
|
}
|
||||||
|
const result = await ctx.model5.Examinee.update(userMsg, { where });
|
||||||
|
return result[0] == 0 ? false : result;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async changePassword(uid, oldPassword, newPassword) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
const setPassword = this.shaForm(newPassword, salt);
|
||||||
|
const result = await ctx.model5.Examinee.findOne({ where });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(oldPassword, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const resultList = await ctx.model5.Examinee.update({ salt: this.encryptRequest(salt), status: 1, password: setPassword }, { where });
|
||||||
|
return resultList[0] == 0 ? false : resultList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "changePassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async resetPassword(uid, modelType, defaultPassword, password, body, resetType) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const result = await ctx.model5.Examinee.findOne({ where: { uid, role: [6, 9] } });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(password, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
if(defaultPassword == "") {
|
||||||
|
defaultPassword = '123456';
|
||||||
|
}
|
||||||
|
const originPassword = this.shaForm(defaultPassword, salt);
|
||||||
|
let where = {}, role;
|
||||||
|
if(result.dataValues.password == 9) {
|
||||||
|
role = { [Op.not]: [9] };
|
||||||
|
} else {
|
||||||
|
role = { [Op.not]: [6, 9] };
|
||||||
|
}
|
||||||
|
if(modelType == "single") {
|
||||||
|
where = { role, ...body };
|
||||||
|
} else if (modelType == "multiple") {
|
||||||
|
let user_name = [], phone = [];
|
||||||
|
for (const key in body) {
|
||||||
|
body[key].forEach(element => {
|
||||||
|
user_name.push(element.user_name);
|
||||||
|
phone.push(element.phone);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
where = { role, user_name, phone };
|
||||||
|
} else if (modelType == "all") {
|
||||||
|
where = { role };
|
||||||
|
}
|
||||||
|
const resetList = await ctx.model5.Examinee.update({ salt: this.encryptRequest(salt), status: 0, password: originPassword }, { where });
|
||||||
|
return resetList.length == 0 ? false : resetList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "resetPassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loginStatus(uid, login_status) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
await ctx.model5.Examinee.update({ login_status }, { where });
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginStatus";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ExamService;
|
||||||
133
app/service/ExamManager.js
Normal file
133
app/service/ExamManager.js
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "ExamManager";
|
||||||
|
|
||||||
|
const { Op } = require('sequelize');
|
||||||
|
|
||||||
|
class ExamManagerService extends Service {
|
||||||
|
async loginUser(name) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { account_name: name };
|
||||||
|
const result = await ctx.model5.Manager.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async uidfinder(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model5.Manager.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "uidfinder";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUser(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const attributes = ['account_name', 'role', 'status'];
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model5.Manager.findOne({ attributes, where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async editUser(userMsg, uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model5.Manager.update(userMsg, { where });
|
||||||
|
return result[0] == 0 ? false : result;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async changePassword(uid, oldPassword, newPassword) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
const setPassword = this.shaForm(newPassword, salt);
|
||||||
|
const result = await ctx.model5.Manager.findOne({ where });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(oldPassword, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const resultList = await ctx.model5.Manager.update({ salt: this.encryptRequest(salt), status: 1, password: setPassword }, { where });
|
||||||
|
return resultList[0] == 0 ? false : resultList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "changePassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async resetPassword(uid, modelType, defaultPassword, password, body, resetType) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const result = await ctx.model5.Manager.findOne({ where: { uid, role: [6, 9] } });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(password, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
if(defaultPassword == "") {
|
||||||
|
defaultPassword = '123456';
|
||||||
|
}
|
||||||
|
const originPassword = this.shaForm(defaultPassword, salt);
|
||||||
|
let where = {}, role;
|
||||||
|
if(result.dataValues.password == 9) {
|
||||||
|
role = { [Op.not]: [9] };
|
||||||
|
} else {
|
||||||
|
role = { [Op.not]: [6, 9] };
|
||||||
|
}
|
||||||
|
if(modelType == "single") {
|
||||||
|
where = { role, ...body };
|
||||||
|
} else if (modelType == "multiple") {
|
||||||
|
let account_name = [], user_name = [], phone = [];
|
||||||
|
for (const key in body) {
|
||||||
|
body[key].forEach(element => {
|
||||||
|
account_name.push(element.account_name);
|
||||||
|
user_name.push(element.user_name);
|
||||||
|
phone.push(element.phone);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
where = { role, account_name, user_name, phone };
|
||||||
|
} else if (modelType == "all") {
|
||||||
|
where = { role };
|
||||||
|
}
|
||||||
|
const resetList = await ctx.model5.Manager.update({ salt: this.encryptRequest(salt), status: 0, password: originPassword }, { where });
|
||||||
|
return resetList.length == 0 ? false : resetList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "resetPassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loginStatus(uid, login_status) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
await ctx.model5.Manager.update({ login_status }, { where });
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginStatus";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ExamManagerService;
|
||||||
75
app/service/Id2MVService.js
Normal file
75
app/service/Id2MVService.js
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "Id2MVService";
|
||||||
|
|
||||||
|
const Cloudauth20190307 = require('@alicloud/cloudauth20190307');
|
||||||
|
const OpenApi = require('@alicloud/openapi-client');
|
||||||
|
const Util = require('@alicloud/tea-util');
|
||||||
|
|
||||||
|
class Client {
|
||||||
|
static createClient() {
|
||||||
|
let config = new OpenApi.Config({
|
||||||
|
// 凭证类型。
|
||||||
|
// type: 'access_key',
|
||||||
|
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
|
||||||
|
accessKeyId: "LTAI5tM3QC6kY4r23sWnsvuY",
|
||||||
|
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
|
||||||
|
accessKeySecret: "Lj9QTWVMJSTAffscjykhaKZt7RN0Xh",
|
||||||
|
// 访问的地域
|
||||||
|
// regionId: 'cn-beijing'
|
||||||
|
});
|
||||||
|
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
|
||||||
|
// 访问的地址
|
||||||
|
config.endpoint = `cloudauth.cn-beijing.aliyuncs.com`;
|
||||||
|
return new Cloudauth20190307.default(config);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Id2MVServiceService extends Service {
|
||||||
|
// 身份二要素核验
|
||||||
|
async checkIdCard(idCard, name) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
let client = Client.createClient();
|
||||||
|
// 创建请求对象并设置入参
|
||||||
|
let id2MetaVerifyRequest = new Cloudauth20190307.Id2MetaVerifyRequest({
|
||||||
|
paramType: "md5",
|
||||||
|
identifyNum: idCard.substring(0, 6) + this.calculateMD5(idCard.substring(6, 14)) + idCard.substring(14),
|
||||||
|
userName: this.calculateMD5(name.substring(0, 1)) + name.substring(1),
|
||||||
|
});
|
||||||
|
// 创建运行时配置对象
|
||||||
|
let runtime = new Util.RuntimeOptions({});
|
||||||
|
runtime.readTimeout = 5000;
|
||||||
|
runtime.connectTimeout = 5000;
|
||||||
|
// 发起请求
|
||||||
|
const response = await client.id2MetaVerifyWithOptions(id2MetaVerifyRequest, runtime);
|
||||||
|
const { code, data } = response.body;
|
||||||
|
if(code == "OK" && data.isConsistent == "1") return { status: 1, msg: "姓名与身份证信息核验一致" };
|
||||||
|
if(code == "OK" && data.isConsistent == "2") return { status: 2, msg: "姓名与身份证信息核验不一致" };
|
||||||
|
if(code == "OK" && data.isConsistent == "3") return { status: 3, msg: "查无此人" };
|
||||||
|
} catch (error) {
|
||||||
|
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
|
||||||
|
// 错误 message
|
||||||
|
// console.log('1===========================================')
|
||||||
|
// console.log(error.message);
|
||||||
|
// 若捕捉到 ConnectTimeout 错误,则尝试重发
|
||||||
|
if(error.message.includes("ConnectTimeout")) return { status: 600, msg: "尝试重新核验" };
|
||||||
|
// console.log('2===========================================')
|
||||||
|
// 诊断地址
|
||||||
|
console.log(error);
|
||||||
|
// console.log('3===========================================')
|
||||||
|
// console.log(error.data);
|
||||||
|
// console.log('4===========================================')
|
||||||
|
// console.log(error.data["Recommend"]);
|
||||||
|
// Util.default.assertAsString(error.message);
|
||||||
|
|
||||||
|
const blockName = fileName + "--" + "checkIdCard";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Id2MVServiceService;
|
||||||
133
app/service/Insiders.js
Normal file
133
app/service/Insiders.js
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "Insiders";
|
||||||
|
|
||||||
|
const { Op } = require('sequelize');
|
||||||
|
|
||||||
|
class InsidersService extends Service {
|
||||||
|
async loginUser(name) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { name };
|
||||||
|
const result = await ctx.model3.Insiders.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async uidfinder(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model3.Insiders.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "uidfinder";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getUser(uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const attributes = ['status', 'role', 'name', 'department'];
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model3.Insiders.findOne({ attributes, where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async editUser(userMsg, uid) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const result = await ctx.model3.Insiders.update(userMsg, { where });
|
||||||
|
return result[0] == 0 ? false : result;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "editUser";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async changePassword(uid, oldPassword, newPassword) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
const setPassword = this.shaForm(newPassword, salt);
|
||||||
|
const result = await ctx.model3.Insiders.findOne({ where });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(oldPassword, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const resultList = await ctx.model3.Insiders.update({ salt: this.encryptRequest(salt), status: 1, password: setPassword }, { where });
|
||||||
|
return resultList[0] == 0 ? false : resultList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "changePassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async resetPassword(uid, modelType, defaultPassword, password, body, resetType) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const result = await ctx.model3.Insiders.findOne({ where: { uid, role: [6, 9] } });
|
||||||
|
if(!result || result.dataValues.status == 2 || result.dataValues.password !== this.shaForm(password, this.decryptRequest(result.dataValues.salt))) return false;
|
||||||
|
const salt = this.generateRandomString();
|
||||||
|
if(defaultPassword == "") {
|
||||||
|
defaultPassword = '123456';
|
||||||
|
}
|
||||||
|
const originPassword = this.shaForm(defaultPassword, salt);
|
||||||
|
let where = {}, role;
|
||||||
|
if(result.dataValues.password == 9) {
|
||||||
|
role = { [Op.not]: [9] };
|
||||||
|
} else {
|
||||||
|
role = { [Op.not]: [6, 9] };
|
||||||
|
}
|
||||||
|
if(modelType == "single") {
|
||||||
|
where = { role, ...body };
|
||||||
|
} else if (modelType == "multiple") {
|
||||||
|
let account_name = [], user_name = [], phone = [];
|
||||||
|
for (const key in body) {
|
||||||
|
body[key].forEach(element => {
|
||||||
|
account_name.push(element.account_name);
|
||||||
|
user_name.push(element.user_name);
|
||||||
|
phone.push(element.phone);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
where = { role, account_name, user_name, phone };
|
||||||
|
} else if (modelType == "all") {
|
||||||
|
where = { role };
|
||||||
|
}
|
||||||
|
const resetList = await ctx.model3.Insiders.update({ salt: this.encryptRequest(salt), status: 0, password: originPassword }, { where });
|
||||||
|
return resetList.length == 0 ? false : resetList;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "resetPassword";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loginStatus(uid, login_status) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const where = { uid };
|
||||||
|
await ctx.model.BSide.update({ login_status }, { where });
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginStatus";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = InsidersService;
|
||||||
108
app/service/SMSService.js
Normal file
108
app/service/SMSService.js
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "SMSService";
|
||||||
|
|
||||||
|
const Dysmsapi20170525 = require('@alicloud/dysmsapi20170525');
|
||||||
|
const OpenApi = require('@alicloud/openapi-client');
|
||||||
|
const Util = require('@alicloud/tea-util');
|
||||||
|
|
||||||
|
class Client {
|
||||||
|
static createClient() {
|
||||||
|
let config = new OpenApi.Config({
|
||||||
|
// 凭证类型。
|
||||||
|
// type: 'access_key',
|
||||||
|
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
|
||||||
|
accessKeyId: "LTAI5tM3QC6kY4r23sWnsvuY",
|
||||||
|
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
|
||||||
|
accessKeySecret: "Lj9QTWVMJSTAffscjykhaKZt7RN0Xh",
|
||||||
|
// 访问的地域
|
||||||
|
// regionId: 'cn-beijing'
|
||||||
|
});
|
||||||
|
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
|
||||||
|
// 访问的地址
|
||||||
|
config.endpoint = `dysmsapi.aliyuncs.com`;
|
||||||
|
return new Dysmsapi20170525.default(config);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SMSServiceService extends Service {
|
||||||
|
// 向手机发送短信验证码
|
||||||
|
async sendSMS(phone) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const code = this.generateCodeString();
|
||||||
|
const mark = await ctx.app.redis.get('db3').get(phone);
|
||||||
|
if(mark == null) await ctx.app.redis.get('db3').set(phone, JSON.stringify({ status: 0 }), 'EX', 600);
|
||||||
|
let client = Client.createClient();
|
||||||
|
// 创建请求对象并设置入参
|
||||||
|
let sendSmsRequest = new Dysmsapi20170525.SendSmsRequest({
|
||||||
|
phoneNumbers: phone,
|
||||||
|
// signName: "身份验证",
|
||||||
|
// templateCode: "SMS_480180061",
|
||||||
|
// signName: "登录验证",
|
||||||
|
// templateCode: "SMS_487315107",
|
||||||
|
signName: "华云智联",
|
||||||
|
templateCode: "SMS_487315108",
|
||||||
|
// signName: "北京华云智联",
|
||||||
|
// templateCode: "SMS_487350086",
|
||||||
|
// signName: "北京华云智联科技",
|
||||||
|
// templateCode: "SMS_487410093",
|
||||||
|
templateParam: `{\"code\":\"${code}\"}`,
|
||||||
|
});
|
||||||
|
// 创建运行时配置对象
|
||||||
|
let runtime = new Util.RuntimeOptions({});
|
||||||
|
runtime.readTimeout = 5000;
|
||||||
|
runtime.connectTimeout = 5000;
|
||||||
|
// 发起请求
|
||||||
|
const response = await client.sendSmsWithOptions(sendSmsRequest, runtime);
|
||||||
|
if(response.body.code == "OK") {
|
||||||
|
await ctx.app.redis.get('db3').set(code, phone.toString(), 'EX', 600);
|
||||||
|
return { status: 200, msg: "验证码发送成功" };
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
|
||||||
|
// 错误 message
|
||||||
|
// console.log('1===========================================')
|
||||||
|
// console.log(error.message);
|
||||||
|
// 若捕捉到 ConnectTimeout 错误,则尝试重发
|
||||||
|
if(error.message.includes("ConnectTimeout")) return { status: 600, msg: "尝试重新核验" };
|
||||||
|
// console.log('2===========================================')
|
||||||
|
// 诊断地址
|
||||||
|
console.log(error);
|
||||||
|
// console.log('3===========================================')
|
||||||
|
// console.log(error.data);
|
||||||
|
// console.log('4===========================================')
|
||||||
|
// console.log(error.data["Recommend"]);
|
||||||
|
// Util.default.assertAsString(error.message);
|
||||||
|
|
||||||
|
const blockName = fileName + "--" + "sendSMS";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验短信验证码
|
||||||
|
async checkCode(phone, code) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
const phoneResult = await ctx.app.redis.get('db3').get(phone);
|
||||||
|
if (phoneResult == null) await ctx.app.redis.get('db3').set(phone, JSON.stringify({ status: 0 }), 'EX', 600);
|
||||||
|
else if (JSON.parse(phoneResult).status == '1') return true;
|
||||||
|
const check = await ctx.app.redis.get('db3').get(code);
|
||||||
|
if (check == null || check != phone) return false;
|
||||||
|
await ctx.app.redis.get('db3').del(code);
|
||||||
|
let remainder = await ctx.app.redis.get('db3').ttl(phone);
|
||||||
|
if (remainder < 60) remainder = 600;
|
||||||
|
await ctx.app.redis.get('db3').set(phone, JSON.stringify({ status: 1 }), 'EX', remainder);
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "checkCode";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = SMSServiceService;
|
||||||
84
app/service/verify.js
Normal file
84
app/service/verify.js
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const Service = require('../core/base_service');
|
||||||
|
|
||||||
|
const fileName = "verify";
|
||||||
|
|
||||||
|
// const sha256 = require("crypto-js/sha256");
|
||||||
|
|
||||||
|
const { Op } = require("sequelize");
|
||||||
|
|
||||||
|
class VerifyService extends Service {
|
||||||
|
async toLogin(origin_url) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
// const temporary = sha256(sha256(this.generateRandomString()).toString()+'temporary').toString();
|
||||||
|
// Op.regexp 正则匹配,适用于不同端用户登录同一域名的网站
|
||||||
|
// await ctx.model.Business.update({ temporary_id: temporary }, { where: { client_url: { [Op.regexp]: origin_url } } });
|
||||||
|
// const result = await ctx.model.Business.findOne({ where: { client_url: { [Op.regexp]: origin_url } } });
|
||||||
|
// Op.startsWith 包含,适用于不同端用户登录不同域名网站
|
||||||
|
// await ctx.model.Business.update({ temporary_id: temporary }, { where: { client_url: { [Op.startsWith]: origin_url } } });
|
||||||
|
const where = { client_url: { [Op.startsWith]: origin_url } };
|
||||||
|
const result = await ctx.model3.Business.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "toLogin";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loginClient(client_id) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
let checkFixedClient = false;
|
||||||
|
ctx.app.config.fixedClient.forEach(element => {
|
||||||
|
if (client_id == element) checkFixedClient = true;
|
||||||
|
});
|
||||||
|
if (checkFixedClient) {
|
||||||
|
return {
|
||||||
|
dataValues: {
|
||||||
|
client_id,
|
||||||
|
client_secret: client_id
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
const where = { temporary_id: client_id };
|
||||||
|
const result = await ctx.model3.Business.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "loginClient";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getToken(client_id) {
|
||||||
|
const { ctx } = this;
|
||||||
|
try {
|
||||||
|
let checkFixedClient = false;
|
||||||
|
ctx.app.config.fixedClient.forEach(element => {
|
||||||
|
if (client_id == element) checkFixedClient = true;
|
||||||
|
});
|
||||||
|
if (checkFixedClient) {
|
||||||
|
return {
|
||||||
|
dataValues: {
|
||||||
|
client_id,
|
||||||
|
client_secret: client_id
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
const where = { client_id };
|
||||||
|
const result = await ctx.model3.Business.findOne({ where });
|
||||||
|
return result || false;
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
const blockName = fileName + "--" + "getToken";
|
||||||
|
ctx.app.middleware.log('../../serviceLog', blockName + ">>>>" + error);
|
||||||
|
return 'error';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = VerifyService;
|
||||||
57
app/view/index.html
Normal file
57
app/view/index.html
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||||
|
<title>OAuth Account Login Page</title>
|
||||||
|
<!-- Bootstrap CDN-->
|
||||||
|
<!-- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
|
||||||
|
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> -->
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1><%= title %></h1>
|
||||||
|
<!-- 用户点击「登录」按钮时,此页面发起 POST /users/authorize?{{query}} 请求并获取授权码-->
|
||||||
|
<!-- 此时,会调用 OAuth 服务器实现的该路由接口,验证客户端和用户身份后,创建并返回授权码-->
|
||||||
|
<!-- app.all('/users/authorize', app.oAuth2Server.authorize()); // 获取授权码-->
|
||||||
|
<!-- 此模式下,授权码会通过重定向 URL 返回给客户端-->
|
||||||
|
<!-- 授权码模式需要的信息:username,password,client_secret -->
|
||||||
|
<!-- 密码模式需要的信息:username,password,client_secret,grant_type,client_id -->
|
||||||
|
<!-- 客户端模式需要的信息:refresh_token -->
|
||||||
|
<!-- 刷新token模式需要的信息:client_secret,grant_type,client_id,refresh_token -->
|
||||||
|
<!-- 授权码模式访问:/user/authorize -->
|
||||||
|
<form action="/user/authorize?<%=query%>" method="post">
|
||||||
|
<!-- 密码模式,客户端模式,刷新token模式访问:/user/token -->
|
||||||
|
<!-- <form action="/user/token?<%=query%>" method="post"> -->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="username">用户名</label>
|
||||||
|
<input type="text" class="form-control" id="username" name='username'>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="password">密码</label>
|
||||||
|
<input type="password" class="form-control" id="password" name='password'>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="client_secret">client_secret</label>
|
||||||
|
<input type="text" class="form-control" id="client_secret" name='client_secret'>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="grant_type">grant_type</label>
|
||||||
|
<input type="text" class="form-control" id="grant_type" name='grant_type'>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="client_id">client_id</label>
|
||||||
|
<input type="text" class="form-control" id="client_id" name='client_id'>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="refresh_token">refresh_token</label>
|
||||||
|
<input type="text" class="form-control" id="refresh_token" name='refresh_token'>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-primary">登录</button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
244
config/config.default.js
Normal file
244
config/config.default.js
Normal file
@@ -0,0 +1,244 @@
|
|||||||
|
/* eslint valid-jsdoc: "off" */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Egg.EggAppInfo} appInfo app info
|
||||||
|
*/
|
||||||
|
module.exports = appInfo => {
|
||||||
|
/**
|
||||||
|
* built-in config
|
||||||
|
* @type {Egg.EggAppConfig}
|
||||||
|
**/
|
||||||
|
const config = exports = {};
|
||||||
|
|
||||||
|
// use for cookie sign key, should change to your own and keep security
|
||||||
|
config.keys = appInfo.name + '_1715070357590_9945';
|
||||||
|
|
||||||
|
// add your middleware config here
|
||||||
|
// config.middleware = [];
|
||||||
|
|
||||||
|
config.security = {
|
||||||
|
csrf: {
|
||||||
|
enable: false
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
config.jwt = {
|
||||||
|
secret: "authentication"
|
||||||
|
};
|
||||||
|
|
||||||
|
config.oAuth2Server = {
|
||||||
|
debug: true,
|
||||||
|
grants: ['password', 'client_credentials', 'authorization_code', 'refresh_token'],
|
||||||
|
};
|
||||||
|
|
||||||
|
config.fixedClient = ["insiders-manager", "exam", "exam-manager"];
|
||||||
|
|
||||||
|
config.redis = {
|
||||||
|
// 开发/测试环境
|
||||||
|
clients: {
|
||||||
|
db0: {
|
||||||
|
port: 6379,
|
||||||
|
host: '127.0.0.1',
|
||||||
|
password: '74191221',
|
||||||
|
db: 0,
|
||||||
|
},
|
||||||
|
db1: {
|
||||||
|
port: 6379,
|
||||||
|
host: '127.0.0.1',
|
||||||
|
password: '74191221',
|
||||||
|
db: 1,
|
||||||
|
},
|
||||||
|
db2: {
|
||||||
|
port: 6379,
|
||||||
|
host: '127.0.0.1',
|
||||||
|
password: '74191221',
|
||||||
|
db: 2,
|
||||||
|
},
|
||||||
|
db3: {
|
||||||
|
port: 6379,
|
||||||
|
host: '127.0.0.1',
|
||||||
|
password: '74191221',
|
||||||
|
db: 3,
|
||||||
|
},
|
||||||
|
db5: {
|
||||||
|
port: 6379,
|
||||||
|
host: '127.0.0.1',
|
||||||
|
password: '74191221',
|
||||||
|
db: 5,
|
||||||
|
},
|
||||||
|
db6: {
|
||||||
|
port: 6379,
|
||||||
|
host: '127.0.0.1',
|
||||||
|
password: '74191221',
|
||||||
|
db: 6,
|
||||||
|
},
|
||||||
|
db7: {
|
||||||
|
port: 6379,
|
||||||
|
host: '127.0.0.1',
|
||||||
|
password: '74191221',
|
||||||
|
db: 7,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 生产环境
|
||||||
|
// clients: {
|
||||||
|
// db0: {
|
||||||
|
// port: 6379,
|
||||||
|
// host: '127.0.0.1',
|
||||||
|
// password: 'bd3@htcc2023',
|
||||||
|
// db: 2,
|
||||||
|
// },
|
||||||
|
// db1: {
|
||||||
|
// port: 6379,
|
||||||
|
// host: '127.0.0.1',
|
||||||
|
// password: 'bd3@htcc2023',
|
||||||
|
// db: 3,
|
||||||
|
// },
|
||||||
|
// db2: {
|
||||||
|
// port: 6379,
|
||||||
|
// host: '127.0.0.1',
|
||||||
|
// password: 'bd3@htcc2023',
|
||||||
|
// db: 4,
|
||||||
|
// },
|
||||||
|
// db3: {
|
||||||
|
// port: 6379,
|
||||||
|
// host: '127.0.0.1',
|
||||||
|
// password: 'bd3@htcc2023',
|
||||||
|
// db: 5,
|
||||||
|
// },
|
||||||
|
// db5: {
|
||||||
|
// port: 6379,
|
||||||
|
// host: '127.0.0.1',
|
||||||
|
// password: 'bd3@htcc2023',
|
||||||
|
// db: 7,
|
||||||
|
// },
|
||||||
|
// db6: {
|
||||||
|
// port: 6379,
|
||||||
|
// host: '127.0.0.1',
|
||||||
|
// password: 'bd3@htcc2023',
|
||||||
|
// db: 8,
|
||||||
|
// },
|
||||||
|
// db7: {
|
||||||
|
// port: 6379,
|
||||||
|
// host: '127.0.0.1',
|
||||||
|
// password: 'bd3@htcc2023',
|
||||||
|
// db: 9,
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
};
|
||||||
|
|
||||||
|
config.sequelize = {
|
||||||
|
// 开发/测试环境
|
||||||
|
datasources: [
|
||||||
|
{
|
||||||
|
dialect: 'mariadb',
|
||||||
|
host: 'localhost',
|
||||||
|
port: 3306,
|
||||||
|
username: 'root',
|
||||||
|
password: '74191221',
|
||||||
|
database: 'bside',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dialect: 'mariadb',
|
||||||
|
host: 'localhost',
|
||||||
|
port: 3306,
|
||||||
|
username: 'root',
|
||||||
|
password: '74191221',
|
||||||
|
database: 'cside',
|
||||||
|
delegate: 'model2',
|
||||||
|
baseDir: 'model2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dialect: 'mariadb',
|
||||||
|
host: 'localhost',
|
||||||
|
port: 3306,
|
||||||
|
username: 'root',
|
||||||
|
password: '74191221',
|
||||||
|
database: 'insiders',
|
||||||
|
delegate: 'model3',
|
||||||
|
baseDir: 'model3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dialect: 'mariadb',
|
||||||
|
host: 'localhost',
|
||||||
|
port: 3306,
|
||||||
|
username: 'root',
|
||||||
|
password: '74191221',
|
||||||
|
database: 'bdContest',
|
||||||
|
delegate: 'model4',
|
||||||
|
baseDir: 'model4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
dialect: 'mariadb',
|
||||||
|
host: 'localhost',
|
||||||
|
port: 3306,
|
||||||
|
username: 'root',
|
||||||
|
password: '74191221',
|
||||||
|
database: 'bdTrainingExam',
|
||||||
|
delegate: 'model5',
|
||||||
|
baseDir: 'model5',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
// 生产环境
|
||||||
|
// datasources: [
|
||||||
|
// {
|
||||||
|
// dialect: 'mariadb',
|
||||||
|
// host: 'localhost',
|
||||||
|
// port: 3306,
|
||||||
|
// username: 'bdqh_platform',
|
||||||
|
// password: '124689@XXxx',
|
||||||
|
// database: 'bside',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// dialect: 'mariadb',
|
||||||
|
// host: 'localhost',
|
||||||
|
// port: 3306,
|
||||||
|
// username: 'bdqh_platform',
|
||||||
|
// password: '124689@XXxx',
|
||||||
|
// database: 'cside',
|
||||||
|
// delegate: 'model2',
|
||||||
|
// baseDir: 'model2',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// dialect: 'mariadb',
|
||||||
|
// host: 'localhost',
|
||||||
|
// port: 3306,
|
||||||
|
// username: 'bdqh_platform',
|
||||||
|
// password: '124689@XXxx',
|
||||||
|
// database: 'insiders',
|
||||||
|
// delegate: 'model3',
|
||||||
|
// baseDir: 'model3',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// dialect: 'mariadb',
|
||||||
|
// host: 'localhost',
|
||||||
|
// port: 3306,
|
||||||
|
// username: 'bdqh_platform',
|
||||||
|
// password: '124689@XXxx',
|
||||||
|
// database: 'bdContest',
|
||||||
|
// delegate: 'model4',
|
||||||
|
// baseDir: 'model4',
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// dialect: 'mariadb',
|
||||||
|
// host: 'localhost',
|
||||||
|
// port: 3306,
|
||||||
|
// username: 'bdqh_platform',
|
||||||
|
// password: '124689@XXxx',
|
||||||
|
// database: 'bdTrainingExam',
|
||||||
|
// delegate: 'model5',
|
||||||
|
// baseDir: 'model5',
|
||||||
|
// }
|
||||||
|
// ]
|
||||||
|
};
|
||||||
|
|
||||||
|
// add your user config here
|
||||||
|
const userConfig = {
|
||||||
|
// myAppName: 'egg',
|
||||||
|
salt: 'authentication'
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
...config,
|
||||||
|
...userConfig,
|
||||||
|
};
|
||||||
|
};
|
||||||
42
config/plugin.js
Normal file
42
config/plugin.js
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
/** @type Egg.EggPlugin */
|
||||||
|
module.exports = {
|
||||||
|
// had enabled by egg
|
||||||
|
// static: {
|
||||||
|
// enable: true,
|
||||||
|
// }
|
||||||
|
|
||||||
|
CryptoJS : {
|
||||||
|
enable: true,
|
||||||
|
package: 'crypto-js',
|
||||||
|
},
|
||||||
|
|
||||||
|
jwt : {
|
||||||
|
enable: true,
|
||||||
|
package: 'egg-jwt',
|
||||||
|
},
|
||||||
|
|
||||||
|
oAuth2Server: {
|
||||||
|
enable: true,
|
||||||
|
package: 'egg-oauth2-server',
|
||||||
|
},
|
||||||
|
|
||||||
|
redis : {
|
||||||
|
enable: true,
|
||||||
|
package: 'egg-redis',
|
||||||
|
},
|
||||||
|
|
||||||
|
sequelize : {
|
||||||
|
enable: true,
|
||||||
|
package: 'egg-sequelize',
|
||||||
|
},
|
||||||
|
|
||||||
|
validate : {
|
||||||
|
enable: true,
|
||||||
|
package: 'egg-validate',
|
||||||
|
},
|
||||||
|
|
||||||
|
NodeRsa : {
|
||||||
|
enable: true,
|
||||||
|
package: 'node-rsa',
|
||||||
|
},
|
||||||
|
};
|
||||||
4
controllerLog/2024/10/18.txt
Normal file
4
controllerLog/2024/10/18.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[2024-10-18>>>9:20:26]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-18>>>9:20:34]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-18>>>9:21:7]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-18>>>9:22:22]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
5
controllerLog/2024/10/23.txt
Normal file
5
controllerLog/2024/10/23.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[2024-10-23>>>17:38:52]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-23>>>17:39:47]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-23>>>17:40:10]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-23>>>17:41:22]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-23>>>17:41:44]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
26
controllerLog/2024/10/24.txt
Normal file
26
controllerLog/2024/10/24.txt
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
[2024-10-24>>>9:42:35]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>9:44:14]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>9:44:41]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>9:51:25]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>9:52:29]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>9:53:25]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>9:54:47]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>9:59:32]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>9:59:57]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>10:0:23]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>10:0:47]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>10:1:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:1:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:1:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:1:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:1:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:9:55]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-24>>>10:43:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:43:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:43:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:43:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>10:43:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>11:18:46]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>11:26:56]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-24>>>11:47:1]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'client_id')
|
||||||
|
[2024-10-24>>>11:48:44]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'client_id')
|
||||||
4
controllerLog/2024/10/25.txt
Normal file
4
controllerLog/2024/10/25.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[2024-10-25>>>14:55:21]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-25>>>14:55:24]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-25>>>14:55:50]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-25>>>14:56:39]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
12
controllerLog/2024/10/29.txt
Normal file
12
controllerLog/2024/10/29.txt
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[2024-10-29>>>10:10:38]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-29>>>10:20:11]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-29>>>10:27:1]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-29>>>10:28:2]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-29>>>10:28:45]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-29>>>10:32:3]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-29>>>10:35:2]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-29>>>10:36:11]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-29>>>10:50:9]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-29>>>17:28:27]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-29>>>17:28:33]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-29>>>17:29:13]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
25
controllerLog/2024/10/31.txt
Normal file
25
controllerLog/2024/10/31.txt
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[2024-10-31>>>15:16:25]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-31>>>15:16:32]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-31>>>15:17:14]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-31>>>15:17:37]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-31>>>15:54:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:34]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:37]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:39]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:43]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:48]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:51]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:54]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:54:59]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:1]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:6]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:8]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:10]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:12]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:14]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:16]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-31>>>15:55:35]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-10-31>>>15:55:46]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
73
controllerLog/2024/10/8.txt
Normal file
73
controllerLog/2024/10/8.txt
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
[2024-10-8>>>15:19:28]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>15:19:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>15:19:54]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>15:40:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>15:43:38]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:2:59]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:5:8]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:5:9]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:6:11]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:18:59]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:20:46]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:28:15]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:28:15]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:28:58]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:28:58]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:32:21]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:32:21]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:34:9]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:34:9]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:35:52]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:35:52]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:37:21]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:37:22]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:9]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:10]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:10]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:11]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:12]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:13]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:14]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:14]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:15]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:16]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:17]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:18]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:18]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:19]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:20]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>16:38:21]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:2]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-8>>>17:9:32]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:32]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:33]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:34]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:34]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:35]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:36]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:36]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:37]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:38]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:39]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:40]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:40]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:41]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:42]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:43]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:44]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:45]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:45]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:46]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:47]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:48]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:49]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:49]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:9:50]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-10-8>>>17:13:14]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-8>>>17:13:14]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-10-8>>>17:13:25]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'uidfinder')
|
||||||
|
[2024-10-8>>>17:13:26]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'uidfinder')
|
||||||
|
[2024-10-8>>>17:13:27]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'uidfinder')
|
||||||
|
[2024-10-8>>>17:13:28]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'uidfinder')
|
||||||
|
[2024-10-8>>>17:13:29]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'uidfinder')
|
||||||
1
controllerLog/2024/10/9.txt
Normal file
1
controllerLog/2024/10/9.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2024-10-9>>>14:45:31]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
2
controllerLog/2024/11/12.txt
Normal file
2
controllerLog/2024/11/12.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[2024-11-12>>>9:24:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-12>>>9:24:16]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
7
controllerLog/2024/11/15.txt
Normal file
7
controllerLog/2024/11/15.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[2024-11-15>>>9:56:46]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-15>>>9:56:56]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-15>>>9:57:23]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-15>>>9:58:8]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-15>>>9:58:48]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-15>>>9:59:4]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-15>>>16:38:39]>>>BSide--editUserManager>>>>ReferenceError: checkUid is not defined
|
||||||
7
controllerLog/2024/11/19.txt
Normal file
7
controllerLog/2024/11/19.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[2024-11-19>>>9:8:29]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-19>>>9:8:30]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-19>>>9:8:31]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-19>>>9:8:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-19>>>9:8:34]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-19>>>9:8:35]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-19>>>9:8:36]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
14
controllerLog/2024/11/26.txt
Normal file
14
controllerLog/2024/11/26.txt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
[2024-11-26>>>16:55:37]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>16:56:24]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>16:56:31]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>16:56:38]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>16:57:10]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>16:58:12]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>17:5:9]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>17:6:4]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>17:6:58]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>17:7:54]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>17:10:49]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>17:16:24]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>17:24:48]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-26>>>17:26:16]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
2
controllerLog/2024/11/27.txt
Normal file
2
controllerLog/2024/11/27.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[2024-11-27>>>9:22:45]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2024-11-27>>>9:23:12]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
17
controllerLog/2024/11/5.txt
Normal file
17
controllerLog/2024/11/5.txt
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[2024-11-5>>>11:23:48]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:23:49]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:23:51]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:23:53]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:23:56]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:23:59]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:5]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:8]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:12]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:16]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:21]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:23]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:25]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-5>>>11:24:30]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
2
controllerLog/2024/11/6.txt
Normal file
2
controllerLog/2024/11/6.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[2024-11-6>>>9:0:24]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-11-6>>>9:0:27]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
3
controllerLog/2024/12/4.txt
Normal file
3
controllerLog/2024/12/4.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[2024-12-4>>>9:37:46]>>>Insiders--login>>>>TypeError: ctx.service.insiders.longinStatus is not a function
|
||||||
|
[2024-12-4>>>9:38:7]>>>Insiders--login>>>>TypeError: ctx.service.insiders.longinStatus is not a function
|
||||||
|
[2024-12-4>>>9:38:35]>>>Insiders--login>>>>TypeError: ctx.service.insiders.longinStatus is not a function
|
||||||
1
controllerLog/2024/8/19.txt
Normal file
1
controllerLog/2024/8/19.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2024-8-19>>>15:38:4]>>>TypeError: this.decryptRequest is not a function
|
||||||
1
controllerLog/2024/8/21.txt
Normal file
1
controllerLog/2024/8/21.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2024-8-21>>>16:2:45]>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
5
controllerLog/2024/8/22.txt
Normal file
5
controllerLog/2024/8/22.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[2024-8-22>>>16:37:8]>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-8-22>>>16:47:55]>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
|
[2024-8-22>>>17:7:3]>>>TypeError: Cannot read properties of undefined (reading '0')
|
||||||
|
[2024-8-22>>>17:9:49]>>>TypeError: Cannot read properties of undefined (reading '0')
|
||||||
|
[2024-8-22>>>17:10:35]>>>TypeError: Cannot read properties of undefined (reading '0')
|
||||||
4
controllerLog/2024/8/30.txt
Normal file
4
controllerLog/2024/8/30.txt
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[2024-8-30>>>14:5:9]>>>TypeError: Cannot read properties of undefined (reading '0')
|
||||||
|
[2024-8-30>>>14:5:55]>>>TypeError: Cannot read properties of undefined (reading '0')
|
||||||
|
[2024-8-30>>>14:18:1]>>>TypeError: Cannot read properties of undefined (reading '0')
|
||||||
|
[2024-8-30>>>14:32:1]>>>TypeError: Cannot read properties of undefined (reading '0')
|
||||||
8
controllerLog/2024/9/13.txt
Normal file
8
controllerLog/2024/9/13.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[2024-9-13>>>14:27:9]>>>TypeError: ctx.service.verify.uidfinder is not a function
|
||||||
|
[2024-9-13>>>14:27:16]>>>TypeError: ctx.service.verify.uidfinder is not a function
|
||||||
|
[2024-9-13>>>14:37:23]>>>Error: Malformed UTF-8 data
|
||||||
|
[2024-9-13>>>14:44:46]>>>Error: Malformed UTF-8 data
|
||||||
|
[2024-9-13>>>14:45:33]>>>Error: Malformed UTF-8 data
|
||||||
|
[2024-9-13>>>14:58:0]>>>Error: Malformed UTF-8 data
|
||||||
|
[2024-9-13>>>15:0:2]>>>Error: Malformed UTF-8 data
|
||||||
|
[2024-9-13>>>17:54:23]>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')
|
||||||
21
controllerLog/2024/9/14.txt
Normal file
21
controllerLog/2024/9/14.txt
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
[2024-9-14>>>15:49:55]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>15:57:26]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>15:57:30]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>16:3:14]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>16:3:58]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>16:7:1]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>16:20:53]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>16:34:39]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:41:54]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:42:1]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:42:44]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:42:51]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:47:27]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:47:34]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:48:12]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:48:19]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:50:10]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:50:17]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:51:3]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:51:58]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-14>>>17:52:21]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
3
controllerLog/2024/9/24.txt
Normal file
3
controllerLog/2024/9/24.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[2024-9-24>>>11:19:43]>>>ReferenceError: Cannot access 'body' before initialization
|
||||||
|
[2024-9-24>>>11:26:40]>>>ReferenceError: Cannot access 'body' before initialization
|
||||||
|
[2024-9-24>>>11:35:48]>>>ReferenceError: Cannot access 'body' before initialization
|
||||||
28
controllerLog/2024/9/25.txt
Normal file
28
controllerLog/2024/9/25.txt
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
[2024-9-25>>>15:14:25]>>>ReferenceError: Cannot access 'body' before initialization
|
||||||
|
[2024-9-25>>>15:23:50]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>15:25:37]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>15:27:5]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>15:28:23]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>15:29:6]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>15:32:6]>>>TypeError: Cannot read properties of null (reading 'clientId')
|
||||||
|
[2024-9-25>>>15:33:40]>>>TypeError: Cannot read properties of null (reading 'clientId')
|
||||||
|
[2024-9-25>>>15:35:58]>>>TypeError: Cannot read properties of null (reading 'clientId')
|
||||||
|
[2024-9-25>>>15:37:24]>>>TypeError: Cannot read properties of null (reading 'clientId')
|
||||||
|
[2024-9-25>>>15:38:0]>>>TypeError: Cannot read properties of null (reading 'clientId')
|
||||||
|
[2024-9-25>>>16:36:11]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>16:43:11]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>16:47:20]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>16:48:9]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>16:48:16]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:29:51]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:30:19]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:30:24]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:30:32]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:30:34]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:30:39]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:32:27]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:32:29]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:32:52]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:33:28]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:33:33]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2024-9-25>>>17:37:19]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
1
controllerLog/2024/9/27.txt
Normal file
1
controllerLog/2024/9/27.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2024-9-27>>>13:50:55]>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
3
controllerLog/2024/9/3.txt
Normal file
3
controllerLog/2024/9/3.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
[2024-9-3>>>17:43:8]>>>ReferenceError: ctx is not defined
|
||||||
|
[2024-9-3>>>17:45:45]>>>ReferenceError: ctx is not defined
|
||||||
|
[2024-9-3>>>17:54:22]>>>TypeError: Cannot read properties of undefined (reading 'uid')
|
||||||
1
controllerLog/2025/2/12.txt
Normal file
1
controllerLog/2025/2/12.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2025-2-12>>>16:26:35]>>>verify--unLogin>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
28
controllerLog/2025/2/13.txt
Normal file
28
controllerLog/2025/2/13.txt
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
[2025-2-13>>>9:42:26]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>10:45:5]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:19:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:30:22]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-13>>>15:30:22]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
13
controllerLog/2025/2/14.txt
Normal file
13
controllerLog/2025/2/14.txt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[2025-2-14>>>14:26:53]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>14:34:17]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>14:34:17]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>14:34:17]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:27:34]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:41:29]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:41:29]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:42:9]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:42:9]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:48:38]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:48:38]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:48:38]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-14>>>15:54:8]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
1
controllerLog/2025/2/25.txt
Normal file
1
controllerLog/2025/2/25.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2025-2-25>>>15:7:8]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
37
controllerLog/2025/2/26.txt
Normal file
37
controllerLog/2025/2/26.txt
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
[2025-2-26>>>11:39:59]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:40:8]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:45:15]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:45:19]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:47:43]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:49:49]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:50:4]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:50:54]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:51:6]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:51:38]>>>verify--unLogin>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:51:54]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:51:57]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:51:59]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:52:54]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:54:5]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:55:46]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:56:19]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:56:30]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:56:59]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>11:58:4]>>>verify--getUser>>>>TypeError: Cannot read properties of undefined (reading 'B')
|
||||||
|
[2025-2-26>>>15:48:37]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-26>>>15:51:12]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-26>>>16:0:29]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'uidfinder')
|
||||||
|
[2025-2-26>>>16:1:18]>>>verify--getMsg>>>>TypeError: Cannot read properties of undefined (reading 'uidfinder')
|
||||||
|
[2025-2-26>>>16:6:46]>>>verify--unLogin>>>>TypeError: serverType.loginStatus is not a function
|
||||||
|
[2025-2-26>>>17:37:42]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:39:30]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:41:45]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:47:8]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:47:33]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:48:6]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:49:43]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:50:24]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:53:16]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:54:50]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>17:59:49]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-26>>>18:0:39]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
20
controllerLog/2025/2/27.txt
Normal file
20
controllerLog/2025/2/27.txt
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
[2025-2-27>>>9:22:46]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:24:46]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:26:17]>>>Contest--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:30:52]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:38:41]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:38:55]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:40:35]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:47:34]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:51:7]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:52:3]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:53:37]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:56:38]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:57:6]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:58:19]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>9:59:31]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>14:17:52]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>14:30:5]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-2-27>>>17:52:22]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-2-27>>>17:59:28]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-2-27>>>17:59:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
5
controllerLog/2025/2/28.txt
Normal file
5
controllerLog/2025/2/28.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[2025-2-28>>>9:10:59]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-28>>>9:11:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-28>>>9:12:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-28>>>9:48:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-2-28>>>9:49:5]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
1
controllerLog/2025/3/11.txt
Normal file
1
controllerLog/2025/3/11.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2025-3-11>>>14:58:21]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
8
controllerLog/2025/3/12.txt
Normal file
8
controllerLog/2025/3/12.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[2025-3-12>>>11:16:53]>>>Id2MVService--checkIdCard>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-12>>>12:10:15]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-12>>>12:10:20]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-12>>>12:27:6]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-12>>>12:27:7]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-12>>>12:29:21]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-12>>>12:49:11]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-12>>>12:50:51]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
1
controllerLog/2025/3/18.txt
Normal file
1
controllerLog/2025/3/18.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2025-3-18>>>17:39:44]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
31
controllerLog/2025/3/19.txt
Normal file
31
controllerLog/2025/3/19.txt
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
[2025-3-19>>>15:46:11]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:46:15]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:48:30]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:48:33]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:48:34]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:48:43]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:48:45]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:45]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:46]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:47]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:47]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:48]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:49]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:50]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:50]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:51]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:52]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:52]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:53]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:54]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:55]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:56]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:56]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:57]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:57]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:58]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:49:59]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:51:3]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:51:11]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:53:13]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-19>>>15:53:25]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
24
controllerLog/2025/3/24.txt
Normal file
24
controllerLog/2025/3/24.txt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[2025-3-24>>>11:26:5]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:26:36]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:29:40]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:30:2]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:32:12]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:34:21]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:34:58]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:39:0]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:39:8]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:41:36]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:41:43]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:42:48]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:44:42]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:45:40]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>11:49:40]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:12:6]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:13:30]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:18:44]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:23:57]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:28:16]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:33:50]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:37:2]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:40:8]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
|
[2025-3-24>>>12:41:50]>>>CSide--login>>>>TypeError: Cannot read properties of undefined (reading 'split')
|
||||||
1
controllerLog/2025/3/25.txt
Normal file
1
controllerLog/2025/3/25.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2025-3-25>>>12:25:44]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
5
controllerLog/2025/3/26.txt
Normal file
5
controllerLog/2025/3/26.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[2025-3-26>>>9:30:3]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-26>>>11:42:44]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-26>>>11:42:46]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-26>>>11:42:48]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
|
[2025-3-26>>>14:59:34]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
30
controllerLog/2025/3/27.txt
Normal file
30
controllerLog/2025/3/27.txt
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
[2025-3-27>>>11:38:52]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>11:38:53]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>11:41:33]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>11:41:33]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>11:41:33]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>11:53:31]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>11:53:31]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>12:19:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>12:19:19]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>12:26:59]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>12:26:59]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>14:18:2]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-27>>>15:22:42]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
37
controllerLog/2025/3/28.txt
Normal file
37
controllerLog/2025/3/28.txt
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>16:50:13]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-28>>>17:56:28]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
13
controllerLog/2025/3/31.txt
Normal file
13
controllerLog/2025/3/31.txt
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[2025-3-31>>>10:22:24]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>10:22:24]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>11:29:14]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-3-31>>>14:3:54]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
19
controllerLog/2025/3/6.txt
Normal file
19
controllerLog/2025/3/6.txt
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
[2025-3-6>>>14:27:49]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>14:29:2]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>14:30:59]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>14:32:15]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>14:40:0]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>14:47:32]>>>SMSService--sendSMS>>>>TypeError: Dysmsapi20170525 is not a constructor
|
||||||
|
[2025-3-6>>>14:47:42]>>>SMSService--sendSMS>>>>TypeError: Dysmsapi20170525 is not a constructor
|
||||||
|
[2025-3-6>>>14:48:14]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>14:49:7]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>14:58:59]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>15:5:17]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>15:7:4]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>15:8:44]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>15:10:7]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>15:10:12]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>17:20:25]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>17:27:35]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>17:29:45]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-6>>>17:36:33]>>>SMSService--sendSMS>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
6
controllerLog/2025/3/7.txt
Normal file
6
controllerLog/2025/3/7.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[2025-3-7>>>11:28:57]>>>Id2MVService--checkIdCard>>>>TypeError: Cannot read properties of undefined (reading 'Recommend')
|
||||||
|
[2025-3-7>>>14:44:37]>>>CNTEVService--CNTEV>>>>ReferenceError: app is not defined
|
||||||
|
[2025-3-7>>>14:45:28]>>>CNTEVService--CNTEV>>>>ReferenceError: app is not defined
|
||||||
|
[2025-3-7>>>14:46:24]>>>CNTEVService--CNTEV>>>>ResponseTimeoutError: Response timeout for 3000ms, POST http://127.0.0.1:8011/CNTEV -1 (connected: true, keepalive socket: false, agent status: {"createSocketCount":1,"createSocketErrorCount":0,"closeSocketCount":1,"errorSocketCount":0,"timeoutSocketCount":0,"requestCount":0,"freeSockets":{},"sockets":{},"requests":{}}, socketHandledRequests: 1, socketHandledResponses: 0)
|
||||||
|
headers: {}
|
||||||
|
[2025-3-7>>>16:23:38]>>>CNTEVService--CNTEV>>>>ReferenceError: realMark is not defined
|
||||||
8
controllerLog/2025/4/15.txt
Normal file
8
controllerLog/2025/4/15.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[2025-4-15>>>17:50:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-15>>>17:50:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-15>>>17:50:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-15>>>17:50:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-15>>>17:50:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-15>>>17:50:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-15>>>17:50:19]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-15>>>17:50:20]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
28
controllerLog/2025/4/23.txt
Normal file
28
controllerLog/2025/4/23.txt
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>16:20:58]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>17:28:40]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>17:28:40]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>17:28:40]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>17:28:40]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>17:28:41]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-23>>>17:29:0]>>>ExamManager--login>>>>TypeError: Cannot read properties of undefined (reading 'status')
|
||||||
2
controllerLog/2025/4/24.txt
Normal file
2
controllerLog/2025/4/24.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[2025-4-24>>>9:57:56]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-24>>>9:57:56]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
21
controllerLog/2025/4/25.txt
Normal file
21
controllerLog/2025/4/25.txt
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
[2025-4-25>>>11:40:15]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>11:40:15]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>14:33:42]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>14:33:42]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>15:34:1]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>15:34:1]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>15:34:1]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>15:34:1]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>15:34:1]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:41:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:41:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:41:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:41:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:41:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:41:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:41:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:41:2]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:43:20]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>16:43:21]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>17:25:26]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-4-25>>>17:25:26]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
9
controllerLog/2025/5/16.txt
Normal file
9
controllerLog/2025/5/16.txt
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
[2025-5-16>>>11:47:35]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-16>>>11:47:35]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-16>>>11:47:35]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-16>>>11:47:35]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-16>>>11:47:35]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-16>>>11:47:35]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-16>>>11:47:35]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-16>>>11:47:35]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-16>>>11:47:36]>>>verify--loginStatus>>>>Error: Malformed UTF-8 data
|
||||||
15
controllerLog/2025/5/19.txt
Normal file
15
controllerLog/2025/5/19.txt
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-19>>>17:16:47]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
23
controllerLog/2025/5/20.txt
Normal file
23
controllerLog/2025/5/20.txt
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
[2025-5-20>>>10:59:39]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>16:7:41]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:3]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:4:13]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:26:50]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-20>>>17:26:50]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
24
controllerLog/2025/5/21.txt
Normal file
24
controllerLog/2025/5/21.txt
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[2025-5-21>>>9:42:6]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>10:19:27]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>10:19:27]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>10:19:27]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>10:19:27]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>10:19:27]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>10:19:27]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>11:0:46]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>11:0:46]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>11:0:46]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>11:0:46]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>12:7:27]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>14:36:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>14:36:57]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>16:8:15]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>16:28:50]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>16:28:50]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>16:28:50]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>16:30:16]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>16:36:15]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>16:37:2]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>16:37:45]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>17:24:11]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-21>>>17:55:50]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
20
controllerLog/2025/5/22.txt
Normal file
20
controllerLog/2025/5/22.txt
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
[2025-5-22>>>9:39:55]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:10:6]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:31]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:31]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>10:42:32]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>16:31:16]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>16:31:16]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>16:31:16]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>16:31:16]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-22>>>16:31:17]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
7
controllerLog/2025/5/28.txt
Normal file
7
controllerLog/2025/5/28.txt
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[2025-5-28>>>15:29:1]>>>verify--getMsg>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-28>>>15:34:18]>>>verify--getMsg>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-28>>>16:19:28]>>>verify--getMsg>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-28>>>16:33:27]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-28>>>16:33:27]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-28>>>16:33:27]>>>verify--getToken>>>>Error: Malformed UTF-8 data
|
||||||
|
[2025-5-28>>>16:33:28]>>>verify--loginStatus>>>>Error: Malformed UTF-8 data
|
||||||
2
controllerLog/2025/5/6.txt
Normal file
2
controllerLog/2025/5/6.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[2025-5-6>>>16:5:35]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
|
[2025-5-6>>>16:5:36]>>>verify--loginStatus>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
1
controllerLog/2025/5/9.txt
Normal file
1
controllerLog/2025/5/9.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[2025-5-9>>>10:12:50]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user