summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitalii Lysak <v.lysak@dunice.net>2022-08-10 15:46:15 +0300
committerVitalii Lysak <v.lysak@dunice.net>2022-08-10 15:46:15 +0300
commitb4d1fb8b8e6e6cdb7be76a2d4fa0d2b9a84f3ba2 (patch)
tree8806fa43f2e0d1301a89ddd4c7667d10568e531f
parent5fff754d48ec658673c11f8e593d3af4f94d79df (diff)
downloadwebui-vue-b4d1fb8b8e6e6cdb7be76a2d4fa0d2b9a84f3ba2.tar.xz
SILABMC-236: upd layput for ReadOnly role
-rw-r--r--package-lock.json187
-rw-r--r--package.json1
-rw-r--r--src/assets/styles/bmc/_sila/_base.scss24
-rw-r--r--src/components/_sila/Global/FormFile.vue1
-rw-r--r--src/components/_sila/Global/TableToolbar.vue1
-rw-r--r--src/store/modules/Authentication/AuthenticanStore.js34
-rw-r--r--src/views/_sila/Login/Login.vue8
-rw-r--r--src/views/_sila/Logs/EventLogs/EventLogs.vue23
-rw-r--r--src/views/_sila/Operations/FactoryReset/FactoryReset.vue2
-rw-r--r--src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue5
-rw-r--r--src/views/_sila/Operations/KeyClear/KeyClear.vue18
-rw-r--r--src/views/_sila/Operations/Kvm/Kvm.vue7
-rw-r--r--src/views/_sila/Operations/RebootBmc/RebootBmc.vue1
-rw-r--r--src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue7
-rw-r--r--src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue18
-rw-r--r--src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue15
-rw-r--r--src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue8
-rw-r--r--src/views/_sila/Overview/DateTime/DateTime.vue33
-rw-r--r--src/views/_sila/Overview/Inventory/InventoryServiceIndicator.vue1
-rw-r--r--src/views/_sila/Overview/Inventory/InventoryTableAssembly.vue1
-rw-r--r--src/views/_sila/Overview/Inventory/InventoryTableBmcManager.vue1
-rw-r--r--src/views/_sila/Overview/Inventory/InventoryTableChassis.vue1
-rw-r--r--src/views/_sila/Overview/Inventory/InventoryTableDimmSlot.vue25
-rw-r--r--src/views/_sila/Overview/Inventory/InventoryTableProcessors.vue1
-rw-r--r--src/views/_sila/Overview/Inventory/InventoryTableSystem.vue1
-rw-r--r--src/views/_sila/Overview/Network/NetworkGlobalSettings.vue10
-rw-r--r--src/views/_sila/Overview/Network/NetworkInterfaceSettings.vue1
-rw-r--r--src/views/_sila/Overview/Network/TableDns.vue6
-rw-r--r--src/views/_sila/Overview/Network/TableIpv4.vue6
-rw-r--r--src/views/_sila/Overview/OverviewInventory.vue1
-rw-r--r--src/views/_sila/ResourceManagement/Power.vue7
-rw-r--r--src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue11
-rw-r--r--src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue33
-rw-r--r--src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue5
-rw-r--r--src/views/_sila/SecurityAndAccess/Policies/Policies.vue4
-rw-r--r--src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue12
-rw-r--r--src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue8
37 files changed, 348 insertions, 180 deletions
diff --git a/package-lock.json b/package-lock.json
index 048d4936..2c8623cf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,6 +16,7 @@
"core-js": "3.9.1",
"date-fns": "2.19.0",
"date-fns-tz": "1.1.3",
+ "encrypt-storage": "2.2.10",
"highcharts-vue": "1.4.0",
"js-cookie": "2.2.1",
"lodash": "4.17.21",
@@ -7547,7 +7548,6 @@
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
"integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "dev": true,
"dependencies": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
@@ -7558,8 +7558,7 @@
"node_modules/asn1.js/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
},
"node_modules/assert": {
"version": "1.5.0",
@@ -8404,8 +8403,7 @@
"node_modules/bn.js": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz",
- "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==",
- "dev": true
+ "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw=="
},
"node_modules/body-parser": {
"version": "1.19.0",
@@ -8603,8 +8601,7 @@
"node_modules/brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
- "dev": true
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
},
"node_modules/browser-process-hrtime": {
"version": "1.0.0",
@@ -8631,7 +8628,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "dev": true,
"dependencies": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
@@ -8645,7 +8641,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "dev": true,
"dependencies": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
@@ -8656,7 +8651,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
- "dev": true,
"dependencies": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
@@ -8668,7 +8662,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
"integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
- "dev": true,
"dependencies": {
"bn.js": "^5.0.0",
"randombytes": "^2.0.1"
@@ -8678,7 +8671,6 @@
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
"integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
- "dev": true,
"dependencies": {
"bn.js": "^5.1.1",
"browserify-rsa": "^4.0.1",
@@ -8695,7 +8687,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -8709,7 +8700,6 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -8810,8 +8800,7 @@
"node_modules/buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
- "dev": true
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
},
"node_modules/builtin-status-codes": {
"version": "3.0.0",
@@ -9227,7 +9216,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dev": true,
"dependencies": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
@@ -10454,7 +10442,6 @@
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
"integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
- "dev": true,
"dependencies": {
"bn.js": "^4.1.0",
"elliptic": "^6.5.3"
@@ -10463,14 +10450,12 @@
"node_modules/create-ecdh/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
},
"node_modules/create-hash": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dev": true,
"dependencies": {
"cipher-base": "^1.0.1",
"inherits": "^2.0.1",
@@ -10483,7 +10468,6 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dev": true,
"dependencies": {
"cipher-base": "^1.0.3",
"create-hash": "^1.1.0",
@@ -10522,7 +10506,6 @@
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dev": true,
"dependencies": {
"browserify-cipher": "^1.0.0",
"browserify-sign": "^4.0.0",
@@ -10540,6 +10523,11 @@
"node": "*"
}
},
+ "node_modules/crypto-js": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
+ "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
+ },
"node_modules/crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@@ -11358,7 +11346,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
"integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
- "dev": true,
"dependencies": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
@@ -11398,7 +11385,6 @@
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "dev": true,
"dependencies": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
@@ -11408,8 +11394,7 @@
"node_modules/diffie-hellman/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
},
"node_modules/dir-glob": {
"version": "2.2.2",
@@ -11721,7 +11706,6 @@
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
"integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "dev": true,
"dependencies": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
@@ -11735,8 +11719,7 @@
"node_modules/elliptic/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
},
"node_modules/emoji-regex": {
"version": "8.0.0",
@@ -11762,6 +11745,15 @@
"node": ">= 0.8"
}
},
+ "node_modules/encrypt-storage": {
+ "version": "2.2.10",
+ "resolved": "https://registry.npmjs.org/encrypt-storage/-/encrypt-storage-2.2.10.tgz",
+ "integrity": "sha512-3Z2gD+kBQYrFXvofNzLB6p5kMuoq9wHTGrR6srJoUhMrbWSbpoCsOAd0pfCiVJ2VS+5rbZzZXNCjhB1s4uykXA==",
+ "dependencies": {
+ "crypto-browserify": "^3.12.0",
+ "crypto-js": "^4.1.1"
+ }
+ },
"node_modules/end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -12562,7 +12554,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "dev": true,
"dependencies": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
@@ -13823,7 +13814,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
"integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
- "dev": true,
"dependencies": {
"inherits": "^2.0.4",
"readable-stream": "^3.6.0",
@@ -13837,7 +13827,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -13851,7 +13840,6 @@
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -13877,7 +13865,6 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dev": true,
"dependencies": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.1"
@@ -13926,7 +13913,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
- "dev": true,
"dependencies": {
"hash.js": "^1.0.3",
"minimalistic-assert": "^1.0.0",
@@ -14570,8 +14556,7 @@
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ini": {
"version": "1.3.8",
@@ -18500,7 +18485,6 @@
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
- "dev": true,
"dependencies": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1",
@@ -18614,7 +18598,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dev": true,
"dependencies": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
@@ -18626,8 +18609,7 @@
"node_modules/miller-rabin/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
},
"node_modules/mime": {
"version": "2.5.2",
@@ -18739,14 +18721,12 @@
"node_modules/minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
"node_modules/minimalistic-crypto-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
- "dev": true
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
},
"node_modules/minimatch": {
"version": "3.0.4",
@@ -19838,7 +19818,6 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
"integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
- "dev": true,
"dependencies": {
"asn1.js": "^5.2.0",
"browserify-aes": "^1.0.0",
@@ -19986,7 +19965,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
"integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
- "dev": true,
"dependencies": {
"create-hash": "^1.1.2",
"create-hmac": "^1.1.4",
@@ -21108,7 +21086,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
"integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
- "dev": true,
"dependencies": {
"bn.js": "^4.1.0",
"browserify-rsa": "^4.0.0",
@@ -21121,8 +21098,7 @@
"node_modules/public-encrypt/node_modules/bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
},
"node_modules/pump": {
"version": "3.0.0",
@@ -21257,7 +21233,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
"dependencies": {
"safe-buffer": "^5.1.0"
}
@@ -21271,7 +21246,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dev": true,
"dependencies": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
@@ -21881,7 +21855,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "dev": true,
"dependencies": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
@@ -21943,8 +21916,7 @@
"node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/safe-regex": {
"version": "1.1.0",
@@ -21958,8 +21930,7 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sane": {
"version": "4.1.0",
@@ -22364,7 +22335,6 @@
"version": "2.4.11",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dev": true,
"dependencies": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
@@ -23011,7 +22981,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
"dependencies": {
"safe-buffer": "~5.1.0"
}
@@ -24500,8 +24469,7 @@
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"node_modules/util.promisify": {
"version": "1.1.1",
@@ -32776,7 +32744,6 @@
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
"integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
- "dev": true,
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
@@ -32787,8 +32754,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -33480,8 +33446,7 @@
"bn.js": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz",
- "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==",
- "dev": true
+ "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw=="
},
"body-parser": {
"version": "1.19.0",
@@ -33652,8 +33617,7 @@
"brorand": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
- "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
- "dev": true
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8="
},
"browser-process-hrtime": {
"version": "1.0.0",
@@ -33682,7 +33646,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
"integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
- "dev": true,
"requires": {
"buffer-xor": "^1.0.3",
"cipher-base": "^1.0.0",
@@ -33696,7 +33659,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
"integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
- "dev": true,
"requires": {
"browserify-aes": "^1.0.4",
"browserify-des": "^1.0.0",
@@ -33707,7 +33669,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
"integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
- "dev": true,
"requires": {
"cipher-base": "^1.0.1",
"des.js": "^1.0.0",
@@ -33719,7 +33680,6 @@
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
"integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
- "dev": true,
"requires": {
"bn.js": "^5.0.0",
"randombytes": "^2.0.1"
@@ -33729,7 +33689,6 @@
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
"integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
- "dev": true,
"requires": {
"bn.js": "^5.1.1",
"browserify-rsa": "^4.0.1",
@@ -33746,7 +33705,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -33756,8 +33714,7 @@
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}
}
},
@@ -33833,8 +33790,7 @@
"buffer-xor": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
- "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
- "dev": true
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk="
},
"builtin-status-codes": {
"version": "3.0.0",
@@ -34166,7 +34122,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
- "dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
@@ -35157,7 +35112,6 @@
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
"integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
- "dev": true,
"requires": {
"bn.js": "^4.1.0",
"elliptic": "^6.5.3"
@@ -35166,8 +35120,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -35175,7 +35128,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
"integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
- "dev": true,
"requires": {
"cipher-base": "^1.0.1",
"inherits": "^2.0.1",
@@ -35188,7 +35140,6 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
"integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
- "dev": true,
"requires": {
"cipher-base": "^1.0.3",
"create-hash": "^1.1.0",
@@ -35223,7 +35174,6 @@
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
- "dev": true,
"requires": {
"browserify-cipher": "^1.0.0",
"browserify-sign": "^4.0.0",
@@ -35238,6 +35188,11 @@
"randomfill": "^1.0.3"
}
},
+ "crypto-js": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
+ "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
+ },
"crypto-random-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
@@ -35878,7 +35833,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
"integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
- "dev": true,
"requires": {
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0"
@@ -35912,7 +35866,6 @@
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
"integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
- "dev": true,
"requires": {
"bn.js": "^4.1.0",
"miller-rabin": "^4.0.0",
@@ -35922,8 +35875,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -36201,7 +36153,6 @@
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
"integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
- "dev": true,
"requires": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
@@ -36215,8 +36166,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -36238,6 +36188,15 @@
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
"dev": true
},
+ "encrypt-storage": {
+ "version": "2.2.10",
+ "resolved": "https://registry.npmjs.org/encrypt-storage/-/encrypt-storage-2.2.10.tgz",
+ "integrity": "sha512-3Z2gD+kBQYrFXvofNzLB6p5kMuoq9wHTGrR6srJoUhMrbWSbpoCsOAd0pfCiVJ2VS+5rbZzZXNCjhB1s4uykXA==",
+ "requires": {
+ "crypto-browserify": "^3.12.0",
+ "crypto-js": "^4.1.1"
+ }
+ },
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -36822,7 +36781,6 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
- "dev": true,
"requires": {
"md5.js": "^1.3.4",
"safe-buffer": "^5.1.1"
@@ -37839,7 +37797,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
"integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
- "dev": true,
"requires": {
"inherits": "^2.0.4",
"readable-stream": "^3.6.0",
@@ -37850,7 +37807,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
- "dev": true,
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@@ -37860,8 +37816,7 @@
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
}
}
},
@@ -37875,7 +37830,6 @@
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
"integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
- "dev": true,
"requires": {
"inherits": "^2.0.3",
"minimalistic-assert": "^1.0.1"
@@ -37915,7 +37869,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
- "dev": true,
"requires": {
"hash.js": "^1.0.3",
"minimalistic-assert": "^1.0.0",
@@ -38436,8 +38389,7 @@
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini": {
"version": "1.3.8",
@@ -41570,7 +41522,6 @@
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
"integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
- "dev": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1",
@@ -41671,7 +41622,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
- "dev": true,
"requires": {
"bn.js": "^4.0.0",
"brorand": "^1.0.1"
@@ -41680,8 +41630,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -41767,14 +41716,12 @@
"minimalistic-assert": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
- "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
- "dev": true
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
},
"minimalistic-crypto-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
- "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
- "dev": true
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo="
},
"minimatch": {
"version": "3.0.4",
@@ -42665,7 +42612,6 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
"integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
- "dev": true,
"requires": {
"asn1.js": "^5.2.0",
"browserify-aes": "^1.0.0",
@@ -42790,7 +42736,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz",
"integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==",
- "dev": true,
"requires": {
"create-hash": "^1.1.2",
"create-hmac": "^1.1.4",
@@ -43743,7 +43688,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
"integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
- "dev": true,
"requires": {
"bn.js": "^4.1.0",
"browserify-rsa": "^4.0.0",
@@ -43756,8 +43700,7 @@
"bn.js": {
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
- "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
- "dev": true
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -43859,7 +43802,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
"requires": {
"safe-buffer": "^5.1.0"
}
@@ -43873,7 +43815,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
"integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
- "dev": true,
"requires": {
"randombytes": "^2.0.5",
"safe-buffer": "^5.1.0"
@@ -44356,7 +44297,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
"integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
- "dev": true,
"requires": {
"hash-base": "^3.0.0",
"inherits": "^2.0.1"
@@ -44398,8 +44338,7 @@
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"safe-regex": {
"version": "1.1.0",
@@ -44413,8 +44352,7 @@
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "dev": true
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sane": {
"version": "4.1.0",
@@ -44748,7 +44686,6 @@
"version": "2.4.11",
"resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
"integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
- "dev": true,
"requires": {
"inherits": "^2.0.1",
"safe-buffer": "^5.0.1"
@@ -45313,7 +45250,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
"requires": {
"safe-buffer": "~5.1.0"
}
@@ -46516,8 +46452,7 @@
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "dev": true
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
"util.promisify": {
"version": "1.1.1",
diff --git a/package.json b/package.json
index 6410a3f1..0604492e 100644
--- a/package.json
+++ b/package.json
@@ -23,6 +23,7 @@
"core-js": "3.9.1",
"date-fns": "2.19.0",
"date-fns-tz": "1.1.3",
+ "encrypt-storage": "2.2.10",
"highcharts-vue": "1.4.0",
"js-cookie": "2.2.1",
"lodash": "4.17.21",
diff --git a/src/assets/styles/bmc/_sila/_base.scss b/src/assets/styles/bmc/_sila/_base.scss
index cf5ffeb5..cc01b569 100644
--- a/src/assets/styles/bmc/_sila/_base.scss
+++ b/src/assets/styles/bmc/_sila/_base.scss
@@ -150,11 +150,6 @@ h6,
}
}
-.disabledDiv {
- pointer-events: none;
- opacity: 0.3;
-}
-
.white-space--nowrap {
white-space: nowrap;
}
@@ -165,3 +160,22 @@ h6,
.align-items--center {
align-items: center;
}
+
+.disabledDiv {
+ pointer-events: none !important;
+ opacity: 0.5 !important;
+}
+
+.custom-select {
+ opacity: 0.5 !important;
+}
+
+.custom-control {
+ input:disabled ~ label::before {
+ opacity: 0.5 !important;
+ }
+}
+
+button:disabled {
+ opacity: 0.5 !important;
+}
diff --git a/src/components/_sila/Global/FormFile.vue b/src/components/_sila/Global/FormFile.vue
index ee93ba49..686c9a09 100644
--- a/src/components/_sila/Global/FormFile.vue
+++ b/src/components/_sila/Global/FormFile.vue
@@ -28,6 +28,7 @@
'btn-secondary': isSecondary,
'btn-primary': !isSecondary,
}"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@click="$bvModal.show(`modal-${id}`)"
>
{{ $t('global.fileUpload.browseText') }}
diff --git a/src/components/_sila/Global/TableToolbar.vue b/src/components/_sila/Global/TableToolbar.vue
index 028b0497..53d004cf 100644
--- a/src/components/_sila/Global/TableToolbar.vue
+++ b/src/components/_sila/Global/TableToolbar.vue
@@ -13,6 +13,7 @@
:data-test-id="`table-button-${action.value}Selected`"
variant="primary"
class="d-block"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@click="$emit('batch-action', action.value)"
>
{{ action.label }}
diff --git a/src/store/modules/Authentication/AuthenticanStore.js b/src/store/modules/Authentication/AuthenticanStore.js
index 07d5ee8b..a574331b 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 { EncryptStorage } from 'encrypt-storage';
const AuthenticationStore = {
namespaced: true,
@@ -17,6 +18,10 @@ const AuthenticationStore = {
);
},
token: (state) => state.xsrfCookie,
+ role: () => {
+ const encryptStorage = new EncryptStorage('ZAaZi(P,m5+BcM|UTox5');
+ return encryptStorage.getItem('storedUserrole');
+ },
},
mutations: {
authSuccess(state) {
@@ -33,13 +38,30 @@ const AuthenticationStore = {
state.xsrfCookie = undefined;
state.isAuthenticatedCookie = undefined;
},
+ setRole(state, role) {
+ const encryptStorage = new EncryptStorage('ZAaZi(P,m5+BcM|UTox5');
+ encryptStorage.setItem('storedUserrole', role);
+ },
},
actions: {
- login({ commit }, { username, password }) {
+ login({ commit, dispatch }, { username, password }) {
commit('authError', false);
return api
.post('/login', { data: [username, password] })
- .then(() => commit('authSuccess'))
+ .then(() => {
+ dispatch('getUser', username)
+ .then((response) => {
+ if (response.data?.RoleId) {
+ commit('setRole', response.data.RoleId);
+ }
+ })
+ .catch((error) => {
+ commit('authError');
+ throw new Error(error);
+ });
+
+ commit('authSuccess');
+ })
.catch((error) => {
commit('authError');
throw new Error(error);
@@ -52,9 +74,8 @@ const AuthenticationStore = {
.then(() => router.go('/login'))
.catch((error) => console.log(error));
},
- checkPasswordChangeRequired(_, username) {
- api
- .get(`/redfish/v1/AccountService/Accounts/${username}`)
+ checkPasswordChangeRequired({ dispatch }, username) {
+ dispatch('getUser', username)
.then(({ data: { PasswordChangeRequired } }) => PasswordChangeRequired)
.catch((error) => console.log(error));
},
@@ -63,6 +84,9 @@ const AuthenticationStore = {
state.xsrfCookie = Cookies.get('XSRF-TOKEN');
state.isAuthenticatedCookie = Cookies.get('IsAuthenticated');
},
+ getUser(_, username) {
+ return api.get(`/redfish/v1/AccountService/Accounts/${username}`);
+ },
},
};
diff --git a/src/views/_sila/Login/Login.vue b/src/views/_sila/Login/Login.vue
index b3bd37c8..db6a6a09 100644
--- a/src/views/_sila/Login/Login.vue
+++ b/src/views/_sila/Login/Login.vue
@@ -129,9 +129,13 @@ export default {
})
.then((passwordChangeRequired) => {
if (passwordChangeRequired) {
- window.location.href = '/change-password';
+ setTimeout(() => {
+ window.location.href = '/change-password';
+ }, 1000);
} else {
- window.location.href = '/';
+ setTimeout(() => {
+ window.location.href = '/';
+ }, 1000);
}
})
.catch((error) => console.log(error))
diff --git a/src/views/_sila/Logs/EventLogs/EventLogs.vue b/src/views/_sila/Logs/EventLogs/EventLogs.vue
index 8cc65bfb..f283fc8b 100644
--- a/src/views/_sila/Logs/EventLogs/EventLogs.vue
+++ b/src/views/_sila/Logs/EventLogs/EventLogs.vue
@@ -32,7 +32,10 @@
<table-filter :filters="tableFilters" @filter-change="onFilterChange" />
<b-button
variant="link"
- :disabled="allLogs.length === 0"
+ :disabled="
+ allLogs.length === 0 &&
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@click="deleteAllLogs"
>
<icon-delete /> {{ $t('global.action.deleteAll') }}
@@ -57,10 +60,18 @@
@batch-action="onBatchAction"
>
<template #toolbar-buttons>
- <b-button variant="primary" @click="resolveLogs">
+ <b-button
+ variant="primary"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ @click="resolveLogs"
+ >
{{ $t('pageEventLogs.resolve') }}
</b-button>
- <b-button variant="primary" @click="unresolveLogs">
+ <b-button
+ variant="primary"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ @click="unresolveLogs"
+ >
{{ $t('pageEventLogs.unresolve') }}
</b-button>
<table-toolbar-export
@@ -184,6 +195,7 @@
v-model="row.item.status"
name="switch"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="changelogStatus(row.item)"
>
<span v-if="row.item.status">
@@ -206,6 +218,11 @@
:row-data="row.item"
:export-name="exportFileNameByDate('export')"
:data-test-id="`eventLogs-button-deleteRow-${row.index}`"
+ :class="{
+ disabledDiv:
+ $store.getters['authentication/role'] === 'ReadOnly' &&
+ action.value === 'delete',
+ }"
@click-table-action="onTableRowAction($event, row.item)"
>
<template #icon>
diff --git a/src/views/_sila/Operations/FactoryReset/FactoryReset.vue b/src/views/_sila/Operations/FactoryReset/FactoryReset.vue
index 4e315619..b7ae5b8d 100644
--- a/src/views/_sila/Operations/FactoryReset/FactoryReset.vue
+++ b/src/views/_sila/Operations/FactoryReset/FactoryReset.vue
@@ -17,6 +17,7 @@
value="resetBios"
aria-describedby="reset-bios"
data-test-id="factoryReset-radio-resetBios"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
{{ $t('pageFactoryReset.form.resetBiosOptionLabel') }}
</b-form-radio>
@@ -29,6 +30,7 @@
value="resetToDefaults"
aria-describedby="reset-to-defaults"
data-test-id="factoryReset-radio-resetToDefaults"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
{{ $t('pageFactoryReset.form.resetToDefaultsOptionLabel') }}
</b-form-radio>
diff --git a/src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue b/src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue
index 23fe90f2..dcf867ee 100644
--- a/src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue
+++ b/src/views/_sila/Operations/Firmware/FirmwareFormUpdate.vue
@@ -60,7 +60,10 @@
data-test-id="firmware-button-startUpdate"
type="submit"
variant="primary"
- :disabled="isPageDisabled"
+ :disabled="
+ isPageDisabled ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
>
{{ $t('pageFirmware.form.updateFirmware.startUpdate') }}
</b-btn>
diff --git a/src/views/_sila/Operations/KeyClear/KeyClear.vue b/src/views/_sila/Operations/KeyClear/KeyClear.vue
index 8955f6cd..b49118d1 100644
--- a/src/views/_sila/Operations/KeyClear/KeyClear.vue
+++ b/src/views/_sila/Operations/KeyClear/KeyClear.vue
@@ -23,19 +23,31 @@
v-model="keyOption"
stacked
>
- <b-form-radio class="mb-1" value="NONE">
+ <b-form-radio
+ class="mb-1"
+ value="NONE"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ >
{{ $t('pageKeyClear.form.none') }}
</b-form-radio>
<b-form-text id="key-clear-not-requested" class="ml-4 mb-3">
{{ $t('pageKeyClear.form.keyClearNotRequested') }}
</b-form-text>
- <b-form-radio class="mb-1" value="ALL">
+ <b-form-radio
+ class="mb-1"
+ value="ALL"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ >
{{ $t('pageKeyClear.form.clearAllLabel') }}
</b-form-radio>
<b-form-text id="clear-all" class="ml-4 mb-3">
{{ $t('pageKeyClear.form.clearAllHeperText') }}
</b-form-text>
- <b-form-radio class="mb-1" value="POWERVM_SYSKEY">
+ <b-form-radio
+ class="mb-1"
+ value="POWERVM_SYSKEY"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ >
{{ $t('pageKeyClear.form.clearHypervisorSystemKeyLabel') }}
</b-form-radio>
<b-form-text id="clear-hypervisor-key" class="ml-4 mb-3">
diff --git a/src/views/_sila/Operations/Kvm/Kvm.vue b/src/views/_sila/Operations/Kvm/Kvm.vue
index ede24608..4db46372 100644
--- a/src/views/_sila/Operations/Kvm/Kvm.vue
+++ b/src/views/_sila/Operations/Kvm/Kvm.vue
@@ -1,7 +1,12 @@
<template>
<b-container fluid="xl">
<page-title />
- <div class="terminal-container">
+ <div
+ class="terminal-container"
+ :class="{
+ disabledDiv: $store.getters['authentication/role'] === 'ReadOnly',
+ }"
+ >
<kvm-console :is-full-window="false" />
</div>
</b-container>
diff --git a/src/views/_sila/Operations/RebootBmc/RebootBmc.vue b/src/views/_sila/Operations/RebootBmc/RebootBmc.vue
index fa16f55e..f332de88 100644
--- a/src/views/_sila/Operations/RebootBmc/RebootBmc.vue
+++ b/src/views/_sila/Operations/RebootBmc/RebootBmc.vue
@@ -23,6 +23,7 @@
variant="primary"
class="d-block mt-5"
data-test-id="rebootBmc-button-reboot"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@click="onClick"
>
{{ $t('pageRebootBmc.rebootBmc') }}
diff --git a/src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue b/src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue
index 22824772..e09b43d3 100644
--- a/src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue
+++ b/src/views/_sila/Operations/SerialOverLan/SerialOverLan.vue
@@ -3,7 +3,12 @@
<page-title class="mb-4" :description="$t('pageSerialOverLan.subTitle')" />
<page-section class="mb-0">
- <serial-over-lan-console :is-full-window="false" />
+ <serial-over-lan-console
+ :is-full-window="false"
+ :class="{
+ disabledDiv: $store.getters['authentication/role'] === 'ReadOnly',
+ }"
+ />
</page-section>
</b-container>
</template>
diff --git a/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue b/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue
index 8d74e381..1288af0a 100644
--- a/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue
+++ b/src/views/_sila/Operations/ServerPowerOperations/BootSettings.vue
@@ -11,7 +11,10 @@
<b-form-select
id="boot-option"
v-model="form.bootOption"
- :disabled="bootSourceOptions.length === 0"
+ :disabled="
+ bootSourceOptions.length === 0 ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
:options="bootSourceOptions"
@change="onChangeSelect"
>
@@ -20,7 +23,10 @@
<b-form-checkbox
v-model="form.oneTimeBoot"
class="mb-4"
- :disabled="form.bootOption === 'None'"
+ :disabled="
+ form.bootOption === 'None' ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="$v.form.oneTimeBoot.$touch()"
>
{{ $t('pageServerPowerOperations.bootSettings.enableOneTimeBoot') }}
@@ -37,12 +43,18 @@
id="tpm-required-policy"
v-model="form.tpmPolicyOn"
aria-describedby="tpm-required-policy-help-block"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="$v.form.tpmPolicyOn.$touch()"
>
{{ $t('global.status.enabled') }}
</b-form-checkbox>
</b-form-group>
- <b-button variant="primary" type="submit" class="mb-3">
+ <b-button
+ variant="primary"
+ type="submit"
+ class="mb-3"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ >
{{ $t('global.action.save') }}
</b-button>
</b-form>
diff --git a/src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue b/src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue
index e848215f..f8a18a9e 100644
--- a/src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue
+++ b/src/views/_sila/Operations/ServerPowerOperations/ServerPowerOperations.vue
@@ -72,6 +72,7 @@
<b-button
variant="primary"
data-test-id="serverPowerOperations-button-powerOn"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@click="powerOn"
>
{{ $t('pageServerPowerOperations.powerOn') }}
@@ -88,6 +89,9 @@
name="reboot-option"
data-test-id="serverPowerOperations-radio-rebootOrderly"
value="orderly"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
>
{{ $t('pageServerPowerOperations.orderlyReboot') }}
</b-form-radio>
@@ -96,6 +100,9 @@
name="reboot-option"
data-test-id="serverPowerOperations-radio-rebootImmediate"
value="immediate"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
>
{{ $t('pageServerPowerOperations.immediateReboot') }}
</b-form-radio>
@@ -104,6 +111,7 @@
variant="primary"
type="submit"
data-test-id="serverPowerOperations-button-reboot"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
{{ $t('pageServerPowerOperations.reboot') }}
</b-button>
@@ -118,6 +126,9 @@
name="shutdown-option"
data-test-id="serverPowerOperations-radio-shutdownOrderly"
value="orderly"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
>
{{ $t('pageServerPowerOperations.orderlyShutdown') }}
</b-form-radio>
@@ -126,6 +137,9 @@
name="shutdown-option"
data-test-id="serverPowerOperations-radio-shutdownImmediate"
value="immediate"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
>
{{ $t('pageServerPowerOperations.immediateShutdown') }}
</b-form-radio>
@@ -134,6 +148,7 @@
variant="primary"
type="submit"
data-test-id="serverPowerOperations-button-shutDown"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
{{ $t('pageServerPowerOperations.shutDown') }}
</b-button>
diff --git a/src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue b/src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue
index 8b396f41..be5e2ee9 100644
--- a/src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue
+++ b/src/views/_sila/Operations/VirtualMedia/VirtualMedia.vue
@@ -17,6 +17,9 @@
v-if="!dev.isActive"
:id="concatId(dev.id)"
v-model="dev.file"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
>
<template #invalid>
<b-form-invalid-feedback role="alert">
@@ -73,7 +76,10 @@
>
<b-button
variant="primary"
- :disabled="device.isActive"
+ :disabled="
+ device.isActive ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@click="configureConnection(device)"
>
{{ $t('pageVirtualMedia.configureConnection') }}
diff --git a/src/views/_sila/Overview/DateTime/DateTime.vue b/src/views/_sila/Overview/DateTime/DateTime.vue
index 796a57ac..e9de12c5 100644
--- a/src/views/_sila/Overview/DateTime/DateTime.vue
+++ b/src/views/_sila/Overview/DateTime/DateTime.vue
@@ -42,6 +42,7 @@
v-model="form.configurationSelected"
value="manual"
data-test-id="dateTime-radio-configureManual"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
{{ $t('pageDateTime.form.manual') }}
</b-form-radio>
@@ -57,7 +58,10 @@
id="input-manual-date"
v-model="form.manual.date"
:state="getValidationState($v.form.manual.date)"
- :disabled="ntpOptionSelected"
+ :disabled="
+ ntpOptionSelected ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
data-test-id="dateTime-input-manualDate"
class="form-control-with-button"
@blur="$v.form.manual.date.$touch()"
@@ -81,7 +85,10 @@
$t('global.calendar.useCursorKeysToNavigateCalendarDates')
"
:title="$t('global.calendar.selectDate')"
- :disabled="ntpOptionSelected"
+ :disabled="
+ ntpOptionSelected ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
button-variant="link"
aria-controls="input-manual-date"
>
@@ -106,7 +113,10 @@
id="input-manual-time"
v-model="form.manual.time"
:state="getValidationState($v.form.manual.time)"
- :disabled="ntpOptionSelected"
+ :disabled="
+ ntpOptionSelected ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
data-test-id="dateTime-input-manualTime"
@blur="$v.form.manual.time.$touch()"
/>
@@ -126,6 +136,7 @@
v-model="form.configurationSelected"
value="ntp"
data-test-id="dateTime-radio-configureNTP"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
NTP
</b-form-radio>
@@ -140,7 +151,10 @@
id="input-ntp-1"
v-model="form.ntp.firstAddress"
:state="getValidationState($v.form.ntp.firstAddress)"
- :disabled="manualOptionSelected"
+ :disabled="
+ manualOptionSelected ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
data-test-id="dateTime-input-ntpServer1"
@blur="$v.form.ntp.firstAddress.$touch()"
/>
@@ -165,7 +179,10 @@
id="input-ntp-2"
v-model="form.ntp.secondAddress"
:state="getValidationState($v.form.ntp.secondAddress)"
- :disabled="manualOptionSelected"
+ :disabled="
+ manualOptionSelected ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
data-test-id="dateTime-input-ntpServer2"
@blur="$v.form.ntp.secondAddress.$touch()"
/>
@@ -187,7 +204,10 @@
id="input-ntp-3"
v-model="form.ntp.thirdAddress"
:state="getValidationState($v.form.ntp.thirdAddress)"
- :disabled="manualOptionSelected"
+ :disabled="
+ manualOptionSelected ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
data-test-id="dateTime-input-ntpServer3"
@blur="$v.form.ntp.thirdAddress.$touch()"
/>
@@ -204,6 +224,7 @@
variant="primary"
type="submit"
data-test-id="dateTime-button-saveSettings"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
{{ $t('global.action.saveSettings') }}
</b-button>
diff --git a/src/views/_sila/Overview/Inventory/InventoryServiceIndicator.vue b/src/views/_sila/Overview/Inventory/InventoryServiceIndicator.vue
index b4531be7..7f0c9030 100644
--- a/src/views/_sila/Overview/Inventory/InventoryServiceIndicator.vue
+++ b/src/views/_sila/Overview/Inventory/InventoryServiceIndicator.vue
@@ -23,6 +23,7 @@
v-model="systems.locationIndicatorActive"
data-test-id="inventoryService-toggle-identifyLed"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="toggleIdentifyLedSwitch"
>
<span v-if="systems.locationIndicatorActive">
diff --git a/src/views/_sila/Overview/Inventory/InventoryTableAssembly.vue b/src/views/_sila/Overview/Inventory/InventoryTableAssembly.vue
index 9c284533..929c172b 100644
--- a/src/views/_sila/Overview/Inventory/InventoryTableAssembly.vue
+++ b/src/views/_sila/Overview/Inventory/InventoryTableAssembly.vue
@@ -32,6 +32,7 @@
v-model="row.item.identifyLed"
name="switch"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="toggleIdentifyLedValue(row.item)"
>
<span v-if="row.item.identifyLed">
diff --git a/src/views/_sila/Overview/Inventory/InventoryTableBmcManager.vue b/src/views/_sila/Overview/Inventory/InventoryTableBmcManager.vue
index e3375d57..5fb23bfd 100644
--- a/src/views/_sila/Overview/Inventory/InventoryTableBmcManager.vue
+++ b/src/views/_sila/Overview/Inventory/InventoryTableBmcManager.vue
@@ -36,6 +36,7 @@
v-model="row.item.identifyLed"
name="switch"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="toggleIdentifyLedValue(row.item)"
>
<span v-if="row.item.identifyLed">
diff --git a/src/views/_sila/Overview/Inventory/InventoryTableChassis.vue b/src/views/_sila/Overview/Inventory/InventoryTableChassis.vue
index a5eb5ae6..d141924f 100644
--- a/src/views/_sila/Overview/Inventory/InventoryTableChassis.vue
+++ b/src/views/_sila/Overview/Inventory/InventoryTableChassis.vue
@@ -35,6 +35,7 @@
v-model="row.item.identifyLed"
name="switch"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="toggleIdentifyLedValue(row.item)"
>
<span v-if="row.item.identifyLed">
diff --git a/src/views/_sila/Overview/Inventory/InventoryTableDimmSlot.vue b/src/views/_sila/Overview/Inventory/InventoryTableDimmSlot.vue
index f1858ae9..40c30d4c 100644
--- a/src/views/_sila/Overview/Inventory/InventoryTableDimmSlot.vue
+++ b/src/views/_sila/Overview/Inventory/InventoryTableDimmSlot.vue
@@ -52,19 +52,18 @@
</template>
<!-- Toggle identify LED -->
<template #cell(identifyLed)="row">
- <div class="disabledDiv">
- <b-form-checkbox
- v-model="row.item.identifyLed"
- name="switch"
- switch
- @change="toggleIdentifyLedValue(row.item)"
- >
- <span v-if="row.item.identifyLed">
- {{ $t('global.status.on') }}
- </span>
- <span v-else> {{ $t('global.status.off') }} </span>
- </b-form-checkbox>
- </div>
+ <b-form-checkbox
+ v-model="row.item.identifyLed"
+ name="switch"
+ switch
+ disabled
+ @change="toggleIdentifyLedValue(row.item)"
+ >
+ <span v-if="row.item.identifyLed">
+ {{ $t('global.status.on') }}
+ </span>
+ <span v-else> {{ $t('global.status.off') }} </span>
+ </b-form-checkbox>
</template>
<template #row-details="{ item }">
<b-container fluid>
diff --git a/src/views/_sila/Overview/Inventory/InventoryTableProcessors.vue b/src/views/_sila/Overview/Inventory/InventoryTableProcessors.vue
index 27633495..ed9ca194 100644
--- a/src/views/_sila/Overview/Inventory/InventoryTableProcessors.vue
+++ b/src/views/_sila/Overview/Inventory/InventoryTableProcessors.vue
@@ -59,6 +59,7 @@
v-model="row.item.identifyLed"
name="switch"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="toggleIdentifyLedValue(row.item)"
>
<span v-if="row.item.identifyLed">
diff --git a/src/views/_sila/Overview/Inventory/InventoryTableSystem.vue b/src/views/_sila/Overview/Inventory/InventoryTableSystem.vue
index eacc4a06..286df969 100644
--- a/src/views/_sila/Overview/Inventory/InventoryTableSystem.vue
+++ b/src/views/_sila/Overview/Inventory/InventoryTableSystem.vue
@@ -35,6 +35,7 @@
v-model="item.locationIndicatorActive"
data-test-id="inventorySystem-toggle-identifyLed"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="toggleIdentifyLedSwitch"
>
<span v-if="item.locationIndicatorActive">
diff --git a/src/views/_sila/Overview/Network/NetworkGlobalSettings.vue b/src/views/_sila/Overview/Network/NetworkGlobalSettings.vue
index 44035ae6..6a08c2c2 100644
--- a/src/views/_sila/Overview/Network/NetworkGlobalSettings.vue
+++ b/src/views/_sila/Overview/Network/NetworkGlobalSettings.vue
@@ -8,7 +8,12 @@
<dl>
<dt>
{{ $t('pageNetwork.hostname') }}
- <b-button variant="link" class="p-1" @click="initSettingsModal()">
+ <b-button
+ variant="link"
+ class="p-1"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ @click="initSettingsModal()"
+ >
<icon-edit :title="$t('pageNetwork.modal.editHostnameTitle')" />
</b-button>
</dt>
@@ -24,6 +29,7 @@
v-model="useDomainNameState"
data-test-id="networkSettings-switch-useDomainName"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="changeDomainNameState"
>
<span v-if="useDomainNameState">
@@ -43,6 +49,7 @@
v-model="useDnsState"
data-test-id="networkSettings-switch-useDns"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="changeDnsState"
>
<span v-if="useDnsState">
@@ -62,6 +69,7 @@
v-model="useNtpState"
data-test-id="networkSettings-switch-useNtp"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="changeNtpState"
>
<span v-if="useNtpState">
diff --git a/src/views/_sila/Overview/Network/NetworkInterfaceSettings.vue b/src/views/_sila/Overview/Network/NetworkInterfaceSettings.vue
index 657a2270..6eccb455 100644
--- a/src/views/_sila/Overview/Network/NetworkInterfaceSettings.vue
+++ b/src/views/_sila/Overview/Network/NetworkInterfaceSettings.vue
@@ -39,6 +39,7 @@
<b-button
variant="link"
class="p-1"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@click="initMacAddressModal()"
>
<icon-edit
diff --git a/src/views/_sila/Overview/Network/TableDns.vue b/src/views/_sila/Overview/Network/TableDns.vue
index ee830ee4..e522d69b 100644
--- a/src/views/_sila/Overview/Network/TableDns.vue
+++ b/src/views/_sila/Overview/Network/TableDns.vue
@@ -3,7 +3,11 @@
<b-row>
<b-col>
<div class="text-right">
- <b-button variant="primary" @click="initDnsModal()">
+ <b-button
+ variant="primary"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ @click="initDnsModal()"
+ >
<icon-add />
{{ $t('pageNetwork.table.addDnsAddress') }}
</b-button>
diff --git a/src/views/_sila/Overview/Network/TableIpv4.vue b/src/views/_sila/Overview/Network/TableIpv4.vue
index 2fa3d1f3..4cdc6a92 100644
--- a/src/views/_sila/Overview/Network/TableIpv4.vue
+++ b/src/views/_sila/Overview/Network/TableIpv4.vue
@@ -7,7 +7,11 @@
</h3>
</b-col>
<b-col class="text-right">
- <b-button variant="primary" @click="initAddIpv4Address()">
+ <b-button
+ variant="primary"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ @click="initAddIpv4Address()"
+ >
<icon-add />
{{ $t('pageNetwork.table.addIpv4Address') }}
</b-button>
diff --git a/src/views/_sila/Overview/OverviewInventory.vue b/src/views/_sila/Overview/OverviewInventory.vue
index 575cb7b7..bc0fd69e 100644
--- a/src/views/_sila/Overview/OverviewInventory.vue
+++ b/src/views/_sila/Overview/OverviewInventory.vue
@@ -13,6 +13,7 @@
v-model="systems.locationIndicatorActive"
data-test-id="overviewInventory-checkbox-identifyLed"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="toggleIdentifyLedSwitch"
>
<span v-if="systems.locationIndicatorActive">
diff --git a/src/views/_sila/ResourceManagement/Power.vue b/src/views/_sila/ResourceManagement/Power.vue
index 3c1e6412..db1104e6 100644
--- a/src/views/_sila/ResourceManagement/Power.vue
+++ b/src/views/_sila/ResourceManagement/Power.vue
@@ -26,6 +26,7 @@
v-model="isPowerCapFieldEnabled"
data-test-id="power-checkbox-togglePowerCapField"
name="power-cap-setting"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
{{ $t('pagePower.powerCapSettingData') }}
</b-form-checkbox>
@@ -52,7 +53,10 @@
<b-form-input
id="input-1"
v-model.number="powerCapValue"
- :disabled="!isPowerCapFieldEnabled"
+ :disabled="
+ !isPowerCapFieldEnabled ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
data-test-id="power-input-powerCapValue"
type="number"
aria-describedby="power-help-text"
@@ -75,6 +79,7 @@
variant="primary"
type="submit"
data-test-id="power-button-savePowerCapValue"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
{{ $t('global.action.save') }}
</b-button>
diff --git a/src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue b/src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue
index 27950b76..cdfb1e47 100644
--- a/src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue
+++ b/src/views/_sila/SecurityAndAccess/Certificates/Certificates.vue
@@ -37,13 +37,17 @@
v-b-modal.generate-csr
data-test-id="certificates-button-generateCsr"
variant="link"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
>
<icon-add />
{{ $t('pageCertificates.generateCsr') }}
</b-button>
<b-button
variant="primary"
- :disabled="certificatesForUpload.length === 0"
+ :disabled="
+ certificatesForUpload.length === 0 ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@click="initModalUploadCertificate(null)"
>
<icon-add />
@@ -81,6 +85,11 @@
:value="action.value"
:title="action.title"
:enabled="action.enabled"
+ :class="{
+ disabledDiv:
+ $store.getters['authentication/role'] === 'ReadOnly' &&
+ (action.value === 'delete' || action.value === 'replace'),
+ }"
@click-table-action="onTableRowAction($event, item)"
>
<template #icon>
diff --git a/src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue b/src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue
index 6800ead5..12584fac 100644
--- a/src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue
+++ b/src/views/_sila/SecurityAndAccess/Ldap/Ldap.vue
@@ -13,6 +13,7 @@
<b-form-checkbox
v-model="form.ldapAuthenticationEnabled"
data-test-id="ldap-checkbox-ldapAuthenticationEnabled"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="onChangeldapAuthenticationEnabled"
>
{{ $t('global.action.enable') }}
@@ -42,7 +43,9 @@
aria-describedby="enable-secure-help-block"
data-test-id="ldap-checkbox-secureLdapEnabled"
:disabled="
- !caCertificateExpiration || !ldapCertificateExpiration
+ !caCertificateExpiration ||
+ !ldapCertificateExpiration ||
+ $store.getters['authentication/role'] === 'ReadOnly'
"
@change="$v.form.secureLdapEnabled.$touch()"
>
@@ -76,6 +79,9 @@
v-model="form.activeDirectoryEnabled"
data-test-id="ldap-radio-activeDirectoryEnabled"
:value="false"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="onChangeServiceType"
>
OpenLDAP
@@ -84,6 +90,9 @@
v-model="form.activeDirectoryEnabled"
data-test-id="ldap-radio-activeDirectoryEnabled"
:value="true"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="onChangeServiceType"
>
Active Directory
@@ -106,6 +115,9 @@
v-model="form.serverUri"
data-test-id="ldap-input-serverUri"
:state="getValidationState($v.form.serverUri)"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="$v.form.serverUri.$touch()"
/>
<b-form-invalid-feedback role="alert">
@@ -124,6 +136,9 @@
v-model="form.bindDn"
data-test-id="ldap-input-bindDn"
:state="getValidationState($v.form.bindDn)"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="$v.form.bindDn.$touch()"
/>
<b-form-invalid-feedback role="alert">
@@ -145,6 +160,9 @@
type="password"
:state="getValidationState($v.form.bindPassword)"
class="form-control-with-button"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="$v.form.bindPassword.$touch()"
/>
<b-form-invalid-feedback role="alert">
@@ -163,6 +181,9 @@
v-model="form.baseDn"
data-test-id="ldap-input-baseDn"
:state="getValidationState($v.form.baseDn)"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="$v.form.baseDn.$touch()"
/>
<b-form-invalid-feedback role="alert">
@@ -182,6 +203,9 @@
id="user-id-attribute"
v-model="form.userIdAttribute"
data-test-id="ldap-input-userIdAttribute"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="$v.form.userIdAttribute.$touch()"
/>
</b-form-group>
@@ -198,6 +222,9 @@
id="group-id-attribute"
v-model="form.groupIdAttribute"
data-test-id="ldap-input-groupIdAttribute"
+ :disabled="
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@change="$v.form.groupIdAttribute.$touch()"
/>
</b-form-group>
@@ -213,7 +240,9 @@
variant="primary"
type="submit"
data-test-id="ldap-button-saveSettings"
- :disabled="loading"
+ :disabled="
+ loading || $store.getters['authentication/role'] === 'ReadOnly'
+ "
>
{{ $t('global.action.saveSettings') }}
</b-btn>
diff --git a/src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue b/src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue
index ca52da13..6168ae63 100644
--- a/src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue
+++ b/src/views/_sila/SecurityAndAccess/Ldap/TableRoleGroups.vue
@@ -11,7 +11,10 @@
<b-col class="text-right" md="9">
<b-btn
variant="primary"
- :disabled="!isServiceEnabled"
+ :disabled="
+ !isServiceEnabled ||
+ $store.getters['authentication/role'] === 'ReadOnly'
+ "
@click="initRoleGroupModal(null)"
>
<icon-add />
diff --git a/src/views/_sila/SecurityAndAccess/Policies/Policies.vue b/src/views/_sila/SecurityAndAccess/Policies/Policies.vue
index 0de80de2..8e690557 100644
--- a/src/views/_sila/SecurityAndAccess/Policies/Policies.vue
+++ b/src/views/_sila/SecurityAndAccess/Policies/Policies.vue
@@ -16,6 +16,7 @@
v-model="sshProtocolState"
data-test-id="policies-toggle-bmcShell"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="changeSshProtocolState"
>
<span class="sr-only">
@@ -41,6 +42,7 @@
v-model="ipmiProtocolState"
data-test-id="polices-toggle-networkIpmi"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="changeIpmiProtocolState"
>
<span class="sr-only">
@@ -66,6 +68,7 @@
v-model="vtpmState"
data-test-id="policies-toggle-vtpm"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="changeVtpmState"
>
<span class="sr-only">
@@ -91,6 +94,7 @@
v-model="rtadState"
data-test-id="policies-toggle-rtad"
switch
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@change="changeRtadState"
>
<span class="sr-only">
diff --git a/src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue b/src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue
index ae8c5209..e65b00df 100644
--- a/src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue
+++ b/src/views/_sila/SecurityAndAccess/UserManagement/UserManagement.vue
@@ -3,13 +3,18 @@
<page-title />
<b-row>
<b-col xl="9" class="text-right">
- <b-button variant="link" @click="initModalSettings">
+ <b-button
+ variant="link"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ @click="initModalSettings"
+ >
<icon-settings />
{{ $t('pageUserManagement.accountPolicySettings') }}
</b-button>
<b-button
variant="primary"
data-test-id="userManagement-button-addUser"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
@click="initModalUser(null)"
>
<icon-add />
@@ -68,6 +73,11 @@
:value="action.value"
:enabled="action.enabled"
:title="action.title"
+ :class="{
+ disabledDiv:
+ $store.getters['authentication/role'] === 'ReadOnly' &&
+ (action.value === 'delete' || action.value === 'edit'),
+ }"
@click-table-action="onTableRowAction($event, item)"
>
<template #icon>
diff --git a/src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue b/src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
index c357d47a..ec6f332f 100644
--- a/src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
+++ b/src/views/_sila/Settings/PowerRestorePolicy/PowerRestorePolicy.vue
@@ -9,12 +9,18 @@
v-model="currentPowerRestorePolicy"
:options="options"
name="power-restore-policy"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
></b-form-radio-group>
</b-form-group>
</b-col>
</b-row>
- <b-button variant="primary" type="submit" @click="submitForm">
+ <b-button
+ variant="primary"
+ type="submit"
+ :disabled="$store.getters['authentication/role'] === 'ReadOnly'"
+ @click="submitForm"
+ >
{{ $t('global.action.saveSettings') }}
</b-button>
</b-container>