1 | "use strict"
|
2 | const {hash, compare} = require("./bcrypt-setup")
|
3 |
|
4 | module.exports = function addBcryptCheck(model) {
|
5 | model.tokens = {}
|
6 | model.beforeSave(async (self) => {
|
7 | if(self.token) {
|
8 | self.encryptedToken = await hash(self.token)
|
9 | }
|
10 | })
|
11 | model.prototype.isValidToken = async function(token) {
|
12 | if(model.tokens[this.encryptedToken] == token) return true
|
13 | let res = await compare(token, this.encryptedToken, (newEncryptedToken) => {
|
14 | this.encryptedToken = newEncryptedToken
|
15 | this.save()
|
16 | })
|
17 | if(res) {
|
18 | model.tokens[this.encryptedToken] = token
|
19 | } else {
|
20 | delete model.tokens[this.encryptedToken]
|
21 | }
|
22 | return res
|
23 | }
|
24 | }
|