rittenhop-ghost/versions/5.94.2/core/server/models/single-use-token.js

28 lines
756 B
JavaScript

const ghostBookshelf = require('./base');
const crypto = require('crypto');
const SingleUseToken = ghostBookshelf.Model.extend({
tableName: 'tokens',
defaults() {
return {
used_count: 0,
token: crypto
.randomBytes(192 / 8)
.toString('base64')
// base64url encoding means the tokens are URL safe
.replace(/\+/g, '-')
.replace(/\//g, '_')
};
}
}, {});
const SingleUseTokens = ghostBookshelf.Collection.extend({
model: SingleUseToken
});
module.exports = {
SingleUseToken: ghostBookshelf.model('SingleUseToken', SingleUseToken),
SingleUseTokens: ghostBookshelf.collection('SingleUseTokens', SingleUseTokens)
};