r_user.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. const router = require('express').Router();
  2. const {paramFail, ServerError, success, controlError, searchSuccess} = require("../tools/result");
  3. const c = require("../control/c_user");
  4. const typeTool = require("../tools/typeTool");
  5. const {toSqlString} = require("../tools/searchSql");
  6. const log = require("../logger").logger("r_solution","info");
  7. router.post('/login', async (req, res) => {
  8. try{
  9. let err, userData;
  10. let {account, passwd, captcha} = req.body;
  11. if(!account || !passwd || !captcha){
  12. paramFail(res, "account or password or captcha is required");
  13. return;
  14. }
  15. // 检查验证码
  16. if (captcha.toLowerCase() !== req.session.captcha) return paramFail(res,`验证码错误` );
  17. // 转义解码参数
  18. let safePasswd = toSqlString(passwd);
  19. account = toSqlString(account);
  20. passwd = decode.decodePasswd(passwd);
  21. // 生成登陆记录
  22. let loginData = {
  23. loginIp: req.ip.match(/\d+\.\d+\.\d+\.\d+/),
  24. account: account,
  25. passwd: safePasswd,
  26. loginTime: time.getUnixTimeStamp(),
  27. isLogin: false
  28. }
  29. // 加密模块
  30. // 尝试查找账户
  31. [err,userData] = await c_user.userLogin(account, passwd);
  32. if(err){
  33. log.warn(`[用户登录] 登陆失败 ${err.message}`);
  34. paramFail(res, `登陆失败 ${err.message}`);
  35. }else{
  36. loginData.isLogin = true;
  37. loginData.userId = userData['userId'];
  38. // 存储用户状态到session
  39. req.session[progressField.session_hfy] = userData;
  40. res.json({
  41. rcode: codeMap.ok,
  42. data: userData
  43. });
  44. }
  45. let [Err,isOk] = await c_user.saveLoginData(loginData);
  46. }catch (e) {
  47. ServerError(res, null, e.message);
  48. }
  49. });
  50. module.exports = router ;