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

remove-session.js 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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: 'removes sessionToken from activeSessions upon logout',
  9. notes: 'On logout, activeSessions no longer holds onto user credentials',
  10. },
  11. },
  12. }
  13. module.exports = {
  14. method: 'POST',
  15. path: '/remove-session',
  16. options: {
  17. ...pluginConfig.docs.get,
  18. tags: ['api'],
  19. auth: false,
  20. cors: {
  21. headers: ['Authorization', 'Content-Type'],
  22. exposedHeaders: ['Authorization', 'Access-Control-Expose-Headers'],
  23. },
  24. handler: async function (request, h) {
  25. const hashedSessionToken = request.payload
  26. const { userService } = request.server.services()
  27. try {
  28. await userService.removeSession(hashedSessionToken)
  29. return {
  30. ok: true,
  31. handler: pluginConfig.handlerType,
  32. data: {
  33. sessionTokenIsRemoved: true,
  34. },
  35. }
  36. } catch (err) {
  37. return {
  38. ok: false,
  39. handler: pluginConfig.handlerType,
  40. data: { error: err.message },
  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. }