Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

login.js 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. 'use strict';
  2. const Joi = require('joi');
  3. const User = require('../../models/user');
  4. const pluginConfig = {
  5. handlerType: 'user',
  6. docs: {
  7. post: {
  8. description: 'login',
  9. notes: 'Attempt login'
  10. }
  11. }
  12. }
  13. /** Validator functions by request method */
  14. const validators = {
  15. post: {
  16. payload: Joi.object({
  17. user: Joi.object().keys({
  18. email: User.field('email'),
  19. password: Joi.string()
  20. }),
  21. error: Joi.string()
  22. })
  23. }
  24. }
  25. module.exports = {
  26. method: 'post',
  27. path: '/login',
  28. handler: async function (request, h) {
  29. try {
  30. // const { userService, displayService } = request.services();
  31. const { userService } = request.services()
  32. const res = request.payload
  33. console.log('---')
  34. const login = async (txn) => {
  35. return await userService.login({
  36. email: res.user.email,
  37. password: res.user.password
  38. }, txn)
  39. }
  40. // Bound context from your plugin server declaration
  41. const user = await h.context.transaction(login)
  42. const token = userService.createToken(user.id)
  43. return {
  44. ok: true,
  45. handler: pluginConfig.handlerType,
  46. data: { user: displayService.user(user, token) }
  47. }
  48. }
  49. catch(err) {
  50. console.error(err)
  51. return {
  52. ok: false,
  53. handler: pluginConfig.handlerType,
  54. data: { error: `${err}` },
  55. }
  56. }
  57. },
  58. options: {
  59. ...pluginConfig.docs.post,
  60. tags: ['api'],
  61. auth: false,
  62. validate: validators.post,
  63. response: {
  64. schema: Joi.object({
  65. ok: Joi.bool(),
  66. handler: Joi.string(),
  67. data: validators.post.payload
  68. }),
  69. failAction: 'log'
  70. }
  71. }
  72. }