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

123456789101112131415161718192021222324252627282930313233343536373839
  1. 'use strict'
  2. const JWT = require('jsonwebtoken')
  3. module.exports = options => {
  4. return {
  5. key: options.jwtKey,
  6. verifyOptions: {
  7. algorithms: ['HS256'],
  8. },
  9. // NOTE: TASK 3 Not yet done, but this passes a hashedSessionToken
  10. // through headers in failed attempt to never have raw JWT's in front end
  11. // Always check rawAccessToken, if it fails, we check the session, if session
  12. // is valid, then we reissue it
  13. // if session is NOT valid, DELETE the session (and kick user back to login)
  14. // TODO: set up cron job to occassionaly clean up activeSessions
  15. validate: (decoded, request, h) => {
  16. // NOTE: this won't work as it immediately invalidates anything that isn't a raw jwt
  17. const hashedSessionToken = request.headers.authorization
  18. const sessionToken =
  19. request.server.app.activeSessions[hashedSessionToken]
  20. .sessionToken
  21. console.log('sessionToken :=>', sessionToken)
  22. try {
  23. const validatedJwt = JWT.verify(
  24. sessionToken,
  25. process.env.APP_SECRET,
  26. )
  27. return {
  28. isValid: true,
  29. credentials: validatedJwt.email,
  30. }
  31. } catch (err) {
  32. console.error('ERROR :=>', err)
  33. return { isValid: false, error: err.message }
  34. }
  35. },
  36. }
  37. }