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"); const {toSqlString} = require("../tools/searchSql"); const log = require("../logger").logger("r_solution","info"); router.post('/login', async (req, res) => { try{ let err, userData; let {account, passwd, captcha} = req.body; if(!account || !passwd || !captcha){ paramFail(res, "account or password or captcha is required"); return; } // 检查验证码 if (captcha.toLowerCase() !== req.session.captcha) return paramFail(res,`验证码错误` ); // 转义解码参数 let safePasswd = toSqlString(passwd); account = toSqlString(account); passwd = decode.decodePasswd(passwd); // 生成登陆记录 let loginData = { loginIp: req.ip.match(/\d+\.\d+\.\d+\.\d+/), account: account, passwd: safePasswd, loginTime: time.getUnixTimeStamp(), isLogin: false } // 加密模块 // 尝试查找账户 [err,userData] = await c_user.userLogin(account, passwd); if(err){ log.warn(`[用户登录] 登陆失败 ${err.message}`); paramFail(res, `登陆失败 ${err.message}`); }else{ loginData.isLogin = true; loginData.userId = userData['userId']; // 存储用户状态到session req.session[progressField.session_hfy] = userData; res.json({ rcode: codeMap.ok, data: userData }); } let [Err,isOk] = await c_user.saveLoginData(loginData); }catch (e) { ServerError(res, null, e.message); } }); module.exports = router ;