Add interceptor for 403 response
This is a simple solution that is in parity with the current BMC
functionality. Once we have mapped permissions, we can create a more
elegant solution.
Signed-off-by: Derick Montague <derick.montague@ibm.com>
Change-Id: Id3ea36ba812462be04a450f84f98d0237d6c7c3d
diff --git a/src/router/index.js b/src/router/index.js
index cbebca7..61cb902 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -28,6 +28,14 @@
meta: {
title: 'Local user management'
}
+ },
+ {
+ path: '/unauthorized',
+ name: 'unauthorized',
+ component: () => import('@/views/Unauthorized'),
+ meta: {
+ title: 'Unauthorized'
+ }
}
]
},
diff --git a/src/store/api.js b/src/store/api.js
index 04caea1..4918d80 100644
--- a/src/store/api.js
+++ b/src/store/api.js
@@ -1,4 +1,5 @@
import Axios from 'axios';
+import router from '../router';
const api = Axios.create({
withCredentials: true
@@ -6,10 +7,15 @@
api.interceptors.response.use(undefined, error => {
let response = error.response;
+
// TODO: Provide user with a notification and way to keep system active
if (response.status == 401) {
window.location = '/login';
}
+
+ if (response.status == 403) {
+ router.push({ name: 'unauthorized' });
+ }
});
export default {
diff --git a/src/views/Unauthorized/Unauthorized.vue b/src/views/Unauthorized/Unauthorized.vue
new file mode 100644
index 0000000..446270d
--- /dev/null
+++ b/src/views/Unauthorized/Unauthorized.vue
@@ -0,0 +1,20 @@
+<template>
+ <div>
+ <PageTitle :description="description" />
+ </div>
+</template>
+<script>
+import PageTitle from '../../components/Global/PageTitle';
+export default {
+ name: 'Unauthorized',
+ components: {
+ PageTitle
+ },
+ data() {
+ return {
+ description:
+ 'The attempted action is not accessible from the logged in account. Contact your system administrator to check your privilege role.'
+ };
+ }
+};
+</script>
diff --git a/src/views/Unauthorized/index.js b/src/views/Unauthorized/index.js
new file mode 100644
index 0000000..4b4364b
--- /dev/null
+++ b/src/views/Unauthorized/index.js
@@ -0,0 +1,2 @@
+import Unauthorized from './Unauthorized.vue';
+export default Unauthorized;