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

validatesession.js 1.6KB

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