Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

get-session.js 1.7KB

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