users.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. const router = require('koa-router')()
  2. const UserDao = require('../dao/UserDao')
  3. const crypto = require('crypto')
  4. const jwt = require('jsonwebtoken')
  5. const UserEntity = require('../entity/UserEntity')
  6. router.prefix('/users')
  7. /**
  8. * 用户登录方法
  9. */
  10. router.post('/login', async (ctx) => {
  11. const data = ctx.request.body
  12. if (!data.name || !data.password) {
  13. return ctx.body = {
  14. code: '602',
  15. data: null,
  16. msg: '参数不合法'
  17. }
  18. }
  19. let password = crypto.createHash('md5').update(data.password).digest('hex') // 对密码进行md5 数据库中保存的是md5后的密码
  20. const result = await UserDao.selectByName(data.name)
  21. if(result !== null){
  22. let resultString = JSON.stringify(result)
  23. let user = JSON.parse(resultString)[0]
  24. if(password === user.password) {
  25. let token = jwt.sign({
  26. name: user.user_name,
  27. id: user.user_id
  28. }, 'token', {expiresIn: '0.5h'})
  29. return ctx.body = {
  30. code: '0',
  31. data: token,
  32. msg: '登录成功'
  33. }
  34. } else {
  35. return ctx.body = {
  36. code: '602',
  37. data: null,
  38. msg: '密码错误'
  39. }
  40. }
  41. } else {
  42. return ctx.body = {
  43. code: '602',
  44. data: null,
  45. msg: '用户不存在'
  46. }
  47. }
  48. })
  49. /**
  50. * 用户注册方法
  51. */
  52. router.post('/register', async (ctx) => {
  53. const data = ctx.request.body
  54. if (!data.username || !data.password) {
  55. return ctx.body = {
  56. code: '602',
  57. data: null,
  58. msg: '参数不合法'
  59. }
  60. }
  61. let result = await UserDao.selectByName(data.username)
  62. let resultString = JSON.stringify(result)
  63. let user = JSON.parse(resultString)[0]
  64. console.log(user)
  65. if(user !== undefined) {
  66. return ctx.body = {
  67. code: '602',
  68. data: null,
  69. msg: '用户已存在'
  70. }
  71. }
  72. let userEntity = new UserEntity()
  73. userEntity.userName = data.username
  74. userEntity.password = data.password
  75. userEntity.avatarUrl = data.avatarUrl
  76. userEntity.description = data.description
  77. UserDao.insert(userEntity)
  78. return ctx.body = {
  79. code: '0',
  80. data: null,
  81. msg: '注册成功'
  82. }
  83. })
  84. /**
  85. * 返回用户信息
  86. */
  87. router.get('/info/:id', async (ctx) => {
  88. let id = ctx.params.id
  89. let result = await UserDao.selectById(id)
  90. ctx.body = result
  91. })
  92. module.exports = router