| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474 | const Backbone = require('backbone');const Cache    = require('./cache');const Tokens   = require('./tokens');module.exports = {    /**     * @param {String} route     * @param {Object} [options]     * @returns {Boolean}     */    navigate: function (route, options) {        options = options || {};        Backbone.history.navigate(route.toString(), options);        return true;    },    /**     * Login     */    showLogin: function () {        window.location = '/login';    },    /**     * Users     */    showUsers: function () {        let controller = this;        if (Cache.User.isAdmin()) {            require(['./main', './users/main'], (App, View) => {                controller.navigate('/users');                App.UI.showAppContent(new View());            });        } else {            this.showDashboard();        }    },    /**     * User Form     *     * @param [model]     */    showUserForm: function (model) {        if (Cache.User.isAdmin()) {            require(['./main', './user/form'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * User Permissions Form     *     * @param model     */    showUserPermissions: function (model) {        if (Cache.User.isAdmin()) {            require(['./main', './user/permissions'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * User Password Form     *     * @param model     */    showUserPasswordForm: function (model) {        if (Cache.User.isAdmin() || model.get('id') === Cache.User.get('id')) {            require(['./main', './user/password'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * User Delete Confirm     *     * @param model     */    showUserDeleteConfirm: function (model) {        if (Cache.User.isAdmin() && model.get('id') !== Cache.User.get('id')) {            require(['./main', './user/delete'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Dashboard     */    showDashboard: function () {        let controller = this;        require(['./main', './dashboard/main'], (App, View) => {            controller.navigate('/');            App.UI.showAppContent(new View());        });    },    /**     * Nginx Proxy Hosts     */    showNginxProxy: function () {        if (Cache.User.isAdmin() || Cache.User.canView('proxy_hosts')) {            let controller = this;            require(['./main', './nginx/proxy/main'], (App, View) => {                controller.navigate('/nginx/proxy');                App.UI.showAppContent(new View());            });        }    },    /**     * Nginx Proxy Host Form     *     * @param [model]     */    showNginxProxyForm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('proxy_hosts')) {            require(['./main', './nginx/proxy/form'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Proxy Host Delete Confirm     *     * @param model     */    showNginxProxyDeleteConfirm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('proxy_hosts')) {            require(['./main', './nginx/proxy/delete'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Nginx Redirection Hosts     */    showNginxRedirection: function () {        if (Cache.User.isAdmin() || Cache.User.canView('redirection_hosts')) {            let controller = this;            require(['./main', './nginx/redirection/main'], (App, View) => {                controller.navigate('/nginx/redirection');                App.UI.showAppContent(new View());            });        }    },    /**     * Nginx Redirection Host Form     *     * @param [model]     */    showNginxRedirectionForm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('redirection_hosts')) {            require(['./main', './nginx/redirection/form'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Proxy Redirection Delete Confirm     *     * @param model     */    showNginxRedirectionDeleteConfirm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('redirection_hosts')) {            require(['./main', './nginx/redirection/delete'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Nginx Stream Hosts     */    showNginxStream: function () {        if (Cache.User.isAdmin() || Cache.User.canView('streams')) {            let controller = this;            require(['./main', './nginx/stream/main'], (App, View) => {                controller.navigate('/nginx/stream');                App.UI.showAppContent(new View());            });        }    },    /**     * Stream Form     *     * @param [model]     */    showNginxStreamForm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('streams')) {            require(['./main', './nginx/stream/form'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Stream Delete Confirm     *     * @param model     */    showNginxStreamDeleteConfirm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('streams')) {            require(['./main', './nginx/stream/delete'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },     /**     * Nginx SSL Passthrough Hosts     */      showNginxSslPassthrough: function () {        if (Cache.User.isAdmin() || Cache.User.canView('ssl_passthrough_hosts')) {            let controller = this;            require(['./main', './nginx/ssl-passthrough/main'], (App, View) => {                controller.navigate('/nginx/ssl-passthrough');                App.UI.showAppContent(new View());            });        }    },    /**     * SSL Passthrough Hosts Form     *     * @param [model]     */     showNginxSslPassthroughForm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('ssl_passthrough_hosts')) {            require(['./main', './nginx/ssl-passthrough/form'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * SSL Passthrough Hosts Delete Confirm     *     * @param model     */     showNginxSslPassthroughConfirm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('ssl_passthrough_hosts')) {            require(['./main', './nginx/ssl-passthrough/delete'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Nginx Dead Hosts     */    showNginxDead: function () {        if (Cache.User.isAdmin() || Cache.User.canView('dead_hosts')) {            let controller = this;            require(['./main', './nginx/dead/main'], (App, View) => {                controller.navigate('/nginx/404');                App.UI.showAppContent(new View());            });        }    },    /**     * Dead Host Form     *     * @param [model]     */    showNginxDeadForm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('dead_hosts')) {            require(['./main', './nginx/dead/form'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Dead Host Delete Confirm     *     * @param model     */    showNginxDeadDeleteConfirm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('dead_hosts')) {            require(['./main', './nginx/dead/delete'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Help Dialog     *     * @param {String}  title     * @param {String}  content     */    showHelp: function (title, content) {        require(['./main', './help/main'], function (App, View) {            App.UI.showModalDialog(new View({title: title, content: content}));        });    },    /**     * Nginx Access     */    showNginxAccess: function () {        if (Cache.User.isAdmin() || Cache.User.canView('access_lists')) {            let controller = this;            require(['./main', './nginx/access/main'], (App, View) => {                controller.navigate('/nginx/access');                App.UI.showAppContent(new View());            });        }    },    /**     * Nginx Access List Form     *     * @param [model]     */    showNginxAccessListForm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('access_lists')) {            require(['./main', './nginx/access/form'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Access List Delete Confirm     *     * @param model     */    showNginxAccessListDeleteConfirm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('access_lists')) {            require(['./main', './nginx/access/delete'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Nginx Certificates     */    showNginxCertificates: function () {        if (Cache.User.isAdmin() || Cache.User.canView('certificates')) {            let controller = this;            require(['./main', './nginx/certificates/main'], (App, View) => {                controller.navigate('/nginx/certificates');                App.UI.showAppContent(new View());            });        }    },    /**     * Nginx Certificate Form     *     * @param [model]     */    showNginxCertificateForm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('certificates')) {            require(['./main', './nginx/certificates/form'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Certificate Renew     *     * @param model     */    showNginxCertificateRenew: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('certificates')) {            require(['./main', './nginx/certificates/renew'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Certificate Delete Confirm     *     * @param model     */    showNginxCertificateDeleteConfirm: function (model) {        if (Cache.User.isAdmin() || Cache.User.canManage('certificates')) {            require(['./main', './nginx/certificates/delete'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Audit Log     */    showAuditLog: function () {        let controller = this;        if (Cache.User.isAdmin()) {            require(['./main', './audit-log/main'], (App, View) => {                controller.navigate('/audit-log');                App.UI.showAppContent(new View());            });        } else {            this.showDashboard();        }    },    /**     * Audit Log Metadata     *     * @param model     */    showAuditMeta: function (model) {        if (Cache.User.isAdmin()) {            require(['./main', './audit-log/meta'], function (App, View) {                App.UI.showModalDialog(new View({model: model}));            });        }    },    /**     * Settings     */    showSettings: function () {        let controller = this;        if (Cache.User.isAdmin()) {            require(['./main', './settings/main'], (App, View) => {                controller.navigate('/settings');                App.UI.showAppContent(new View());            });        } else {            this.showDashboard();        }    },    /**     * Settings Item Form     *     * @param model     */    showSettingForm: function (model) {        if (Cache.User.isAdmin()) {            if (model.get('id') === 'default-site') {                require(['./main', './settings/default-site/main'], function (App, View) {                    App.UI.showModalDialog(new View({model: model}));                });            }        }    },    /**     * Logout     */    logout: function () {        Tokens.dropTopToken();        this.showLogin();    }};
 |