Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

auth.service.js 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { db } from '../utils/db.js'
  2. class Authenticator {
  3. constructor() {
  4. this.currentUser = null
  5. }
  6. async sendAuthEmail(answered) {
  7. return await db.post('/user/sendemail/', answered)
  8. }
  9. async verifyAuthSession(hashedToken) {
  10. return await db.get(`/user/verify/${hashedToken}`)
  11. }
  12. async getSessionToken(req) {
  13. return await db.post('/user/get-session', req, true)
  14. }
  15. async validateSession(hashedSessionToken) {
  16. return await db.post('/user/validatesession', hashedSessionToken, true)
  17. }
  18. async authenticateLoginCredentials(credentials) {
  19. return await db.post('/user/login', credentials)
  20. }
  21. async removeSession(hashedSessionToken) {
  22. return await db.post('/user/removesession', hashedSessionToken, true)
  23. }
  24. grabStoredCookie(cookieKey) {
  25. const cookies = document.cookie.split('; ').reduce((prev, current) => {
  26. const [name, ...value] = current.split('=')
  27. prev[name] = value.join('=')
  28. return prev
  29. }, {})
  30. const cookieVal =
  31. cookieKey in cookies ? cookies[`${cookieKey}`] : undefined
  32. return cookieVal
  33. }
  34. async verifySessionCookie(sessionCookie) {
  35. const hashedAccessToken = this.grabStoredCookie(sessionCookie)
  36. if (!hashedAccessToken)
  37. return console.warn('WARNING :=> accessToken is not defined')
  38. const validatedToken = await authenticator.validateSession(
  39. hashedAccessToken,
  40. )
  41. if (validatedToken.error) {
  42. console.error('ERROR :=>', validatedToken.error)
  43. } else {
  44. return validatedToken
  45. }
  46. }
  47. }
  48. const authenticator = new Authenticator()
  49. export { authenticator, Authenticator }