const constants = require('../lib/constants'), security = require('../lib/security'), settingsCache = require('../services/settings/cache'), ghostBookshelf = require('./base'); let Invite, Invites; Invite = ghostBookshelf.Model.extend({ tableName: 'invites', toJSON: function (unfilteredOptions) { var options = Invite.filterOptions(unfilteredOptions, 'toJSON'), attrs = ghostBookshelf.Model.prototype.toJSON.call(this, options); delete attrs.token; return attrs; } }, { orderDefaultOptions: function orderDefaultOptions() { return {}; }, processOptions: function processOptions(options) { return options; }, add: function add(data, unfilteredOptions) { const options = Invite.filterOptions(unfilteredOptions, 'add'); data = data || {}; if (!options.context || !options.context.internal) { data.status = 'pending'; } data.expires = Date.now() + constants.ONE_WEEK_MS; data.token = security.tokens.generateFromEmail({ email: data.email, expires: data.expires, secret: settingsCache.get('db_hash') }); return ghostBookshelf.Model.add.call(this, data, options); } }); Invites = ghostBookshelf.Collection.extend({ model: Invite }); module.exports = { Invite: ghostBookshelf.model('Invite', Invite), Invites: ghostBookshelf.collection('Invites', Invites) };