Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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().required().keys({
  18. email: User.field('email').required(),
  19. password: Joi.string().required()
  20. })
  21. })
  22. }
  23. }
  24. module.exports = {
  25. method: 'post',
  26. path: '/login',
  27. handler: async (request, h) => {
  28. try {
  29. const { user: { email, password } } = request.payload
  30. // const { userService, displayService } = request.services();
  31. // const login = async (txn) => {
  32. // return await userService.login({ email, password }, txn);
  33. // };
  34. // const user = await h.context.transaction(login);
  35. // const token = userService.createToken(user.id);
  36. return {
  37. ok: true,
  38. handler: pluginConfig.handlerType,
  39. data: {
  40. user: { email: '', password: '' }
  41. },
  42. // data: { user: displayService.user(user, token) }
  43. }
  44. }
  45. catch(err) {
  46. return {
  47. ok: false,
  48. handler: pluginConfig.handlerType,
  49. data: { error: err },
  50. }
  51. }
  52. },
  53. options: {
  54. ...pluginConfig.docs.post,
  55. tags: ['api'],
  56. auth: false,
  57. validate: validators.post,
  58. response: {
  59. schema: Joi.object({
  60. ok: Joi.bool(),
  61. handler: Joi.string(),
  62. data: validators.post.payload
  63. }),
  64. failAction: 'log'
  65. }
  66. }
  67. }