summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--package-lock.json35
-rw-r--r--package.json1
-rw-r--r--src/router/routes.js2
-rw-r--r--src/store/api.js15
-rw-r--r--src/store/modules/Authentication/AuthenticanStore.js12
-rw-r--r--src/store/modules/SecurityAndAccess/CertificatesStore.js2
-rw-r--r--src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue22
-rw-r--r--src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue1
8 files changed, 65 insertions, 25 deletions
diff --git a/package-lock.json b/package-lock.json
index d482f663..e8b7fdd8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"@carbon/icons-vue": "10.28.0",
"@novnc/novnc": "1.2.0",
"axios": "1.6.0",
+ "axios-cache-interceptor": "1.5.1",
"bootstrap": "4.6.0",
"bootstrap-vue": "2.21.2",
"core-js": "3.9.1",
@@ -5752,6 +5753,25 @@
"proxy-from-env": "^1.1.0"
}
},
+ "node_modules/axios-cache-interceptor": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/axios-cache-interceptor/-/axios-cache-interceptor-1.5.1.tgz",
+ "integrity": "sha512-1p/rTi7DSqUghJ5Ck8GKNt47X6f3IB8XnJ+TM4PwIdhimmCgh0jEQiwI8mBvf2kIMIl4Kz5idwbf/ouK75nEHA==",
+ "dependencies": {
+ "cache-parser": "1.2.4",
+ "fast-defer": "1.1.8",
+ "object-code": "1.3.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/arthurfiorette/axios-cache-interceptor?sponsor=1"
+ },
+ "peerDependencies": {
+ "axios": "^1"
+ }
+ },
"node_modules/axios/node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
@@ -6827,6 +6847,11 @@
"node": ">=4.0.0"
}
},
+ "node_modules/cache-parser": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/cache-parser/-/cache-parser-1.2.4.tgz",
+ "integrity": "sha512-O0KwuHuJnbHUrghHi2kGp0SxnWSIBXTYt7M8WVhW0kbPRUNUKoE/Of6e1rRD6AAxmfxFunKnt90yEK09D+sc5g=="
+ },
"node_modules/cacheable-request": {
"version": "6.1.0",
"dev": true,
@@ -10644,6 +10669,11 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/fast-defer": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/fast-defer/-/fast-defer-1.1.8.tgz",
+ "integrity": "sha512-lEJeOH5VL5R09j6AA0D4Uvq7AgsHw0dAImQQ+F3iSyHZuAxyQfWobsagGpTcOPvJr3urmKRHrs+Gs9hV+/Qm/Q=="
+ },
"node_modules/fast-diff": {
"version": "1.3.0",
"dev": true,
@@ -15862,6 +15892,11 @@
"node": ">=0.10.0"
}
},
+ "node_modules/object-code": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/object-code/-/object-code-1.3.2.tgz",
+ "integrity": "sha512-3CVDmQiru7YYVr+4OpCGrqkVE7GogmWinDcgfno1fXlKgIhtW9FhgHTiV98gMPUjQwWuWvijQDCY8sGnqKrhTw=="
+ },
"node_modules/object-copy": {
"version": "0.1.0",
"dev": true,
diff --git a/package.json b/package.json
index 18f3aded..be2fb417 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
"@carbon/icons-vue": "10.28.0",
"@novnc/novnc": "1.2.0",
"axios": "1.6.0",
+ "axios-cache-interceptor": "1.5.1",
"bootstrap": "4.6.0",
"bootstrap-vue": "2.21.2",
"core-js": "3.9.1",
diff --git a/src/router/routes.js b/src/router/routes.js
index eb376aad..5424cab8 100644
--- a/src/router/routes.js
+++ b/src/router/routes.js
@@ -301,4 +301,4 @@ const routes = [
},
];
-export default routes;
+export { routes as default, roles };
diff --git a/src/store/api.js b/src/store/api.js
index 9fd900d2..0bd84e62 100644
--- a/src/store/api.js
+++ b/src/store/api.js
@@ -1,4 +1,6 @@
import Axios from 'axios';
+import { setupCache, buildWebStorage } from 'axios-cache-interceptor';
+
//Do not change store import.
//Exact match alias set to support
//dotenv customizations.
@@ -7,10 +9,21 @@ import store from '../store';
Axios.defaults.headers.common['Accept'] = 'application/json';
Axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
-const api = Axios.create({
+const axiosInstance = Axios.create({
withCredentials: true,
});
+const api = setupCache(axiosInstance, {
+ debug: console.log,
+ methods: ['get'],
+ interpretHeader: false,
+ etag: true,
+ modifiedSince: false,
+ staleIfError: false,
+ ttl: 0,
+ storage: buildWebStorage(localStorage, 'webui-vue-cache:'),
+});
+
api.interceptors.response.use(undefined, (error) => {
let response = error.response;
diff --git a/src/store/modules/Authentication/AuthenticanStore.js b/src/store/modules/Authentication/AuthenticanStore.js
index 57270159..2006661b 100644
--- a/src/store/modules/Authentication/AuthenticanStore.js
+++ b/src/store/modules/Authentication/AuthenticanStore.js
@@ -1,6 +1,7 @@
import api from '@/store/api';
import Cookies from 'js-cookie';
import router from '@/router';
+import { roles } from '@/router/routes';
const AuthenticationStore = {
namespaced: true,
@@ -68,7 +69,16 @@ const AuthenticationStore = {
commit('global/setPrivilege', data.RoleId, { root: true });
return data;
})
- .catch((error) => console.log(error));
+ .catch((error) => {
+ if (error.response?.status === 404) {
+ // We have valid credentials but user isn't known, assume remote
+ // authentication (e.g. LDAP) and do not restrict the routing
+ commit('global/setPrivilege', roles.administrator, { root: true });
+ return {};
+ } else {
+ console.log(error);
+ }
+ });
},
resetStoreState({ state }) {
state.authError = false;
diff --git a/src/store/modules/SecurityAndAccess/CertificatesStore.js b/src/store/modules/SecurityAndAccess/CertificatesStore.js
index 3583d7f1..666f5fd5 100644
--- a/src/store/modules/SecurityAndAccess/CertificatesStore.js
+++ b/src/store/modules/SecurityAndAccess/CertificatesStore.js
@@ -166,7 +166,6 @@ const CertificatesStore = {
keyPairAlgorithm,
keyBitLength,
keyCurveId,
- challengePassword,
contactPerson,
emailAddress,
alternateName,
@@ -187,7 +186,6 @@ const CertificatesStore = {
if (keyCurveId) data.KeyCurveId = keyCurveId;
if (keyBitLength) data.KeyBitLength = keyBitLength;
- if (challengePassword) data.ChallengePassword = challengePassword;
if (contactPerson) data.ContactPerson = contactPerson;
if (emailAddress) data.Email = emailAddress;
diff --git a/src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue b/src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue
index 04d23d2f..d9d65912 100644
--- a/src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue
+++ b/src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue
@@ -155,24 +155,6 @@
</b-form-group>
</b-col>
<b-col lg="6">
- <b-form-group label-for="challenge-password">
- <template #label>
- {{ $t('pageCertificates.modal.challengePassword') }} -
- <span class="form-text d-inline">
- {{ $t('global.form.optional') }}
- </span>
- </template>
- <b-form-input
- id="challenge-password"
- v-model="form.challengePassword"
- type="text"
- data-test-id="modalGenerateCsr-input-challengePassword"
- />
- </b-form-group>
- </b-col>
- </b-row>
- <b-row>
- <b-col lg="6">
<b-form-group label-for="contact-person">
<template #label>
{{ $t('pageCertificates.modal.contactPerson') }} -
@@ -188,6 +170,8 @@
/>
</b-form-group>
</b-col>
+ </b-row>
+ <b-row>
<b-col lg="6">
<b-form-group label-for="email-address">
<template #label>
@@ -400,7 +384,6 @@ export default {
companyName: null,
companyUnit: null,
commonName: null,
- challengePassword: null,
contactPerson: null,
emailAddress: null,
alternateName: [],
@@ -436,7 +419,6 @@ export default {
companyName: { required },
companyUnit: { required },
commonName: { required },
- challengePassword: {},
contactPerson: {},
emailAddress: {},
alternateName: {},
diff --git a/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue b/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
index 9f206296..11870a87 100644
--- a/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
+++ b/src/views/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
@@ -9,6 +9,7 @@
v-model="currentPowerRestorePolicy"
:options="options"
name="power-restore-policy"
+ stacked
></b-form-radio-group>
</b-form-group>
</b-col>