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

validatesession.js 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. 'use strict'
  2. const { plugin } = require('@hapi/inert')
  3. const Joi = require('joi')
  4. const pluginConfig = {
  5. handlerType: 'jwt',
  6. docs: {
  7. get: {
  8. description: 'validates session token for each step of survey',
  9. notes: 'validates session token for each step of survey',
  10. },
  11. },
  12. }
  13. module.exports = {
  14. method: 'GET',
  15. path: '/validatesession/{sessionToken}',
  16. // method: 'GET' sessionToken in header ?
  17. options: {
  18. ...pluginConfig.docs.get,
  19. tags: ['api'],
  20. auth: false, // set to jwt strategy
  21. cors: true,
  22. handler: async function (request, h) {
  23. const sessionToken = request.params.sessionToken
  24. const { userService } = request.server.services()
  25. try {
  26. const validatedSessionToken =
  27. userService.validateToken(sessionToken)
  28. return {
  29. ok: true,
  30. handler: pluginConfig.handlerType,
  31. data: validatedSessionToken,
  32. }
  33. } catch (err) {
  34. return {
  35. ok: false,
  36. handler: pluginConfig.handlerType,
  37. data: { error: err.message },
  38. }
  39. }
  40. },
  41. validate: {
  42. failAction: 'log',
  43. },
  44. response: {
  45. schema: Joi.object({
  46. ok: Joi.bool(),
  47. handler: Joi.string(),
  48. data: Joi.object(),
  49. }).label('validate_session_res'),
  50. failAction: 'log',
  51. },
  52. },
  53. }