UNPKG

904 BJavaScriptView Raw
1'use strict'
2
3const ulid = require('ulid')
4
5class TokenService {
6 constructor () {
7 this.tokens = {}
8 }
9
10 generate (domain, data = {}) {
11 const token = ulid()
12 this.tokens[domain] = this.tokens[domain] || {}
13
14 const value = {
15 exp: new Date(Date.now() + 20 * 60 * 1000)
16 }
17 this.tokens[domain][token] = Object.assign({}, value, data)
18
19 return token
20 }
21
22 verify (domain, token) {
23 const now = new Date()
24
25 if (!this.tokens[domain]) {
26 throw new Error(`Invalid domain for tokens: ${domain}`)
27 }
28
29 let tokenValue = this.tokens[domain][token]
30
31 if (tokenValue && now < tokenValue.exp) {
32 return tokenValue
33 } else {
34 return false
35 }
36 }
37
38 remove (domain, token) {
39 if (!this.tokens[domain]) {
40 throw new Error(`Invalid domain for tokens: ${domain}`)
41 }
42
43 delete this.tokens[domain][token]
44 }
45}
46
47module.exports = TokenService