UNPKG

@brontosaurus/db

Version:
151 lines (150 loc) 3.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ApplicationModel = exports.ApplicationRedirectionSchema = void 0; const core_1 = require("@brontosaurus/core"); const random_1 = require("@sudoo/bark/random"); const mongoose_1 = require("mongoose"); exports.ApplicationRedirectionSchema = new mongoose_1.Schema({ name: { type: String, required: true, }, regexp: { type: String, required: true, }, }, { _id: false }); const ApplicationSchema = new mongoose_1.Schema({ active: { type: Boolean, required: true, default: true, }, anchor: { type: String, required: true, unique: true, index: true, }, key: { type: String, required: true, unique: true, }, avatar: { type: String, required: false, }, backgroundImage: { type: String, required: false, }, favicon: { type: String, required: false, }, helpLink: { type: String, required: false, }, privacyPolicy: { type: String, required: false, }, name: { type: String, required: true, unique: true, index: true, }, green: { type: String, required: true, }, greenAccess: { type: Boolean, required: true, default: false, }, portalAccess: { type: Boolean, required: true, default: false, }, expire: { type: Number, required: true, }, publicKey: { type: String, required: true, }, privateKey: { type: String, required: true, }, redirections: { type: [exports.ApplicationRedirectionSchema], required: true, default: [], }, iFrameProtocol: { type: Boolean, required: true, default: false, }, postProtocol: { type: Boolean, required: true, default: false, }, alertProtocol: { type: Boolean, required: true, default: false, }, noneProtocol: { type: Boolean, required: true, default: false, }, groups: { type: [mongoose_1.Schema.Types.ObjectId], required: true, default: [], }, requires: { type: [mongoose_1.Schema.Types.ObjectId], required: true, default: [], }, requireTags: { type: [mongoose_1.Schema.Types.ObjectId], required: true, default: [], }, }, { timestamps: { createdAt: true, updatedAt: true, }, }); ApplicationSchema.methods.refreshGreen = function () { this.green = random_1.trustable(new Date(), undefined, 64); return this; }; ApplicationSchema.methods.refreshKey = function () { const secret = core_1.Brontosaurus.generateBrontosaurusKey(); this.publicKey = secret.public; this.privateKey = secret.private; return this; }; ApplicationSchema.methods.toggleGreenAccess = function () { this.greenAccess = !Boolean(this.greenAccess); return this; }; ApplicationSchema.methods.togglePortalAccess = function () { this.portalAccess = !Boolean(this.portalAccess); return this; }; exports.ApplicationModel = mongoose_1.model('Application', ApplicationSchema);