1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2025-04-03 00:07:05 +00:00
mailinabox/management/reporting/ui/index.js
2022-09-19 14:45:11 -04:00

88 lines
2.3 KiB
JavaScript

/////
///// This file is part of Mail-in-a-Box-LDAP which is released under the
///// terms of the GNU Affero General Public License as published by the
///// Free Software Foundation, either version 3 of the License, or (at
///// your option) any later version. See file LICENSE or go to
///// https://github.com/downtownallday/mailinabox-ldap for full license
///// details.
/////
/*
* reports index page
*/
import page_settings from "./page-settings.js";
import page_reports_main from "./page-reports-main.js";
import { Me, init_authentication_interceptors } from "../../ui-common/authentication.js";
import { AuthenticationError } from "../../ui-common/exceptions.js";
import UserSettings from "./settings.js";
const app = {
router: new VueRouter({
routes: [
{ path: '/', component: page_reports_main },
{ path: '/settings', component: page_settings },
{ path: '/:panel', component: page_reports_main },
],
scrollBehavior: function(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
}
},
}),
components: {
'page-settings': page_settings,
'page-reports-main': page_reports_main,
},
data: {
},
mounted: function() {
this.ensure_authenticated();
},
methods: {
ensure_authenticated: function() {
axios.get('reports/uidata/user-list')
.catch(error => {
this.handleError(error);
});
},
handleError: function(error) {
if (error instanceof AuthenticationError) {
console.log(error);
window.location = '/admin';
return;
}
console.error(error);
if (error instanceof ReferenceError) {
// uncaught coding bug, ignore
return;
}
if (error.status && error.reason)
{
// axios
error = error.reason;
}
this.$nextTick(() => {alert(''+error) });
}
}
};
init_authentication_interceptors();
UserSettings.load().then(settings => {
new Vue(app).$mount('#app');
}).catch(error => {
alert('' + error);
});