<template> <div class="error-message"> <modal v-model="ShowModal" :closable="this.showcloseButton"> <div class="error-message" v-if="$route.name == '404'"> <p class="error-404"></p> <p>{{ $t('errors.resource_not_found') }}</p> <p class=""><router-link :to="{ name: 'accounts' }" class="is-text">{{ $t('errors.refresh') }}</router-link></p> </div> <div v-else> <p class="error-generic"></p> <p>{{ $t('errors.error_occured') }} </p> <p v-if="error.message" class="has-text-grey-lighter">{{ error.message }}</p> <p v-if="error.originalMessage" class="has-text-grey-lighter">{{ error.originalMessage }}</p> <p><router-link :to="{ name: 'accounts', params: { toRefresh: true } }" class="is-text">{{ $t('errors.refresh') }}</router-link></p> <p v-if="debugMode == 'development' && error.debug"> <br> {{ error.debug }} </p> </div> </modal> </div> </template> <script> import Modal from '../components/Modal' export default { data(){ return { ShowModal : true, showcloseButton: this.closable, } }, computed: { debugMode: function() { return process.env.NODE_ENV }, error: function() { if( this.err === null || this.err === undefined ) { return false } else { if (this.err.status === 407) { return { 'message' : this.$t('errors.auth_proxy_failed'), 'originalMessage' : this.$t('errors.auth_proxy_failed_legend') } } else if (this.err.status === 403) { return { 'message' : this.$t('errors.unauthorized'), 'originalMessage' : this.$t('errors.unauthorized_legend') } } else if(this.err.data) { return this.err.data } else { return { 'message' : this.err } } } } }, props: { err: [String, Object], // on object (error.response) or a string closable: { type: Boolean, default: true } }, components: { Modal }, mounted(){ // stop OTP generation on modal close this.$on('modalClose', function() { this.$router.push({name: 'accounts' }); }); }, beforeRouteEnter (to, from, next) { // return to home if no err is provided to prevent an empty error message if (to.params.err == undefined) { next({ name: 'accounts' }); } else next() }, } </script>