Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

login.js 2.1KB

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