Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

validatejwt.js 1.6KB

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