user.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. const userModel = require('../model/user');
  2. const jwt = require('jsonwebtoken');
  3. const bcrypt = require('bcrypt');
  4. const secret = require('../config/secret');
  5. const Response = require('../util/response');
  6. class UserController {
  7. /**
  8. * 登录
  9. * @param ctx
  10. * @returns {Promise.<void>}
  11. */
  12. static async login(ctx) {
  13. const data = ctx.request.body;
  14. const user = await userModel.findByPhone(data.phone)
  15. if (user) {
  16. const confirmRes = bcrypt.compareSync(data.password, user.password);
  17. if(!confirmRes){
  18. ctx.body = Response.failed('密码错误,请重试')
  19. }else{
  20. // console.log('ctx',ctx);
  21. // console.log('ctx.cookies.redirect_uri',ctx.cookies.get('redirect_uri'));
  22. let redirect_uri = ctx.cookies.get('redirect_uri');
  23. let data = {
  24. iss : 'p.seecoder.cn',
  25. sub: encodeURIComponent(user.id + "&" + user.name + "&" + user.phone),
  26. aud: ctx.cookies.get('client_id'),
  27. auth_time: Math.floor(new Date().getTime() / 1000),
  28. iat: Math.floor(new Date().getTime() / 1000),
  29. exp: Math.floor(new Date().getTime() / 1000 + 24 * 60 * 60),
  30. };
  31. const token = jwt.sign(data, secret.sign);
  32. //ctx.redirect(redirect_uri + "?id_token=" + token);
  33. ctx.body = Response.success({token: token, name: user.name, path:redirect_uri});
  34. }
  35. } else {
  36. ctx.body = Response.failed('此账号不存在');
  37. }
  38. }
  39. /**
  40. * 注册
  41. * @param ctx
  42. * @returns {Promise.<void>}
  43. */
  44. static async register(ctx) {
  45. const data = ctx.request.body;
  46. const hashPassword = bcrypt.hashSync(data.password, 10);
  47. const user = await userModel.create(data.name, hashPassword, data.phone);
  48. if (user) {
  49. ctx.body = Response.success({name: user.name});
  50. } else {
  51. ctx.body = Response.failed('此手机号已注册');
  52. }
  53. }
  54. }
  55. module.exports = UserController;