Changeset View
Changeset View
Standalone View
Standalone View
src/resources/js/app.js
Show First 20 Lines • Show All 126 Lines • ▼ Show 20 Lines | methods: { | ||||
403: "Access denied", | 403: "Access denied", | ||||
404: "Not found", | 404: "Not found", | ||||
405: "Method not allowed", | 405: "Method not allowed", | ||||
500: "Internal server error" | 500: "Internal server error" | ||||
} | } | ||||
if (!msg) msg = map[code] || "Unknown Error" | if (!msg) msg = map[code] || "Unknown Error" | ||||
const error_page = `<div id="error-page"><div class="code">${code}</div><div class="message">${msg}</div></div>` | const error_page = `<div id="error-page" class="error-page"><div class="code">${code}</div><div class="message">${msg}</div></div>` | ||||
$('#error-page').remove() | $('#error-page').remove() | ||||
$('#app').append(error_page) | $('#app').append(error_page) | ||||
app.updateBodyClass('error') | |||||
}, | }, | ||||
errorHandler(error) { | errorHandler(error) { | ||||
this.stopLoading() | this.stopLoading() | ||||
if (!error.response) { | if (!error.response) { | ||||
// TODO: probably network connection error | // TODO: probably network connection error | ||||
} else if (error.response.status === 401) { | } else if (error.response.status === 401) { | ||||
this.logoutUser() | this.logoutUser() | ||||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | methods: { | ||||
} | } | ||||
if (!domain.isVerified || !domain.isLdapReady || !domain.isConfirmed) { | if (!domain.isVerified || !domain.isLdapReady || !domain.isConfirmed) { | ||||
return 'Not Ready' | return 'Not Ready' | ||||
} | } | ||||
return 'Active' | return 'Active' | ||||
}, | }, | ||||
pageName(path) { | |||||
let page = this.$route.path | |||||
// check if it is a "menu page", find the page name | |||||
// otherwise we'll use the real path as page name | |||||
window.config.menu.every(item => { | |||||
if (item.location == page && item.page) { | |||||
page = item.page | |||||
return false | |||||
} | |||||
}) | |||||
page = page.replace(/^\//, '') | |||||
return page ? page : '404' | |||||
}, | |||||
userStatusClass(user) { | userStatusClass(user) { | ||||
if (user.isDeleted) { | if (user.isDeleted) { | ||||
return 'text-muted' | return 'text-muted' | ||||
} | } | ||||
if (user.isSuspended) { | if (user.isSuspended) { | ||||
return 'text-warning' | return 'text-warning' | ||||
} | } | ||||
Show All 13 Lines | methods: { | ||||
return 'Suspended' | return 'Suspended' | ||||
} | } | ||||
if (!user.isImapReady || !user.isLdapReady) { | if (!user.isImapReady || !user.isLdapReady) { | ||||
return 'Not Ready' | return 'Not Ready' | ||||
} | } | ||||
return 'Active' | return 'Active' | ||||
}, | |||||
updateBodyClass(name) { | |||||
// Add 'class' attribute to the body, different for each page | |||||
// so, we can apply page-specific styles | |||||
let className = 'page-' + (name || this.pageName()).replace(/\/.*$/, '') | |||||
$(document.body).removeClass().addClass(className) | |||||
} | } | ||||
} | } | ||||
}) | }) | ||||
// Add a axios request interceptor | // Add a axios request interceptor | ||||
window.axios.interceptors.request.use( | window.axios.interceptors.request.use( | ||||
config => { | config => { | ||||
// This is the only way I found to change configuration options | // This is the only way I found to change configuration options | ||||
▲ Show 20 Lines • Show All 80 Lines • ▼ Show 20 Lines | error => { | ||||
} | } | ||||
app.$toast.error(error_msg || "Server Error") | app.$toast.error(error_msg || "Server Error") | ||||
// Pass the error as-is | // Pass the error as-is | ||||
return Promise.reject(error) | return Promise.reject(error) | ||||
} | } | ||||
) | ) | ||||
window.router.afterEach((to, from) => { | |||||
// When changing a page remove old: | |||||
// - error page | |||||
// - modal backdrop | |||||
$('#error-page,.modal-backdrop.show').remove() | |||||
app.updateBodyClass() | |||||
}) |