北斗启航科技教育平台登录系统

This commit is contained in:
2026-03-27 17:50:18 +08:00
commit bdc25653a4
215 changed files with 5299 additions and 0 deletions

1
.eslintignore Normal file
View File

@@ -0,0 +1 @@
coverage

4
.eslintrc Normal file
View File

@@ -0,0 +1,4 @@
{
"extends": "eslint-config-egg",
"root": true
}

15
.gitignore vendored Normal file
View 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
View 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
View 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
View 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;

View 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
View 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
View 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
View 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;

View 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;

View 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;

View 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;

View 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
View 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;

View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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;

View 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
View 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
View 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
View 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
View 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;

View 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
View 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
View 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
View 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
View 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
View 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
View 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',
},
};

View 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')

View 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')

View 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')

View 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')

View 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')

View 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')

View 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')

View File

@@ -0,0 +1 @@
[2024-10-9>>>14:45:31]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')

View 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')

View 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

View 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')

View 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')

View 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')

View 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')

View 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')

View 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

View File

@@ -0,0 +1 @@
[2024-8-19>>>15:38:4]>>>TypeError: this.decryptRequest is not a function

View File

@@ -0,0 +1 @@
[2024-8-21>>>16:2:45]>>>TypeError: Cannot read properties of undefined (reading 'ciphertext')

View 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')

View 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')

View 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')

View 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')

View 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

View 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')

View File

@@ -0,0 +1 @@
[2024-9-27>>>13:50:55]>>>TypeError: Cannot read properties of undefined (reading 'get')

View 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')

View File

@@ -0,0 +1 @@
[2025-2-12>>>16:26:35]>>>verify--unLogin>>>>TypeError: Cannot read properties of undefined (reading 'get')

View 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')

View 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')

View File

@@ -0,0 +1 @@
[2025-2-25>>>15:7:8]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'status')

View 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')

View 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')

View 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')

View File

@@ -0,0 +1 @@
[2025-3-11>>>14:58:21]>>>Exam--login>>>>TypeError: Cannot read properties of undefined (reading 'status')

View 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')

View File

@@ -0,0 +1 @@
[2025-3-18>>>17:39:44]>>>verify--getToken>>>>TypeError: Cannot read properties of undefined (reading 'get')

View 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')

View 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')

View File

@@ -0,0 +1 @@
[2025-3-25>>>12:25:44]>>>Insiders--login>>>>TypeError: Cannot read properties of undefined (reading 'status')

View 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')

View 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')

View 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')

View 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')

View 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')

View 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

View 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')

View 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')

View 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')

View 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')

View 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

View 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')

View 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')

View 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')

View 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')

View 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

View 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')

View 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