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.

get-session.js 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. 'use strict'
  2. const Joi = require('joi')
  3. const pluginConfig = {
  4. handlerType: 'authentication',
  5. docs: {
  6. get: {
  7. description: 'creates session token for authentication',
  8. notes: 'Creates session token for authentication',
  9. },
  10. },
  11. }
  12. const validators = {
  13. payload: Joi.object({
  14. payload: Joi.object({
  15. email: Joi.string(),
  16. name: Joi.string(),
  17. seeking: Joi.string(),
  18. }),
  19. }),
  20. }
  21. module.exports = {
  22. method: 'POST',
  23. path: '/token',
  24. options: {
  25. ...pluginConfig.docs.get,
  26. tags: ['api'],
  27. auth: false,
  28. cors: {
  29. headers: ['Authorization', 'Content-Type'],
  30. exposedHeaders: ['Authorization', 'Access-Control-Expose-Headers'],
  31. },
  32. handler: async function (request, h) {
  33. const { userService } = request.server.services()
  34. const res = request.payload
  35. // NOTE: Session Token set for 5 minutes expiration (default)
  36. const sessionToken = await userService.createToken(res, 600)
  37. try {
  38. const response = h.response({
  39. ok: true,
  40. handler: pluginConfig.handlerType,
  41. data: sessionToken,
  42. })
  43. response.header('Authorization', sessionToken)
  44. return response
  45. } catch (err) {
  46. return {
  47. ok: false,
  48. handler: pluginConfig.handlerType,
  49. data: {
  50. error: err,
  51. },
  52. }
  53. }
  54. },
  55. validate: {
  56. ...validators,
  57. failAction: 'log',
  58. },
  59. response: {
  60. // TODO: change back to accommodate new h.response return values
  61. schema: Joi.any().label('get_session_res'),
  62. failAction: 'log',
  63. },
  64. },
  65. }