| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- const router = require('express').Router();
- const {paramFail, ServerError, success, controlError, searchSuccess} = require("../tools/result");
- const c = require("../control/c_user");
- const typeTool = require("../tools/typeTool_cjs");
- const decode = require("../tools/decode_cjs");
- const time = require("../tools/time_cjs");
- const {toSqlString} = require("../tools/searchSql");
- const progressField = require('../map/progressField');
- const {isEmpty} = require("../tools/typeTool_cjs");
- const checkLogin = require("../middleware/checkSession");
- const log = require("../logger").logger("r_user","info");
- router.post('/login', async (req, res) => {
- try{
- // let isOk = null;
- let loginData = {};
- // let {owner, passwd, captcha} = req.body;
- let body = req.body;
- if(isEmpty(body)){
- paramFail(res, "body is required");
- return;
- }
- let {owner, passwd, captcha} = req.body;
- if(!owner || !passwd || !captcha){
- paramFail(res, "owner or password or captcha is required");
- return;
- }
- // 检查验证码
- if (captcha.toLowerCase() !== req.session.captcha) return paramFail(res,`验证码错误` );
- // 转义解码参数
- let safePasswd = toSqlString(passwd);
- owner = toSqlString(owner);
- // 解密模块.
- passwd = decode.decodePasswd(passwd);
- // 转为数据库存储数据
- passwd = decode.passwdToSave(passwd);
- // 生成登陆记录
- loginData = {
- loginIp: req.ip.match(/\d+\.\d+\.\d+\.\d+/),
- account: owner,
- passwd: safePasswd,
- loginTime: time.getUnixTimeStamp(),
- isLogin: false
- }
- // 加密模块
- // 尝试查找账户
- let [err,userData] = await c.login(owner, passwd);
- if(err){
- console.log(err);
- log.warn(`[用户登录] 登陆失败 ${err.eMsg||err.message}`);
- controlError(res, err,`登陆失败 ${err.eMsg||err.message}`);
- }else{
- console.log(userData);
- loginData.isLogin = true;
- loginData.userId = userData['id'];
- // 存储用户状态到session
- req.session[progressField.session_hfy] = userData;
- success(res, userData);
- }
- // todo 登录日志
- // [err,isOk] = await c_user.saveLoginData(loginData);
- }catch (e) {
- console.log(e);
- ServerError(res, null, e.message);
- }
- });
- router.post('/loadAccounts', checkLogin(progressField.session_hfy), async (req, res) => {
- try{
- let err, result;
- let {key, l, p, type} = req.query;
- let account = req.session[progressField.session_hfy];
- type = type || 'all';
- l = typeTool.toNumber(l);
- p = typeTool.toNumber(p);
- [err, result] = await c.loadAccount(account.userId, p, l);
- if(err){
- log.info(`[用户列表] 加载失败 ${err.message}`);
- return controlError(res, err, null);}
- searchSuccess(res,
- result.arr,
- result.total,
- result.page,
- result.limit,
- );
- }catch (e) {
- ServerError(res, null, e.message);
- }
- });
- router.get('/logout', async (req, res) => {
- try{
- req.session[progressField.session_hfy] = null;
- success(res, null);
- }catch (e) {
- console.log(e);
- ServerError(res, null, e.message);
- }
- });
- module.exports = router;
|