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

auth.service.js 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { db } from '../utils/db.js'
  2. class Authenticator {
  3. constructor() {
  4. this.currentUser = null
  5. }
  6. async sendEmail(answered) {
  7. return await db.post('/user/send-email/', answered)
  8. }
  9. async verifySession(hashedToken) {
  10. return await db.get(`/user/verify/${hashedToken}`)
  11. }
  12. async createToken(req) {
  13. return await db.post('/user/token', req, true)
  14. }
  15. async validateSession(hashedSessionToken) {
  16. return await db.post('/user/validate-session', 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/remove-session', 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 this.validateSession(hashedAccessToken)
  39. if (validatedToken.error) {
  40. console.error('ERROR :=>', validatedToken.error)
  41. } else {
  42. return validatedToken
  43. }
  44. }
  45. }
  46. const authenticator = new Authenticator()
  47. export { authenticator, Authenticator }