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