From b440616c23b61166ae6d87839a70eec31bdca235 Mon Sep 17 00:00:00 2001 From: Sandeepa Singh Date: Mon, 26 Jul 2021 15:05:39 +0530 Subject: IA update: Update access and control section This is the fifth commit of the information architecture changes and has the following changes: - The icon for access and control has been updated - Access and control section has been updated to security and access section - Security settings page has been updated to policies page and moved to security and access section - Client sessions page has been updated to sessions page - Local user management page has been updated to user management page - SSL certificates page has been updated to certificates page Signed-off-by: Sandeepa Singh Change-Id: Ie93cee9002742ecf7d33615636f4f159f4395fc4 --- src/components/AppNavigation/AppNavigationMixin.js | 40 +- src/env/components/AppNavigation/ibm.js | 40 +- src/env/components/AppNavigation/intel.js | 38 +- src/env/router/ibm.js | 52 +-- src/env/router/intel.js | 48 +- src/locales/en-US.json | 40 +- src/locales/ru-RU.json | 34 +- src/router/routes.js | 50 +-- src/store/index.js | 18 +- .../modules/AccessControl/ClientSessionsStore.js | 80 ---- src/store/modules/AccessControl/LdapStore.js | 275 ------------ .../AccessControl/LocalUserMangementStore.js | 325 -------------- .../modules/AccessControl/SslCertificatesStore.js | 204 --------- .../modules/SecurityAndAccess/CertificatesStore.js | 202 +++++++++ src/store/modules/SecurityAndAccess/LdapStore.js | 275 ++++++++++++ .../modules/SecurityAndAccess/PoliciesStore.js | 87 ++++ .../modules/SecurityAndAccess/SessionsStore.js | 80 ++++ .../SecurityAndAccess/UserManagementStore.js | 318 +++++++++++++ .../modules/Settings/SecuritySettingsStore.js | 95 ---- .../ClientSessions/ClientSessions.vue | 296 ------------ src/views/AccessControl/ClientSessions/index.js | 2 - src/views/AccessControl/Ldap/Ldap.vue | 435 ------------------ src/views/AccessControl/Ldap/ModalAddRoleGroup.vue | 164 ------- src/views/AccessControl/Ldap/TableRoleGroups.vue | 265 ----------- src/views/AccessControl/Ldap/index.js | 2 - .../LocalUserManagement/LocalUserManagement.vue | 386 ---------------- .../LocalUserManagement/ModalSettings.vue | 219 --------- .../LocalUserManagement/ModalUser.vue | 395 ---------------- .../LocalUserManagement/TableRoles.vue | 92 ---- .../AccessControl/LocalUserManagement/index.js | 2 - .../SslCertificates/CsrCountryCodes.js | 345 -------------- .../SslCertificates/ModalGenerateCsr.vue | 500 --------------------- .../SslCertificates/ModalUploadCertificate.vue | 168 ------- .../SslCertificates/SslCertificates.vue | 319 ------------- src/views/AccessControl/SslCertificates/index.js | 2 - src/views/ChangePassword/ChangePassword.vue | 2 +- src/views/ProfileSettings/ProfileSettings.vue | 8 +- .../Certificates/Certificates.vue | 319 +++++++++++++ .../Certificates/CsrCountryCodes.js | 345 ++++++++++++++ .../Certificates/ModalGenerateCsr.vue | 496 ++++++++++++++++++++ .../Certificates/ModalUploadCertificate.vue | 168 +++++++ src/views/SecurityAndAccess/Certificates/index.js | 2 + src/views/SecurityAndAccess/Ldap/Ldap.vue | 435 ++++++++++++++++++ .../SecurityAndAccess/Ldap/ModalAddRoleGroup.vue | 164 +++++++ .../SecurityAndAccess/Ldap/TableRoleGroups.vue | 265 +++++++++++ src/views/SecurityAndAccess/Ldap/index.js | 2 + src/views/SecurityAndAccess/Policies/Policies.vue | 123 +++++ src/views/SecurityAndAccess/Policies/index.js | 2 + src/views/SecurityAndAccess/Sessions/Sessions.vue | 291 ++++++++++++ src/views/SecurityAndAccess/Sessions/index.js | 2 + .../UserManagement/ModalSettings.vue | 215 +++++++++ .../SecurityAndAccess/UserManagement/ModalUser.vue | 386 ++++++++++++++++ .../UserManagement/TableRoles.vue | 92 ++++ .../UserManagement/UserManagement.vue | 388 ++++++++++++++++ .../SecurityAndAccess/UserManagement/index.js | 2 + .../Settings/SecuritySettings/SecuritySettings.vue | 125 ------ src/views/Settings/SecuritySettings/index.js | 2 - .../unit/__snapshots__/AppNavigation.spec.js.snap | 108 +++-- 58 files changed, 4901 insertions(+), 4934 deletions(-) delete mode 100644 src/store/modules/AccessControl/ClientSessionsStore.js delete mode 100644 src/store/modules/AccessControl/LdapStore.js delete mode 100644 src/store/modules/AccessControl/LocalUserMangementStore.js delete mode 100644 src/store/modules/AccessControl/SslCertificatesStore.js create mode 100644 src/store/modules/SecurityAndAccess/CertificatesStore.js create mode 100644 src/store/modules/SecurityAndAccess/LdapStore.js create mode 100644 src/store/modules/SecurityAndAccess/PoliciesStore.js create mode 100644 src/store/modules/SecurityAndAccess/SessionsStore.js create mode 100644 src/store/modules/SecurityAndAccess/UserManagementStore.js delete mode 100644 src/store/modules/Settings/SecuritySettingsStore.js delete mode 100644 src/views/AccessControl/ClientSessions/ClientSessions.vue delete mode 100644 src/views/AccessControl/ClientSessions/index.js delete mode 100644 src/views/AccessControl/Ldap/Ldap.vue delete mode 100644 src/views/AccessControl/Ldap/ModalAddRoleGroup.vue delete mode 100644 src/views/AccessControl/Ldap/TableRoleGroups.vue delete mode 100644 src/views/AccessControl/Ldap/index.js delete mode 100644 src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue delete mode 100644 src/views/AccessControl/LocalUserManagement/ModalSettings.vue delete mode 100644 src/views/AccessControl/LocalUserManagement/ModalUser.vue delete mode 100644 src/views/AccessControl/LocalUserManagement/TableRoles.vue delete mode 100644 src/views/AccessControl/LocalUserManagement/index.js delete mode 100644 src/views/AccessControl/SslCertificates/CsrCountryCodes.js delete mode 100644 src/views/AccessControl/SslCertificates/ModalGenerateCsr.vue delete mode 100644 src/views/AccessControl/SslCertificates/ModalUploadCertificate.vue delete mode 100644 src/views/AccessControl/SslCertificates/SslCertificates.vue delete mode 100644 src/views/AccessControl/SslCertificates/index.js create mode 100644 src/views/SecurityAndAccess/Certificates/Certificates.vue create mode 100644 src/views/SecurityAndAccess/Certificates/CsrCountryCodes.js create mode 100644 src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue create mode 100644 src/views/SecurityAndAccess/Certificates/ModalUploadCertificate.vue create mode 100644 src/views/SecurityAndAccess/Certificates/index.js create mode 100644 src/views/SecurityAndAccess/Ldap/Ldap.vue create mode 100644 src/views/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue create mode 100644 src/views/SecurityAndAccess/Ldap/TableRoleGroups.vue create mode 100644 src/views/SecurityAndAccess/Ldap/index.js create mode 100644 src/views/SecurityAndAccess/Policies/Policies.vue create mode 100644 src/views/SecurityAndAccess/Policies/index.js create mode 100644 src/views/SecurityAndAccess/Sessions/Sessions.vue create mode 100644 src/views/SecurityAndAccess/Sessions/index.js create mode 100644 src/views/SecurityAndAccess/UserManagement/ModalSettings.vue create mode 100644 src/views/SecurityAndAccess/UserManagement/ModalUser.vue create mode 100644 src/views/SecurityAndAccess/UserManagement/TableRoles.vue create mode 100644 src/views/SecurityAndAccess/UserManagement/UserManagement.vue create mode 100644 src/views/SecurityAndAccess/UserManagement/index.js delete mode 100644 src/views/Settings/SecuritySettings/SecuritySettings.vue delete mode 100644 src/views/Settings/SecuritySettings/index.js diff --git a/src/components/AppNavigation/AppNavigationMixin.js b/src/components/AppNavigation/AppNavigationMixin.js index b89f361c..da8a59cd 100644 --- a/src/components/AppNavigation/AppNavigationMixin.js +++ b/src/components/AppNavigation/AppNavigationMixin.js @@ -3,7 +3,7 @@ import IconTextLinkAnalysis from '@carbon/icons-vue/es/text-link--analysis/16'; import IconDataCheck from '@carbon/icons-vue/es/data--check/16'; import IconSettingsAdjust from '@carbon/icons-vue/es/settings--adjust/16'; import IconSettings from '@carbon/icons-vue/es/settings/16'; -import IconPassword from '@carbon/icons-vue/es/password/16'; +import IconSecurity from '@carbon/icons-vue/es/security/16'; import IconChevronUp from '@carbon/icons-vue/es/chevron--up/16'; const AppNavigationMixin = { @@ -13,7 +13,7 @@ const AppNavigationMixin = { iconHealth: IconDataCheck, iconControl: IconSettingsAdjust, iconSettings: IconSettings, - iconAccessControl: IconPassword, + iconSecurityAndAccess: IconSecurity, iconExpand: IconChevronUp, }, data() { @@ -126,37 +126,37 @@ const AppNavigationMixin = { label: this.$t('appNavigation.powerRestorePolicy'), route: '/settings/power-restore-policy', }, - { - id: 'security-settings', - label: this.$t('appNavigation.securitySettings'), - route: '/settings/security-settings', - }, ], }, { - id: 'access-control', - label: this.$t('appNavigation.accessControl'), - icon: 'iconAccessControl', + id: 'security-and-access', + label: this.$t('appNavigation.securityAndAccess'), + icon: 'iconSecurityAndAccess', children: [ { - id: 'client-sessions', - label: this.$t('appNavigation.clientSessions'), - route: '/access-control/client-sessions', + id: 'sessions', + label: this.$t('appNavigation.sessions'), + route: '/security-and-access/sessions', }, { id: 'ldap', label: this.$t('appNavigation.ldap'), - route: '/access-control/ldap', + route: '/security-and-access/ldap', + }, + { + id: 'user-management', + label: this.$t('appNavigation.userManagement'), + route: '/security-and-access/user-management', }, { - id: 'local-user-management', - label: this.$t('appNavigation.localUserManagement'), - route: '/access-control/local-user-management', + id: 'policies', + label: this.$t('appNavigation.policies'), + route: '/security-and-access/policies', }, { - id: 'ssl-certificates', - label: this.$t('appNavigation.sslCertificates'), - route: '/access-control/ssl-certificates', + id: 'certificates', + label: this.$t('appNavigation.certificates'), + route: '/security-and-access/certificates', }, ], }, diff --git a/src/env/components/AppNavigation/ibm.js b/src/env/components/AppNavigation/ibm.js index d6a62893..cbf0db55 100644 --- a/src/env/components/AppNavigation/ibm.js +++ b/src/env/components/AppNavigation/ibm.js @@ -3,7 +3,7 @@ import IconTextLinkAnalysis from '@carbon/icons-vue/es/text-link--analysis/16'; import IconDataCheck from '@carbon/icons-vue/es/data--check/16'; import IconSettingsAdjust from '@carbon/icons-vue/es/settings--adjust/16'; import IconSettings from '@carbon/icons-vue/es/settings/16'; -import IconPassword from '@carbon/icons-vue/es/password/16'; +import IconSecurity from '@carbon/icons-vue/es/security/16'; import IconChevronUp from '@carbon/icons-vue/es/chevron--up/16'; const AppNavigationMixin = { @@ -13,7 +13,7 @@ const AppNavigationMixin = { iconHealth: IconDataCheck, iconControl: IconSettingsAdjust, iconSettings: IconSettings, - iconAccessControl: IconPassword, + iconSecurityAndAccess: IconSecurity, iconExpand: IconChevronUp, }, data() { @@ -121,37 +121,37 @@ const AppNavigationMixin = { label: this.$t('appNavigation.powerRestorePolicy'), route: '/settings/power-restore-policy', }, - { - id: 'security-settings', - label: this.$t('appNavigation.securitySettings'), - route: '/settings/security-settings', - }, ], }, { - id: 'access-control', - label: this.$t('appNavigation.accessControl'), - icon: 'iconAccessControl', + id: 'security-and-access', + label: this.$t('appNavigation.securityAndAccess'), + icon: 'iconSecurityAndAccess', children: [ { - id: 'client-sessions', - label: this.$t('appNavigation.clientSessions'), - route: '/access-control/client-sessions', + id: 'sessions', + label: this.$t('appNavigation.sessions'), + route: '/security-and-access/sessions', }, { id: 'ldap', label: this.$t('appNavigation.ldap'), - route: '/access-control/ldap', + route: '/security-and-access/ldap', + }, + { + id: 'user-management', + label: this.$t('appNavigation.userManagement'), + route: '/security-and-access/user-management', }, { - id: 'local-user-management', - label: this.$t('appNavigation.localUserManagement'), - route: '/access-control/local-user-management', + id: 'policies', + label: this.$t('appNavigation.policies'), + route: '/security-and-access/policies', }, { - id: 'ssl-certificates', - label: this.$t('appNavigation.sslCertificates'), - route: '/access-control/ssl-certificates', + id: 'certificates', + label: this.$t('appNavigation.certificates'), + route: '/security-and-access/certificates', }, ], }, diff --git a/src/env/components/AppNavigation/intel.js b/src/env/components/AppNavigation/intel.js index 20aa4f23..a67828d9 100644 --- a/src/env/components/AppNavigation/intel.js +++ b/src/env/components/AppNavigation/intel.js @@ -3,7 +3,7 @@ import IconTextLinkAnalysis from '@carbon/icons-vue/es/text-link--analysis/16'; import IconDataCheck from '@carbon/icons-vue/es/data--check/16'; import IconSettingsAdjust from '@carbon/icons-vue/es/settings--adjust/16'; import IconSettings from '@carbon/icons-vue/es/settings/16'; -import IconPassword from '@carbon/icons-vue/es/password/16'; +import IconSecurity from '@carbon/icons-vue/es/security/16'; import IconChevronUp from '@carbon/icons-vue/es/chevron--up/16'; const AppNavigationMixin = { @@ -13,7 +13,7 @@ const AppNavigationMixin = { iconHealth: IconDataCheck, iconControl: IconSettingsAdjust, iconSettings: IconSettings, - iconAccessControl: IconPassword, + iconSecurityAndAccess: IconSecurity, iconExpand: IconChevronUp, }, data() { @@ -111,32 +111,32 @@ const AppNavigationMixin = { label: this.$t('appNavigation.network'), route: '/settings/network', }, - { - id: 'security-settings', - label: this.$t('appNavigation.securitySettings'), - route: '/settings/security-settings', - }, ], }, { - id: 'access-control', - label: this.$t('appNavigation.accessControl'), - icon: 'iconAccessControl', + id: 'security-and-access', + label: this.$t('appNavigation.securityAndAccess'), + icon: 'iconSecurityAndAccess', children: [ { - id: 'client-sessions', - label: this.$t('appNavigation.clientSessions'), - route: '/access-control/client-sessions', + id: 'sessions', + label: this.$t('appNavigation.sessions'), + route: '/security-and-access/sessions', + }, + { + id: 'user-management', + label: this.$t('appNavigation.userManagement'), + route: '/security-and-access/user-management', }, { - id: 'local-user-management', - label: this.$t('appNavigation.localUserManagement'), - route: '/access-control/local-user-management', + id: 'policies', + label: this.$t('appNavigation.policies'), + route: '/security-and-access/policies', }, { - id: 'ssl-certificates', - label: this.$t('appNavigation.sslCertificates'), - route: '/access-control/ssl-certificates', + id: 'certificates', + label: this.$t('appNavigation.certificates'), + route: '/security-and-access/certificates', }, ], }, diff --git a/src/env/router/ibm.js b/src/env/router/ibm.js index 4149b97a..f32635fc 100644 --- a/src/env/router/ibm.js +++ b/src/env/router/ibm.js @@ -1,14 +1,14 @@ import AppLayout from '@/layouts/AppLayout.vue'; import ChangePassword from '@/views/ChangePassword'; -import ClientSessions from '@/views/AccessControl/ClientSessions'; +import Sessions from '@/views/SecurityAndAccess/Sessions'; import ConsoleLayout from '@/layouts/ConsoleLayout.vue'; import DateTime from '@/views/Settings/DateTime'; import EventLogs from '@/views/Logs/EventLogs'; import FactoryReset from '@/views/Operations/FactoryReset'; import Firmware from '@/views/Operations/Firmware'; import Inventory from '@/views/HardwareStatus/Inventory'; -import Ldap from '@/views/AccessControl/Ldap'; -import LocalUserManagement from '@/views/AccessControl/LocalUserManagement'; +import Ldap from '@/views/SecurityAndAccess/Ldap'; +import UserManagement from '@/views/SecurityAndAccess/UserManagement'; import Login from '@/views/Login'; import LoginLayout from '@/layouts/LoginLayout'; import ManagePowerUsage from '@/views/Operations/ManagePowerUsage'; @@ -19,12 +19,12 @@ import PostCodeLogs from '@/views/Logs/PostCodeLogs'; import PowerRestorePolicy from '@/views/Settings/PowerRestorePolicy'; import ProfileSettings from '@/views/ProfileSettings'; import RebootBmc from '@/views/Operations/RebootBmc'; -import SecuritySettings from '@/views/Settings/SecuritySettings'; +import Policies from '@/views/SecurityAndAccess/Policies'; import Sensors from '@/views/HardwareStatus/Sensors'; import SerialOverLan from '@/views/Operations/SerialOverLan'; import SerialOverLanConsole from '@/views/Operations/SerialOverLan/SerialOverLanConsole'; import ServerPowerOperations from '@/views/Operations/ServerPowerOperations'; -import SslCertificates from '@/views/AccessControl/SslCertificates'; +import Certificates from '@/views/SecurityAndAccess/Certificates'; import i18n from '@/i18n'; // Custom components @@ -135,15 +135,15 @@ const routes = [ }, }, { - path: '/access-control/client-sessions', - name: 'client-sessions', - component: ClientSessions, + path: '/security-and-access/sessions', + name: 'sessions', + component: Sessions, meta: { - title: i18n.t('appPageTitle.clientSessions'), + title: i18n.t('appPageTitle.sessions'), }, }, { - path: '/access-control/ldap', + path: '/security-and-access/ldap', name: 'ldap', component: Ldap, meta: { @@ -151,19 +151,27 @@ const routes = [ }, }, { - path: '/access-control/local-user-management', - name: 'local-users', - component: LocalUserManagement, + path: '/security-and-access/user-management', + name: 'user-management', + component: UserManagement, meta: { - title: i18n.t('appPageTitle.localUserManagement'), + title: i18n.t('appPageTitle.userManagement'), }, }, { - path: '/access-control/ssl-certificates', - name: 'ssl-certificates', - component: SslCertificates, + path: '/security-and-access/policies', + name: 'policies', + component: Policies, meta: { - title: i18n.t('appPageTitle.sslCertificates'), + title: i18n.t('appPageTitle.policies'), + }, + }, + { + path: '/security-and-access/certificates', + name: 'certificates', + component: Certificates, + meta: { + title: i18n.t('appPageTitle.certificates'), }, }, { @@ -206,14 +214,6 @@ const routes = [ title: i18n.t('appPageTitle.powerRestorePolicy'), }, }, - { - path: '/settings/security-settings', - name: 'security-settings', - component: SecuritySettings, - meta: { - title: i18n.t('appPageTitle.securitySettings'), - }, - }, { path: '/operations/factory-reset', name: 'factory-reset', diff --git a/src/env/router/intel.js b/src/env/router/intel.js index a8c5a2af..dec42afc 100644 --- a/src/env/router/intel.js +++ b/src/env/router/intel.js @@ -1,6 +1,6 @@ import AppLayout from '@/layouts/AppLayout.vue'; import ChangePassword from '@/views/ChangePassword'; -import ClientSessions from '@/views/AccessControl/ClientSessions'; +import Sessions from '@/views/SecurityAndAccess/Sessions'; import ConsoleLayout from '@/layouts/ConsoleLayout.vue'; import DateTime from '@/views/Settings/DateTime'; import EventLogs from '@/views/Logs/EventLogs'; @@ -8,7 +8,7 @@ import Firmware from '@/views/Operations/Firmware'; import Inventory from '@/views/HardwareStatus/Inventory'; import Kvm from '@/views/Operations/Kvm'; import KvmConsole from '@/views/Operations/Kvm/KvmConsole'; -import LocalUserManagement from '@/views/AccessControl/LocalUserManagement'; +import UserManagement from '@/views/SecurityAndAccess/UserManagement'; import Login from '@/views/Login'; import LoginLayout from '@/layouts/LoginLayout'; import ManagePowerUsage from '@/views/Operations/ManagePowerUsage'; @@ -17,12 +17,12 @@ import Overview from '@/views/Overview'; import PageNotFound from '@/views/PageNotFound'; import ProfileSettings from '@/views/ProfileSettings'; import RebootBmc from '@/views/Operations/RebootBmc'; -import SecuritySettings from '@/views/Settings/SecuritySettings'; +import Policies from '@/views/SecurityAndAccess/Policies'; import Sensors from '@/views/HardwareStatus/Sensors'; import SerialOverLan from '@/views/Operations/SerialOverLan'; import SerialOverLanConsole from '@/views/Operations/SerialOverLan/SerialOverLanConsole'; import ServerPowerOperations from '@/views/Operations/ServerPowerOperations'; -import SslCertificates from '@/views/AccessControl/SslCertificates'; +import Certificates from '@/views/SecurityAndAccess/Certificates'; import VirtualMedia from '@/views/Operations/VirtualMedia'; import i18n from '@/i18n'; @@ -123,27 +123,35 @@ const routes = [ }, }, { - path: '/access-control/client-sessions', - name: 'client-sessions', - component: ClientSessions, + path: '/security-and-access/sessions', + name: 'sessions', + component: Sessions, meta: { - title: i18n.t('appPageTitle.clientSessions'), + title: i18n.t('appPageTitle.sessions'), }, }, { - path: '/access-control/local-user-management', - name: 'local-users', - component: LocalUserManagement, + path: '/security-and-access/user-management', + name: 'user-management', + component: UserManagement, meta: { - title: i18n.t('appPageTitle.localUserManagement'), + title: i18n.t('appPageTitle.userManagement'), }, }, { - path: '/access-control/ssl-certificates', - name: 'ssl-certificates', - component: SslCertificates, + path: '/security-and-access/policies', + name: 'policies', + component: Policies, meta: { - title: i18n.t('appPageTitle.sslCertificates'), + title: i18n.t('appPageTitle.policies'), + }, + }, + { + path: '/security-and-access/certificates', + name: 'certificates', + component: Certificates, + meta: { + title: i18n.t('appPageTitle.certificates'), }, }, { @@ -186,14 +194,6 @@ const routes = [ title: i18n.t('appPageTitle.network'), }, }, - { - path: '/settings/security-settings', - name: 'security-settings', - component: SecuritySettings, - meta: { - title: i18n.t('appPageTitle.securitySettings'), - }, - }, { path: '/operations/reboot-bmc', name: 'reboot-bmc', diff --git a/src/locales/en-US.json b/src/locales/en-US.json index ed23acac..33e65f58 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -98,8 +98,8 @@ "titleRefresh": "Refresh application data" }, "appNavigation": { - "accessControl": "Access control", - "clientSessions": "@:appPageTitle.clientSessions", + "securityAndAccess": "Security and access", + "sessions": "@:appPageTitle.sessions", "settings": "Settings", "operations": "Operations", "dateTime": "@:appPageTitle.dateTime", @@ -112,7 +112,7 @@ "kvm": "@:appPageTitle.kvm", "ldap": "@:appPageTitle.ldap", "logs": "Logs", - "localUserManagement": "@:appPageTitle.localUserManagement", + "userManagement": "@:appPageTitle.userManagement", "managePowerUsage": "@:appPageTitle.managePowerUsage", "network": "@:appPageTitle.network", "overview": "@:appPageTitle.overview", @@ -120,16 +120,16 @@ "postCodeLogs": "@:appPageTitle.postCodeLogs", "powerRestorePolicy": "@:appPageTitle.powerRestorePolicy", "rebootBmc": "@:appPageTitle.rebootBmc", - "securitySettings": "@:appPageTitle.securitySettings", + "policies": "@:appPageTitle.policies", "sensors": "@:appPageTitle.sensors", "serialOverLan": "SOL console", "serverPowerOperations": "@:appPageTitle.serverPowerOperations", - "sslCertificates": "@:appPageTitle.sslCertificates", + "certificates": "@:appPageTitle.certificates", "virtualMedia": "@:appPageTitle.virtualMedia" }, "appPageTitle": { "changePassword": "Change password", - "clientSessions": "Client sessions", + "sessions": "Sessions", "dateTime": "Date and time", "dumps": "Dumps", "eventLogs": "Event logs", @@ -138,7 +138,7 @@ "inventory": "Inventory and LEDs", "kvm": "KVM", "ldap": "LDAP", - "localUserManagement": "Local user management", + "userManagement": "User management", "login": "Login", "managePowerUsage": "Manage power usage", "network": "Network", @@ -148,11 +148,11 @@ "powerRestorePolicy": "Power restore policy", "profileSettings": "Profile settings", "rebootBmc": "Reboot BMC", - "securitySettings": "Security settings", + "policies": "Policies", "sensors": "Sensors", "serialOverLan": "Serial over LAN (SOL) console", "serverPowerOperations": "Server power operations", - "sslCertificates": "SSL certificates", + "certificates": "Certificates", "virtualMedia": "Virtual media" }, "pageChangePassword": { @@ -164,7 +164,7 @@ "newPassword": "New password", "username": "Username" }, - "pageClientSessions": { + "pageSessions": { "action": { "disconnect": "Disconnect" }, @@ -486,7 +486,7 @@ "successSaveRoleGroup": "Successfully saved role group '%{groupName}'." } }, - "pageLocalUserManagement": { + "pageUserManagement": { "accountPolicySettings": "Account policy settings", "addUser": "Add user", "deleteUser": "Delete user | Delete users", @@ -585,7 +585,7 @@ "solConsole": "@:appNavigation.serialOverLan" } }, - "pagePostCodeLogs":{ + "pagePostCodeLogs": { "allExportFilePrefix": "All_POST_codes_log_", "downloadFilePrefix": "POST_codes_additional_details_", "exportFilePrefix": "POST_codes_log_", @@ -594,7 +594,7 @@ "exportLogs": "Export log" }, "button": { - "exportAll": "Export all" + "exportAll": "Export all" }, "table": { "created": "Created", @@ -694,12 +694,22 @@ "successRebootStart": "Rebooting BMC." } }, - "pageSecuritySettings": { + "pagePolicies": { "ipmi": "Network IPMI (out-of-band IPMI)", "ipmiDescription": "Allow remote management of the platform via IPMI. Tools such as ipmitool require this setting to be enabled.", "networkServices": "Network services", "ssh": "BMC shell (via SSH)", "sshDescription": "Allow access to shell sessions via SSH, through port 22 on the BMC.", + "modal": { + "disableMessage": { + "ipmi": "Are you sure you want to disable @:pagePolicies.ipmi?", + "ssh": "Are you sure you want to disable @:pagePolicies.ssh?" + }, + "enableMessage": { + "ipmi": "Are you sure you want to enable @:pagePolicies.ipmi?", + "ssh": "Are you sure you want to enable @:pagePolicies.ssh?" + } + }, "toast": { "errorIpmiDisabled": "Error disabling IPMI security setting.", "errorIpmiEnabled": "Error enabling IPMI security setting.", @@ -765,7 +775,7 @@ "successSaveSettings": "Successfully saved settings." } }, - "pageSslCertificates": { + "pageCertificates": { "addNewCertificate": "Add new certificate", "caCertificate": "CA Certificate", "deleteCertificate": "Delete certificate", diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json index 8042b163..c39a1737 100644 --- a/src/locales/ru-RU.json +++ b/src/locales/ru-RU.json @@ -96,8 +96,8 @@ "titleRefresh": "Обновить данные веб-приложения" }, "appNavigation": { - "accessControl": "Контроль доступа", - "clientSessions": "@:appPageTitle.clientSessions", + "securityAndAccess": "доступа", + "sessions": "@:appPageTitle.sessions", "configuration": "Конфигурация", "control": "Управление", "dateTimeSettings": "@:appPageTitle.dateTimeSettings", @@ -109,25 +109,25 @@ "health": "Состояние", "kvm": "@:appPageTitle.kvm", "ldap": "@:appPageTitle.ldap", - "localUserManagement": "@:appPageTitle.localUserManagement", + "userManagement": "@:appPageTitle.userManagement", "managePowerUsage": "@:appPageTitle.managePowerUsage", "networkSettings": "@:appPageTitle.networkSettings", "overview": "@:appPageTitle.overview", "primaryNavigation": "Основная навигация", "powerRestorePolicy": "@:appPageTitle.powerRestorePolicy", "rebootBmc": "@:appPageTitle.rebootBmc", - "securitySettings": "@:appPageTitle.securitySettings", + "policies": "@:appPageTitle.policies", "sensors": "@:appPageTitle.sensors", "serialOverLan": "Консоль SOL", "serverLed": "@:appPageTitle.serverLed", "serverPowerOperations": "@:appPageTitle.serverPowerOperations", "snmpSettings": "@:appPageTitle.snmpSettings", - "sslCertificates": "@:appPageTitle.sslCertificates", + "certificates": "@:appPageTitle.certificates", "virtualMedia": "@:appPageTitle.virtualMedia" }, "appPageTitle": { "changePassword": "Изменить пароль", - "clientSessions": "Сессии клиентов", + "sessions": "Сессии клиентов", "dateTimeSettings": "Настройка даты и времени", "dumps": "Дампы", "eventLogs": "Журнал событий", @@ -136,7 +136,7 @@ "hardwareStatus": "Статус оборудования", "kvm": "KVM", "ldap": "LDAP", - "localUserManagement": "Управление локальными пользователями", + "userManagement": "Управление локальными пользователями", "login": "Логин", "managePowerUsage": "Управление энергопотреблением", "networkSettings": "Настройки сети", @@ -145,13 +145,13 @@ "powerRestorePolicy": "Действие при восстановлении питания", "profileSettings": "Настройки профиля", "rebootBmc": "Перезапуск BMC", - "securitySettings": "Настройки безопасности", + "policies": "Настройки безопасности", "sensors": "Датчики", "serialOverLan": "Консоль Serial over LAN (SOL)", "serverLed": "Индикатор сервера", "serverPowerOperations": "Управление питанием сервера", "snmpSettings": "Настройки SNMP", - "sslCertificates": "SSL сертификаты", + "certificates": "сертификаты", "virtualMedia": "Виртуальные носители" }, "pageChangePassword": { @@ -163,7 +163,7 @@ "newPassword": "Новый пароль", "username": "Имя пользователя" }, - "pageClientSessions": { + "pageSessions": { "action": { "disconnect": "Отключить" }, @@ -453,7 +453,7 @@ "successSaveRoleGroup": "Успешное сохранение группы '%{groupName}'." } }, - "pageLocalUserManagement": { + "pageUserManagement": { "accountPolicySettings": "Настройки политики учётной записи", "addUser": "Добавить пользователя", "deleteUser": "Удалить пользователя | Удалить пользователей", @@ -644,7 +644,7 @@ "successRebootStart": "Перезапуск BMC." } }, - "pageSecuritySettings": { + "pagePolicies": { "ipmi": "Сетевой IPMI (out-of-band IPMI)", "ipmiDescription": "Разрешить удаленное управление платформой через IPMI. Такие иструменты, как ipmitool требуют включения этой функции.", "networkServices": "Сетевые службы", @@ -652,12 +652,12 @@ "sshDescription": "Разрешить доступ к консольной сессии через SSH, через порт 22 на BMC.", "modal": { "disableMessage": { - "ipmi": "Вы уверены, что хотите отключить @:pageSecuritySettings.ipmi?", - "ssh": "Вы уверены, что хотите отключить @:pageSecuritySettings.ssh?" + "ipmi": "Вы уверены, что хотите отключить @:pagePolicies.ipmi?", + "ssh": "Вы уверены, что хотите отключить @:pagePolicies.ssh?" }, "enableMessage": { - "ipmi": "Вы уверены, что хотите включить @:pageSecuritySettings.ipmi?", - "ssh": "Вы уверены, что хотите включить @:pageSecuritySettings.ssh?" + "ipmi": "Вы уверены, что хотите включить @:pagePolicies.ipmi?", + "ssh": "Вы уверены, что хотите включить @:pagePolicies.ssh?" } }, "toast": { @@ -735,7 +735,7 @@ "successSaveSettings": "Успешное сохранение настроек." } }, - "pageSslCertificates": { + "pageCertificates": { "addNewCertificate": "Добавить новый сертификат", "caCertificate": "Сертификат CA", "deleteCertificate": "Удалить сертификат", diff --git a/src/router/routes.js b/src/router/routes.js index a5cb7f2f..da103755 100644 --- a/src/router/routes.js +++ b/src/router/routes.js @@ -8,9 +8,9 @@ import Firmware from '@/views/Operations/Firmware'; import Inventory from '@/views/HardwareStatus/Inventory'; import Kvm from '@/views/Operations/Kvm'; import KvmConsole from '@/views/Operations/Kvm/KvmConsole'; -import ClientSessions from '../views/AccessControl/ClientSessions'; -import Ldap from '@/views/AccessControl/Ldap'; -import LocalUserManagement from '@/views/AccessControl/LocalUserManagement'; +import Sessions from '../views/SecurityAndAccess/Sessions'; +import Ldap from '@/views/SecurityAndAccess/Ldap'; +import UserManagement from '@/views/SecurityAndAccess/UserManagement'; import Login from '@/views/Login'; import LoginLayout from '@/layouts/LoginLayout'; import ManagePowerUsage from '@/views/Operations/ManagePowerUsage'; @@ -21,12 +21,12 @@ import PostCodeLogs from '@/views/Logs/PostCodeLogs'; import PowerRestorePolicy from '@/views/Settings/PowerRestorePolicy'; import ProfileSettings from '@/views/ProfileSettings'; import RebootBmc from '@/views/Operations/RebootBmc'; -import SecuritySettings from '@/views/Settings/SecuritySettings'; +import Policies from '@/views/SecurityAndAccess/Policies'; import Sensors from '@/views/HardwareStatus/Sensors'; import SerialOverLan from '@/views/Operations/SerialOverLan'; import SerialOverLanConsole from '@/views/Operations/SerialOverLan/SerialOverLanConsole'; import ServerPowerOperations from '@/views/Operations/ServerPowerOperations'; -import SslCertificates from '@/views/AccessControl/SslCertificates'; +import Certificates from '@/views/SecurityAndAccess/Certificates'; import VirtualMedia from '@/views/Operations/VirtualMedia'; import i18n from '@/i18n'; @@ -135,15 +135,15 @@ const routes = [ }, }, { - path: '/access-control/client-sessions', - name: 'client-sessions', - component: ClientSessions, + path: '/security-and-access/sessions', + name: 'sessions', + component: Sessions, meta: { - title: i18n.t('appPageTitle.clientSessions'), + title: i18n.t('appPageTitle.sessions'), }, }, { - path: '/access-control/ldap', + path: '/security-and-access/ldap', name: 'ldap', component: Ldap, meta: { @@ -151,35 +151,35 @@ const routes = [ }, }, { - path: '/access-control/local-user-management', + path: '/security-and-access/user-management', name: 'local-users', - component: LocalUserManagement, + component: UserManagement, meta: { - title: i18n.t('appPageTitle.localUserManagement'), + title: i18n.t('appPageTitle.userManagement'), }, }, { - path: '/access-control/ssl-certificates', - name: 'ssl-certificates', - component: SslCertificates, + path: '/security-and-access/policies', + name: 'policies', + component: Policies, meta: { - title: i18n.t('appPageTitle.sslCertificates'), + title: i18n.t('appPageTitle.policies'), }, }, { - path: '/settings/date-time', - name: 'date-time', - component: DateTime, + path: '/security-and-access/certificates', + name: 'certificates', + component: Certificates, meta: { - title: i18n.t('appPageTitle.dateTime'), + title: i18n.t('appPageTitle.certificates'), }, }, { - path: '/configuration/security-settings', - name: 'security-settings', - component: SecuritySettings, + path: '/settings/date-time', + name: 'date-time', + component: DateTime, meta: { - title: i18n.t('appPageTitle.securitySettings'), + title: i18n.t('appPageTitle.dateTime'), }, }, { diff --git a/src/store/index.js b/src/store/index.js index 2afadd02..608a0270 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3,10 +3,10 @@ import Vuex from 'vuex'; import GlobalStore from './modules/GlobalStore'; import AuthenticationStore from './modules/Authentication/AuthenticanStore'; -import ClientSessions from './modules/AccessControl/ClientSessionsStore'; -import LdapStore from './modules/AccessControl/LdapStore'; -import LocalUserManagementStore from './modules/AccessControl/LocalUserMangementStore'; -import SslCertificatesStore from './modules/AccessControl/SslCertificatesStore'; +import SessionsStore from './modules/SecurityAndAccess/SessionsStore'; +import LdapStore from './modules/SecurityAndAccess/LdapStore'; +import UserManagementStore from './modules/SecurityAndAccess/UserManagementStore'; +import CertificatesStore from './modules/SecurityAndAccess/CertificatesStore'; import FirmwareStore from './modules/Operations/FirmwareStore'; import BootSettingsStore from './modules/Operations/BootSettingsStore'; import ControlStore from './modules/Operations/ControlStore'; @@ -24,7 +24,7 @@ import ChassisStore from './modules/HardwareStatus/ChassisStore'; import BmcStore from './modules/HardwareStatus/BmcStore'; import ProcessorStore from './modules/HardwareStatus/ProcessorStore'; import PostCodeLogsStore from './modules/Logs/PostCodeLogsStore'; -import SecuritySettingsStore from './modules/Settings/SecuritySettingsStore'; +import PoliciesStore from './modules/SecurityAndAccess/PoliciesStore'; import FactoryResetStore from './modules/Operations/FactoryResetStore'; import WebSocketPlugin from './plugins/WebSocketPlugin'; @@ -40,10 +40,10 @@ export default new Vuex.Store({ modules: { global: GlobalStore, authentication: AuthenticationStore, - clientSessions: ClientSessions, + sessions: SessionsStore, dateTime: DateTimeStore, ldap: LdapStore, - localUsers: LocalUserManagementStore, + userManagement: UserManagementStore, firmware: FirmwareStore, serverBootSettings: BootSettingsStore, controls: ControlStore, @@ -53,8 +53,8 @@ export default new Vuex.Store({ network: NetworkStore, eventLog: EventLogStore, sensors: SensorsStore, - sslCertificates: SslCertificatesStore, serverLed: ServerLedStore, + certificates: CertificatesStore, system: SystemStore, memory: MemoryStore, fan: FanStore, @@ -63,7 +63,7 @@ export default new Vuex.Store({ processors: ProcessorStore, postCodeLogs: PostCodeLogsStore, virtualMedia: VirtualMediaStore, - securitySettings: SecuritySettingsStore, + policies: PoliciesStore, factoryReset: FactoryResetStore, }, plugins: [WebSocketPlugin], diff --git a/src/store/modules/AccessControl/ClientSessionsStore.js b/src/store/modules/AccessControl/ClientSessionsStore.js deleted file mode 100644 index 4295d578..00000000 --- a/src/store/modules/AccessControl/ClientSessionsStore.js +++ /dev/null @@ -1,80 +0,0 @@ -import api, { getResponseCount } from '@/store/api'; -import i18n from '@/i18n'; - -const ClientSessionsStore = { - namespaced: true, - state: { - allConnections: [], - }, - getters: { - allConnections: (state) => state.allConnections, - }, - mutations: { - setAllConnections: (state, allConnections) => - (state.allConnections = allConnections), - }, - actions: { - async getClientSessionsData({ commit }) { - return await api - .get('/redfish/v1/SessionService/Sessions') - .then((response) => - response.data.Members.map((sessionLogs) => sessionLogs['@odata.id']) - ) - .then((sessionUris) => - api.all(sessionUris.map((sessionUri) => api.get(sessionUri))) - ) - .then((sessionUris) => { - const allConnectionsData = sessionUris.map((sessionUri) => { - return { - clientID: sessionUri.data?.Oem?.OpenBMC.ClientID, - username: sessionUri.data?.UserName, - ipAddress: sessionUri.data?.ClientOriginIPAddress, - uri: sessionUri.data['@odata.id'], - }; - }); - commit('setAllConnections', allConnectionsData); - }) - .catch((error) => { - console.log('Client Session Data:', error); - }); - }, - async disconnectSessions({ dispatch }, uris = []) { - const promises = uris.map((uri) => - api.delete(uri).catch((error) => { - console.log(error); - return error; - }) - ); - return await api - .all(promises) - .then((response) => { - dispatch('getClientSessionsData'); - return response; - }) - .then( - api.spread((...responses) => { - const { successCount, errorCount } = getResponseCount(responses); - const toastMessages = []; - - if (successCount) { - const message = i18n.tc( - 'pageClientSessions.toast.successDelete', - successCount - ); - toastMessages.push({ type: 'success', message }); - } - - if (errorCount) { - const message = i18n.tc( - 'pageClientSessions.toast.errorDelete', - errorCount - ); - toastMessages.push({ type: 'error', message }); - } - return toastMessages; - }) - ); - }, - }, -}; -export default ClientSessionsStore; diff --git a/src/store/modules/AccessControl/LdapStore.js b/src/store/modules/AccessControl/LdapStore.js deleted file mode 100644 index 5aa31c2d..00000000 --- a/src/store/modules/AccessControl/LdapStore.js +++ /dev/null @@ -1,275 +0,0 @@ -import api from '@/store/api'; -import i18n from '@/i18n'; -import { find } from 'lodash'; - -const LdapStore = { - namespaced: true, - state: { - isServiceEnabled: null, - ldap: { - serviceEnabled: null, - serviceAddress: null, - bindDn: null, - baseDn: null, - userAttribute: null, - groupsAttribute: null, - roleGroups: [], - }, - activeDirectory: { - serviceEnabled: null, - serviceAddress: null, - bindDn: null, - baseDn: null, - userAttribute: null, - groupsAttribute: null, - roleGroups: [], - }, - }, - getters: { - isServiceEnabled: (state) => state.isServiceEnabled, - ldap: (state) => state.ldap, - activeDirectory: (state) => state.activeDirectory, - isActiveDirectoryEnabled: (state) => { - return state.activeDirectory.serviceEnabled; - }, - enabledRoleGroups: (state, getters) => { - const serviceType = getters.isActiveDirectoryEnabled - ? 'activeDirectory' - : 'ldap'; - return state[serviceType].roleGroups; - }, - }, - mutations: { - setServiceEnabled: (state, serviceEnabled) => - (state.isServiceEnabled = serviceEnabled), - setLdapProperties: ( - state, - { - ServiceEnabled, - ServiceAddresses = [], - Authentication = {}, - LDAPService: { - SearchSettings: { - BaseDistinguishedNames = [], - UsernameAttribute, - GroupsAttribute, - } = {}, - } = {}, - RemoteRoleMapping = [], - } - ) => { - state.ldap.serviceAddress = ServiceAddresses[0]; - state.ldap.serviceEnabled = ServiceEnabled; - state.ldap.baseDn = BaseDistinguishedNames[0]; - state.ldap.bindDn = Authentication.Username; - state.ldap.userAttribute = UsernameAttribute; - state.ldap.groupsAttribute = GroupsAttribute; - state.ldap.roleGroups = RemoteRoleMapping; - }, - setActiveDirectoryProperties: ( - state, - { - ServiceEnabled, - ServiceAddresses = [], - Authentication = {}, - LDAPService: { - SearchSettings: { - BaseDistinguishedNames = [], - UsernameAttribute, - GroupsAttribute, - } = {}, - } = {}, - RemoteRoleMapping = [], - } - ) => { - state.activeDirectory.serviceEnabled = ServiceEnabled; - state.activeDirectory.serviceAddress = ServiceAddresses[0]; - state.activeDirectory.bindDn = Authentication.Username; - state.activeDirectory.baseDn = BaseDistinguishedNames[0]; - state.activeDirectory.userAttribute = UsernameAttribute; - state.activeDirectory.groupsAttribute = GroupsAttribute; - state.activeDirectory.roleGroups = RemoteRoleMapping; - }, - }, - actions: { - async getAccountSettings({ commit }) { - return await api - .get('/redfish/v1/AccountService') - .then(({ data: { LDAP = {}, ActiveDirectory = {} } }) => { - const ldapEnabled = LDAP.ServiceEnabled; - const activeDirectoryEnabled = ActiveDirectory.ServiceEnabled; - - commit('setServiceEnabled', ldapEnabled || activeDirectoryEnabled); - commit('setLdapProperties', LDAP); - commit('setActiveDirectoryProperties', ActiveDirectory); - }) - .catch((error) => console.log(error)); - }, - async saveLdapSettings({ state, dispatch }, properties) { - const data = { LDAP: properties }; - if (state.activeDirectory.serviceEnabled) { - // Disable Active Directory service if enabled - await api.patch('/redfish/v1/AccountService', { - ActiveDirectory: { ServiceEnabled: false }, - }); - } - return await api - .patch('/redfish/v1/AccountService', data) - .then(() => dispatch('getAccountSettings')) - .then(() => i18n.t('pageLdap.toast.successSaveLdapSettings')) - .catch((error) => { - console.log(error); - throw new Error(i18n.t('pageLdap.toast.errorSaveLdapSettings')); - }); - }, - async saveActiveDirectorySettings({ state, dispatch }, properties) { - const data = { ActiveDirectory: properties }; - if (state.ldap.serviceEnabled) { - // Disable LDAP service if enabled - await api.patch('/redfish/v1/AccountService', { - LDAP: { ServiceEnabled: false }, - }); - } - return await api - .patch('/redfish/v1/AccountService', data) - .then(() => dispatch('getAccountSettings')) - .then(() => i18n.t('pageLdap.toast.successSaveActiveDirectorySettings')) - .catch((error) => { - console.log(error); - throw new Error( - i18n.t('pageLdap.toast.errorSaveActiveDirectorySettings') - ); - }); - }, - async saveAccountSettings( - { dispatch }, - { - serviceEnabled, - serviceAddress, - activeDirectoryEnabled, - bindDn, - bindPassword, - baseDn, - userIdAttribute, - groupIdAttribute, - } - ) { - const data = { - ServiceEnabled: serviceEnabled, - ServiceAddresses: [serviceAddress], - Authentication: { - Username: bindDn, - Password: bindPassword, - }, - LDAPService: { - SearchSettings: { - BaseDistinguishedNames: [baseDn], - }, - }, - }; - if (groupIdAttribute) - data.LDAPService.SearchSettings.GroupsAttribute = groupIdAttribute; - if (userIdAttribute) - data.LDAPService.SearchSettings.UsernameAttribute = userIdAttribute; - - if (activeDirectoryEnabled) { - return await dispatch('saveActiveDirectorySettings', data); - } else { - return await dispatch('saveLdapSettings', data); - } - }, - async addNewRoleGroup( - { dispatch, getters }, - { groupName, groupPrivilege } - ) { - const data = {}; - const enabledRoleGroups = getters['enabledRoleGroups']; - const isActiveDirectoryEnabled = getters['isActiveDirectoryEnabled']; - const RemoteRoleMapping = [ - ...enabledRoleGroups, - { - LocalRole: groupPrivilege, - RemoteGroup: groupName, - }, - ]; - if (isActiveDirectoryEnabled) { - data.ActiveDirectory = { RemoteRoleMapping }; - } else { - data.LDAP = { RemoteRoleMapping }; - } - return await api - .patch('/redfish/v1/AccountService', data) - .then(() => dispatch('getAccountSettings')) - .then(() => - i18n.t('pageLdap.toast.successAddRoleGroup', { - groupName, - }) - ) - .catch((error) => { - console.log(error); - throw new Error(i18n.t('pageLdap.toast.errorAddRoleGroup')); - }); - }, - async saveRoleGroup({ dispatch, getters }, { groupName, groupPrivilege }) { - const data = {}; - const enabledRoleGroups = getters['enabledRoleGroups']; - const isActiveDirectoryEnabled = getters['isActiveDirectoryEnabled']; - const RemoteRoleMapping = enabledRoleGroups.map((group) => { - if (group.RemoteGroup === groupName) { - return { - RemoteGroup: groupName, - LocalRole: groupPrivilege, - }; - } else { - return {}; - } - }); - if (isActiveDirectoryEnabled) { - data.ActiveDirectory = { RemoteRoleMapping }; - } else { - data.LDAP = { RemoteRoleMapping }; - } - return await api - .patch('/redfish/v1/AccountService', data) - .then(() => dispatch('getAccountSettings')) - .then(() => - i18n.t('pageLdap.toast.successSaveRoleGroup', { groupName }) - ) - .catch((error) => { - console.log(error); - throw new Error(i18n.t('pageLdap.toast.errorSaveRoleGroup')); - }); - }, - async deleteRoleGroup({ dispatch, getters }, { roleGroups = [] }) { - const data = {}; - const enabledRoleGroups = getters['enabledRoleGroups']; - const isActiveDirectoryEnabled = getters['isActiveDirectoryEnabled']; - const RemoteRoleMapping = enabledRoleGroups.map((group) => { - if (find(roleGroups, { groupName: group.RemoteGroup })) { - return null; - } else { - return {}; - } - }); - if (isActiveDirectoryEnabled) { - data.ActiveDirectory = { RemoteRoleMapping }; - } else { - data.LDAP = { RemoteRoleMapping }; - } - return await api - .patch('/redfish/v1/AccountService', data) - .then(() => dispatch('getAccountSettings')) - .then(() => - i18n.tc('pageLdap.toast.successDeleteRoleGroup', roleGroups.length) - ) - .catch((error) => { - console.log(error); - throw new Error( - i18n.tc('pageLdap.toast.errorDeleteRoleGroup', roleGroups.length) - ); - }); - }, - }, -}; - -export default LdapStore; diff --git a/src/store/modules/AccessControl/LocalUserMangementStore.js b/src/store/modules/AccessControl/LocalUserMangementStore.js deleted file mode 100644 index 6bc6ec5d..00000000 --- a/src/store/modules/AccessControl/LocalUserMangementStore.js +++ /dev/null @@ -1,325 +0,0 @@ -import api, { getResponseCount } from '@/store/api'; -import i18n from '@/i18n'; - -const LocalUserManagementStore = { - namespaced: true, - state: { - allUsers: [], - accountRoles: [], - accountLockoutDuration: null, - accountLockoutThreshold: null, - accountMinPasswordLength: null, - accountMaxPasswordLength: null, - }, - getters: { - allUsers(state) { - return state.allUsers; - }, - accountRoles(state) { - return state.accountRoles; - }, - accountSettings(state) { - return { - lockoutDuration: state.accountLockoutDuration, - lockoutThreshold: state.accountLockoutThreshold, - }; - }, - accountPasswordRequirements(state) { - return { - minLength: state.accountMinPasswordLength, - maxLength: state.accountMaxPasswordLength, - }; - }, - }, - mutations: { - setUsers(state, allUsers) { - state.allUsers = allUsers; - }, - setAccountRoles(state, accountRoles) { - state.accountRoles = accountRoles; - }, - setLockoutDuration(state, lockoutDuration) { - state.accountLockoutDuration = lockoutDuration; - }, - setLockoutThreshold(state, lockoutThreshold) { - state.accountLockoutThreshold = lockoutThreshold; - }, - setAccountMinPasswordLength(state, minPasswordLength) { - state.accountMinPasswordLength = minPasswordLength; - }, - setAccountMaxPasswordLength(state, maxPasswordLength) { - state.accountMaxPasswordLength = maxPasswordLength; - }, - }, - actions: { - async getUsers({ commit }) { - return await api - .get('/redfish/v1/AccountService/Accounts') - .then((response) => - response.data.Members.map((user) => user['@odata.id']) - ) - .then((userIds) => api.all(userIds.map((user) => api.get(user)))) - .then((users) => { - const userData = users.map((user) => user.data); - commit('setUsers', userData); - }) - .catch((error) => { - console.log(error); - const message = i18n.t( - 'pageLocalUserManagement.toast.errorLoadUsers' - ); - throw new Error(message); - }); - }, - getAccountSettings({ commit }) { - api - .get('/redfish/v1/AccountService') - .then(({ data }) => { - commit('setLockoutDuration', data.AccountLockoutDuration); - commit('setLockoutThreshold', data.AccountLockoutThreshold); - commit('setAccountMinPasswordLength', data.MinPasswordLength); - commit('setAccountMaxPasswordLength', data.MaxPasswordLength); - }) - .catch((error) => { - console.log(error); - const message = i18n.t( - 'pageLocalUserManagement.toast.errorLoadAccountSettings' - ); - throw new Error(message); - }); - }, - getAccountRoles({ commit }) { - api - .get('/redfish/v1/AccountService/Roles') - .then(({ data: { Members = [] } = {} }) => { - const roles = Members.map((role) => { - return role['@odata.id'].split('/').pop(); - }); - commit('setAccountRoles', roles); - }) - .catch((error) => console.log(error)); - }, - async createUser({ dispatch }, { username, password, privilege, status }) { - const data = { - UserName: username, - Password: password, - RoleId: privilege, - Enabled: status, - }; - return await api - .post('/redfish/v1/AccountService/Accounts', data) - .then(() => dispatch('getUsers')) - .then(() => - i18n.t('pageLocalUserManagement.toast.successCreateUser', { - username, - }) - ) - .catch((error) => { - console.log(error); - const message = i18n.t( - 'pageLocalUserManagement.toast.errorCreateUser', - { username } - ); - throw new Error(message); - }); - }, - async updateUser( - { dispatch }, - { originalUsername, username, password, privilege, status, locked } - ) { - const data = {}; - if (username) data.UserName = username; - if (password) data.Password = password; - if (privilege) data.RoleId = privilege; - if (status !== undefined) data.Enabled = status; - if (locked !== undefined) data.Locked = locked; - return await api - .patch(`/redfish/v1/AccountService/Accounts/${originalUsername}`, data) - .then(() => dispatch('getUsers')) - .then(() => - i18n.t('pageLocalUserManagement.toast.successUpdateUser', { - username: originalUsername, - }) - ) - .catch((error) => { - console.log(error); - const message = i18n.t( - 'pageLocalUserManagement.toast.errorUpdateUser', - { username: originalUsername } - ); - throw new Error(message); - }); - }, - async deleteUser({ dispatch }, username) { - return await api - .delete(`/redfish/v1/AccountService/Accounts/${username}`) - .then(() => dispatch('getUsers')) - .then(() => - i18n.t('pageLocalUserManagement.toast.successDeleteUser', { - username, - }) - ) - .catch((error) => { - console.log(error); - const message = i18n.t( - 'pageLocalUserManagement.toast.errorDeleteUser', - { username } - ); - throw new Error(message); - }); - }, - async deleteUsers({ dispatch }, users) { - const promises = users.map(({ username }) => { - return api - .delete(`/redfish/v1/AccountService/Accounts/${username}`) - .catch((error) => { - console.log(error); - return error; - }); - }); - return await api - .all(promises) - .then((response) => { - dispatch('getUsers'); - return response; - }) - .then( - api.spread((...responses) => { - const { successCount, errorCount } = getResponseCount(responses); - let toastMessages = []; - - if (successCount) { - const message = i18n.tc( - 'pageLocalUserManagement.toast.successBatchDelete', - successCount - ); - toastMessages.push({ type: 'success', message }); - } - - if (errorCount) { - const message = i18n.tc( - 'pageLocalUserManagement.toast.errorBatchDelete', - errorCount - ); - toastMessages.push({ type: 'error', message }); - } - - return toastMessages; - }) - ); - }, - async enableUsers({ dispatch }, users) { - const data = { - Enabled: true, - }; - const promises = users.map(({ username }) => { - return api - .patch(`/redfish/v1/AccountService/Accounts/${username}`, data) - .catch((error) => { - console.log(error); - return error; - }); - }); - return await api - .all(promises) - .then((response) => { - dispatch('getUsers'); - return response; - }) - .then( - api.spread((...responses) => { - const { successCount, errorCount } = getResponseCount(responses); - let toastMessages = []; - - if (successCount) { - const message = i18n.tc( - 'pageLocalUserManagement.toast.successBatchEnable', - successCount - ); - toastMessages.push({ type: 'success', message }); - } - - if (errorCount) { - const message = i18n.tc( - 'pageLocalUserManagement.toast.errorBatchEnable', - errorCount - ); - toastMessages.push({ type: 'error', message }); - } - - return toastMessages; - }) - ); - }, - async disableUsers({ dispatch }, users) { - const data = { - Enabled: false, - }; - const promises = users.map(({ username }) => { - return api - .patch(`/redfish/v1/AccountService/Accounts/${username}`, data) - .catch((error) => { - console.log(error); - return error; - }); - }); - return await api - .all(promises) - .then((response) => { - dispatch('getUsers'); - return response; - }) - .then( - api.spread((...responses) => { - const { successCount, errorCount } = getResponseCount(responses); - let toastMessages = []; - - if (successCount) { - const message = i18n.tc( - 'pageLocalUserManagement.toast.successBatchDisable', - successCount - ); - toastMessages.push({ type: 'success', message }); - } - - if (errorCount) { - const message = i18n.tc( - 'pageLocalUserManagement.toast.errorBatchDisable', - errorCount - ); - toastMessages.push({ type: 'error', message }); - } - - return toastMessages; - }) - ); - }, - async saveAccountSettings( - { dispatch }, - { lockoutThreshold, lockoutDuration } - ) { - const data = {}; - if (lockoutThreshold !== undefined) { - data.AccountLockoutThreshold = lockoutThreshold; - } - if (lockoutDuration !== undefined) { - data.AccountLockoutDuration = lockoutDuration; - } - - return await api - .patch('/redfish/v1/AccountService', data) - //GET new settings to update view - .then(() => dispatch('getAccountSettings')) - .then(() => i18n.t('pageLocalUserManagement.toast.successSaveSettings')) - .catch((error) => { - console.log(error); - const message = i18n.t( - 'pageLocalUserManagement.toast.errorSaveSettings' - ); - throw new Error(message); - }); - }, - }, -}; - -export default LocalUserManagementStore; diff --git a/src/store/modules/AccessControl/SslCertificatesStore.js b/src/store/modules/AccessControl/SslCertificatesStore.js deleted file mode 100644 index 752c2124..00000000 --- a/src/store/modules/AccessControl/SslCertificatesStore.js +++ /dev/null @@ -1,204 +0,0 @@ -import api from '@/store/api'; -import i18n from '@/i18n'; - -export const CERTIFICATE_TYPES = [ - { - type: 'HTTPS Certificate', - location: '/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/', - label: i18n.t('pageSslCertificates.httpsCertificate'), - }, - { - type: 'LDAP Certificate', - location: '/redfish/v1/AccountService/LDAP/Certificates/', - label: i18n.t('pageSslCertificates.ldapCertificate'), - }, - { - type: 'TrustStore Certificate', - location: '/redfish/v1/Managers/bmc/Truststore/Certificates/', - // Web UI will show 'CA Certificate' instead of - // 'TrustStore Certificate' after user testing revealed - // the term 'TrustStore Certificate' wasn't recognized/was unfamilar - label: i18n.t('pageSslCertificates.caCertificate'), - }, -]; - -const getCertificateProp = (type, prop) => { - const certificate = CERTIFICATE_TYPES.find( - (certificate) => certificate.type === type - ); - return certificate ? certificate[prop] : null; -}; - -const SslCertificatesStore = { - namespaced: true, - state: { - allCertificates: [], - availableUploadTypes: [], - }, - getters: { - allCertificates: (state) => state.allCertificates, - availableUploadTypes: (state) => state.availableUploadTypes, - }, - mutations: { - setCertificates(state, certificates) { - state.allCertificates = certificates; - }, - setAvailableUploadTypes(state, availableUploadTypes) { - state.availableUploadTypes = availableUploadTypes; - }, - }, - actions: { - async getCertificates({ commit }) { - return await api - .get('/redfish/v1/CertificateService/CertificateLocations') - .then(({ data: { Links: { Certificates } } }) => - Certificates.map((certificate) => certificate['@odata.id']) - ) - .then((certificateLocations) => { - const promises = certificateLocations.map((location) => - api.get(location) - ); - api.all(promises).then( - api.spread((...responses) => { - const certificates = responses.map(({ data }) => { - const { - Name, - ValidNotAfter, - ValidNotBefore, - Issuer = {}, - Subject = {}, - } = data; - return { - type: Name, - location: data['@odata.id'], - certificate: getCertificateProp(Name, 'label'), - issuedBy: Issuer.CommonName, - issuedTo: Subject.CommonName, - validFrom: new Date(ValidNotBefore), - validUntil: new Date(ValidNotAfter), - }; - }); - const availableUploadTypes = CERTIFICATE_TYPES.filter( - ({ type }) => - !certificates - .map((certificate) => certificate.type) - .includes(type) - ); - - commit('setCertificates', certificates); - commit('setAvailableUploadTypes', availableUploadTypes); - }) - ); - }); - }, - async addNewCertificate({ dispatch }, { file, type }) { - return await api - .post(getCertificateProp(type, 'location'), file, { - headers: { 'Content-Type': 'application/x-pem-file' }, - }) - .then(() => dispatch('getCertificates')) - .then(() => - i18n.t('pageSslCertificates.toast.successAddCertificate', { - certificate: getCertificateProp(type, 'label'), - }) - ) - .catch((error) => { - console.log(error); - throw new Error( - i18n.t('pageSslCertificates.toast.errorAddCertificate') - ); - }); - }, - async replaceCertificate( - { dispatch }, - { certificateString, location, type } - ) { - const data = {}; - data.CertificateString = certificateString; - data.CertificateType = 'PEM'; - data.CertificateUri = { '@odata.id': location }; - - return await api - .post( - '/redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate', - data - ) - .then(() => dispatch('getCertificates')) - .then(() => - i18n.t('pageSslCertificates.toast.successReplaceCertificate', { - certificate: getCertificateProp(type, 'label'), - }) - ) - .catch((error) => { - console.log(error); - throw new Error( - i18n.t('pageSslCertificates.toast.errorReplaceCertificate') - ); - }); - }, - async deleteCertificate({ dispatch }, { type, location }) { - return await api - .delete(location) - .then(() => dispatch('getCertificates')) - .then(() => - i18n.t('pageSslCertificates.toast.successDeleteCertificate', { - certificate: getCertificateProp(type, 'label'), - }) - ) - .catch((error) => { - console.log(error); - throw new Error( - i18n.t('pageSslCertificates.toast.errorDeleteCertificate') - ); - }); - }, - async generateCsr(_, userData) { - const { - certificateType, - country, - state, - city, - companyName, - companyUnit, - commonName, - keyPairAlgorithm, - keyBitLength, - keyCurveId, - challengePassword, - contactPerson, - emailAddress, - alternateName, - } = userData; - const data = {}; - - data.CertificateCollection = { - '@odata.id': getCertificateProp(certificateType, 'location'), - }; - data.Country = country; - data.State = state; - data.City = city; - data.Organization = companyName; - data.OrganizationalUnit = companyUnit; - data.CommonName = commonName; - data.KeyPairAlgorithm = keyPairAlgorithm; - data.AlternativeNames = alternateName; - - 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; - - return await api - .post( - '/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSR', - data - ) - //TODO: Success response also throws error so - // can't accurately show legitimate error in UI - .catch((error) => console.log(error)); - }, - }, -}; - -export default SslCertificatesStore; diff --git a/src/store/modules/SecurityAndAccess/CertificatesStore.js b/src/store/modules/SecurityAndAccess/CertificatesStore.js new file mode 100644 index 00000000..97241f34 --- /dev/null +++ b/src/store/modules/SecurityAndAccess/CertificatesStore.js @@ -0,0 +1,202 @@ +import api from '@/store/api'; +import i18n from '@/i18n'; + +export const CERTIFICATE_TYPES = [ + { + type: 'HTTPS Certificate', + location: '/redfish/v1/Managers/bmc/NetworkProtocol/HTTPS/Certificates/', + label: i18n.t('pageCertificates.httpsCertificate'), + }, + { + type: 'LDAP Certificate', + location: '/redfish/v1/AccountService/LDAP/Certificates/', + label: i18n.t('pageCertificates.ldapCertificate'), + }, + { + type: 'TrustStore Certificate', + location: '/redfish/v1/Managers/bmc/Truststore/Certificates/', + // Web UI will show 'CA Certificate' instead of + // 'TrustStore Certificate' after user testing revealed + // the term 'TrustStore Certificate' wasn't recognized/was unfamilar + label: i18n.t('pageCertificates.caCertificate'), + }, +]; + +const getCertificateProp = (type, prop) => { + const certificate = CERTIFICATE_TYPES.find( + (certificate) => certificate.type === type + ); + return certificate ? certificate[prop] : null; +}; + +const CertificatesStore = { + namespaced: true, + state: { + allCertificates: [], + availableUploadTypes: [], + }, + getters: { + allCertificates: (state) => state.allCertificates, + availableUploadTypes: (state) => state.availableUploadTypes, + }, + mutations: { + setCertificates(state, certificates) { + state.allCertificates = certificates; + }, + setAvailableUploadTypes(state, availableUploadTypes) { + state.availableUploadTypes = availableUploadTypes; + }, + }, + actions: { + async getCertificates({ commit }) { + return await api + .get('/redfish/v1/CertificateService/CertificateLocations') + .then(({ data: { Links: { Certificates } } }) => + Certificates.map((certificate) => certificate['@odata.id']) + ) + .then((certificateLocations) => { + const promises = certificateLocations.map((location) => + api.get(location) + ); + api.all(promises).then( + api.spread((...responses) => { + const certificates = responses.map(({ data }) => { + const { + Name, + ValidNotAfter, + ValidNotBefore, + Issuer = {}, + Subject = {}, + } = data; + return { + type: Name, + location: data['@odata.id'], + certificate: getCertificateProp(Name, 'label'), + issuedBy: Issuer.CommonName, + issuedTo: Subject.CommonName, + validFrom: new Date(ValidNotBefore), + validUntil: new Date(ValidNotAfter), + }; + }); + const availableUploadTypes = CERTIFICATE_TYPES.filter( + ({ type }) => + !certificates + .map((certificate) => certificate.type) + .includes(type) + ); + + commit('setCertificates', certificates); + commit('setAvailableUploadTypes', availableUploadTypes); + }) + ); + }); + }, + async addNewCertificate({ dispatch }, { file, type }) { + return await api + .post(getCertificateProp(type, 'location'), file, { + headers: { 'Content-Type': 'application/x-pem-file' }, + }) + .then(() => dispatch('getCertificates')) + .then(() => + i18n.t('pageCertificates.toast.successAddCertificate', { + certificate: getCertificateProp(type, 'label'), + }) + ) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageCertificates.toast.errorAddCertificate')); + }); + }, + async replaceCertificate( + { dispatch }, + { certificateString, location, type } + ) { + const data = {}; + data.CertificateString = certificateString; + data.CertificateType = 'PEM'; + data.CertificateUri = { '@odata.id': location }; + + return await api + .post( + '/redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate', + data + ) + .then(() => dispatch('getCertificates')) + .then(() => + i18n.t('pageCertificates.toast.successReplaceCertificate', { + certificate: getCertificateProp(type, 'label'), + }) + ) + .catch((error) => { + console.log(error); + throw new Error( + i18n.t('pageCertificates.toast.errorReplaceCertificate') + ); + }); + }, + async deleteCertificate({ dispatch }, { type, location }) { + return await api + .delete(location) + .then(() => dispatch('getCertificates')) + .then(() => + i18n.t('pageCertificates.toast.successDeleteCertificate', { + certificate: getCertificateProp(type, 'label'), + }) + ) + .catch((error) => { + console.log(error); + throw new Error( + i18n.t('pageCertificates.toast.errorDeleteCertificate') + ); + }); + }, + async generateCsr(_, userData) { + const { + certificateType, + country, + state, + city, + companyName, + companyUnit, + commonName, + keyPairAlgorithm, + keyBitLength, + keyCurveId, + challengePassword, + contactPerson, + emailAddress, + alternateName, + } = userData; + const data = {}; + + data.CertificateCollection = { + '@odata.id': getCertificateProp(certificateType, 'location'), + }; + data.Country = country; + data.State = state; + data.City = city; + data.Organization = companyName; + data.OrganizationalUnit = companyUnit; + data.CommonName = commonName; + data.KeyPairAlgorithm = keyPairAlgorithm; + data.AlternativeNames = alternateName; + + 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; + + return await api + .post( + '/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSR', + data + ) + //TODO: Success response also throws error so + // can't accurately show legitimate error in UI + .catch((error) => console.log(error)); + }, + }, +}; + +export default CertificatesStore; diff --git a/src/store/modules/SecurityAndAccess/LdapStore.js b/src/store/modules/SecurityAndAccess/LdapStore.js new file mode 100644 index 00000000..5aa31c2d --- /dev/null +++ b/src/store/modules/SecurityAndAccess/LdapStore.js @@ -0,0 +1,275 @@ +import api from '@/store/api'; +import i18n from '@/i18n'; +import { find } from 'lodash'; + +const LdapStore = { + namespaced: true, + state: { + isServiceEnabled: null, + ldap: { + serviceEnabled: null, + serviceAddress: null, + bindDn: null, + baseDn: null, + userAttribute: null, + groupsAttribute: null, + roleGroups: [], + }, + activeDirectory: { + serviceEnabled: null, + serviceAddress: null, + bindDn: null, + baseDn: null, + userAttribute: null, + groupsAttribute: null, + roleGroups: [], + }, + }, + getters: { + isServiceEnabled: (state) => state.isServiceEnabled, + ldap: (state) => state.ldap, + activeDirectory: (state) => state.activeDirectory, + isActiveDirectoryEnabled: (state) => { + return state.activeDirectory.serviceEnabled; + }, + enabledRoleGroups: (state, getters) => { + const serviceType = getters.isActiveDirectoryEnabled + ? 'activeDirectory' + : 'ldap'; + return state[serviceType].roleGroups; + }, + }, + mutations: { + setServiceEnabled: (state, serviceEnabled) => + (state.isServiceEnabled = serviceEnabled), + setLdapProperties: ( + state, + { + ServiceEnabled, + ServiceAddresses = [], + Authentication = {}, + LDAPService: { + SearchSettings: { + BaseDistinguishedNames = [], + UsernameAttribute, + GroupsAttribute, + } = {}, + } = {}, + RemoteRoleMapping = [], + } + ) => { + state.ldap.serviceAddress = ServiceAddresses[0]; + state.ldap.serviceEnabled = ServiceEnabled; + state.ldap.baseDn = BaseDistinguishedNames[0]; + state.ldap.bindDn = Authentication.Username; + state.ldap.userAttribute = UsernameAttribute; + state.ldap.groupsAttribute = GroupsAttribute; + state.ldap.roleGroups = RemoteRoleMapping; + }, + setActiveDirectoryProperties: ( + state, + { + ServiceEnabled, + ServiceAddresses = [], + Authentication = {}, + LDAPService: { + SearchSettings: { + BaseDistinguishedNames = [], + UsernameAttribute, + GroupsAttribute, + } = {}, + } = {}, + RemoteRoleMapping = [], + } + ) => { + state.activeDirectory.serviceEnabled = ServiceEnabled; + state.activeDirectory.serviceAddress = ServiceAddresses[0]; + state.activeDirectory.bindDn = Authentication.Username; + state.activeDirectory.baseDn = BaseDistinguishedNames[0]; + state.activeDirectory.userAttribute = UsernameAttribute; + state.activeDirectory.groupsAttribute = GroupsAttribute; + state.activeDirectory.roleGroups = RemoteRoleMapping; + }, + }, + actions: { + async getAccountSettings({ commit }) { + return await api + .get('/redfish/v1/AccountService') + .then(({ data: { LDAP = {}, ActiveDirectory = {} } }) => { + const ldapEnabled = LDAP.ServiceEnabled; + const activeDirectoryEnabled = ActiveDirectory.ServiceEnabled; + + commit('setServiceEnabled', ldapEnabled || activeDirectoryEnabled); + commit('setLdapProperties', LDAP); + commit('setActiveDirectoryProperties', ActiveDirectory); + }) + .catch((error) => console.log(error)); + }, + async saveLdapSettings({ state, dispatch }, properties) { + const data = { LDAP: properties }; + if (state.activeDirectory.serviceEnabled) { + // Disable Active Directory service if enabled + await api.patch('/redfish/v1/AccountService', { + ActiveDirectory: { ServiceEnabled: false }, + }); + } + return await api + .patch('/redfish/v1/AccountService', data) + .then(() => dispatch('getAccountSettings')) + .then(() => i18n.t('pageLdap.toast.successSaveLdapSettings')) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageLdap.toast.errorSaveLdapSettings')); + }); + }, + async saveActiveDirectorySettings({ state, dispatch }, properties) { + const data = { ActiveDirectory: properties }; + if (state.ldap.serviceEnabled) { + // Disable LDAP service if enabled + await api.patch('/redfish/v1/AccountService', { + LDAP: { ServiceEnabled: false }, + }); + } + return await api + .patch('/redfish/v1/AccountService', data) + .then(() => dispatch('getAccountSettings')) + .then(() => i18n.t('pageLdap.toast.successSaveActiveDirectorySettings')) + .catch((error) => { + console.log(error); + throw new Error( + i18n.t('pageLdap.toast.errorSaveActiveDirectorySettings') + ); + }); + }, + async saveAccountSettings( + { dispatch }, + { + serviceEnabled, + serviceAddress, + activeDirectoryEnabled, + bindDn, + bindPassword, + baseDn, + userIdAttribute, + groupIdAttribute, + } + ) { + const data = { + ServiceEnabled: serviceEnabled, + ServiceAddresses: [serviceAddress], + Authentication: { + Username: bindDn, + Password: bindPassword, + }, + LDAPService: { + SearchSettings: { + BaseDistinguishedNames: [baseDn], + }, + }, + }; + if (groupIdAttribute) + data.LDAPService.SearchSettings.GroupsAttribute = groupIdAttribute; + if (userIdAttribute) + data.LDAPService.SearchSettings.UsernameAttribute = userIdAttribute; + + if (activeDirectoryEnabled) { + return await dispatch('saveActiveDirectorySettings', data); + } else { + return await dispatch('saveLdapSettings', data); + } + }, + async addNewRoleGroup( + { dispatch, getters }, + { groupName, groupPrivilege } + ) { + const data = {}; + const enabledRoleGroups = getters['enabledRoleGroups']; + const isActiveDirectoryEnabled = getters['isActiveDirectoryEnabled']; + const RemoteRoleMapping = [ + ...enabledRoleGroups, + { + LocalRole: groupPrivilege, + RemoteGroup: groupName, + }, + ]; + if (isActiveDirectoryEnabled) { + data.ActiveDirectory = { RemoteRoleMapping }; + } else { + data.LDAP = { RemoteRoleMapping }; + } + return await api + .patch('/redfish/v1/AccountService', data) + .then(() => dispatch('getAccountSettings')) + .then(() => + i18n.t('pageLdap.toast.successAddRoleGroup', { + groupName, + }) + ) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageLdap.toast.errorAddRoleGroup')); + }); + }, + async saveRoleGroup({ dispatch, getters }, { groupName, groupPrivilege }) { + const data = {}; + const enabledRoleGroups = getters['enabledRoleGroups']; + const isActiveDirectoryEnabled = getters['isActiveDirectoryEnabled']; + const RemoteRoleMapping = enabledRoleGroups.map((group) => { + if (group.RemoteGroup === groupName) { + return { + RemoteGroup: groupName, + LocalRole: groupPrivilege, + }; + } else { + return {}; + } + }); + if (isActiveDirectoryEnabled) { + data.ActiveDirectory = { RemoteRoleMapping }; + } else { + data.LDAP = { RemoteRoleMapping }; + } + return await api + .patch('/redfish/v1/AccountService', data) + .then(() => dispatch('getAccountSettings')) + .then(() => + i18n.t('pageLdap.toast.successSaveRoleGroup', { groupName }) + ) + .catch((error) => { + console.log(error); + throw new Error(i18n.t('pageLdap.toast.errorSaveRoleGroup')); + }); + }, + async deleteRoleGroup({ dispatch, getters }, { roleGroups = [] }) { + const data = {}; + const enabledRoleGroups = getters['enabledRoleGroups']; + const isActiveDirectoryEnabled = getters['isActiveDirectoryEnabled']; + const RemoteRoleMapping = enabledRoleGroups.map((group) => { + if (find(roleGroups, { groupName: group.RemoteGroup })) { + return null; + } else { + return {}; + } + }); + if (isActiveDirectoryEnabled) { + data.ActiveDirectory = { RemoteRoleMapping }; + } else { + data.LDAP = { RemoteRoleMapping }; + } + return await api + .patch('/redfish/v1/AccountService', data) + .then(() => dispatch('getAccountSettings')) + .then(() => + i18n.tc('pageLdap.toast.successDeleteRoleGroup', roleGroups.length) + ) + .catch((error) => { + console.log(error); + throw new Error( + i18n.tc('pageLdap.toast.errorDeleteRoleGroup', roleGroups.length) + ); + }); + }, + }, +}; + +export default LdapStore; diff --git a/src/store/modules/SecurityAndAccess/PoliciesStore.js b/src/store/modules/SecurityAndAccess/PoliciesStore.js new file mode 100644 index 00000000..1e195527 --- /dev/null +++ b/src/store/modules/SecurityAndAccess/PoliciesStore.js @@ -0,0 +1,87 @@ +import api from '@/store/api'; +import i18n from '@/i18n'; + +const PoliciesStore = { + namespaced: true, + state: { + sshProtocolEnabled: false, + ipmiProtocolEnabled: false, + }, + getters: { + sshProtocolEnabled: (state) => state.sshProtocolEnabled, + ipmiProtocolEnabled: (state) => state.ipmiProtocolEnabled, + }, + mutations: { + setSshProtocolEnabled: (state, sshProtocolEnabled) => + (state.sshProtocolEnabled = sshProtocolEnabled), + setIpmiProtocolEnabled: (state, ipmiProtocolEnabled) => + (state.ipmiProtocolEnabled = ipmiProtocolEnabled), + }, + actions: { + async getNetworkProtocolStatus({ commit }) { + return await api + .get('/redfish/v1/Managers/bmc/NetworkProtocol') + .then((response) => { + const sshProtocol = response.data.SSH.ProtocolEnabled; + const ipmiProtocol = response.data.IPMI.ProtocolEnabled; + commit('setSshProtocolEnabled', sshProtocol); + commit('setIpmiProtocolEnabled', ipmiProtocol); + }) + .catch((error) => console.log(error)); + }, + async saveIpmiProtocolState({ commit }, protocolEnabled) { + commit('setIpmiProtocolEnabled', protocolEnabled); + const ipmi = { + IPMI: { + ProtocolEnabled: protocolEnabled, + }, + }; + return await api + .patch('/redfish/v1/Managers/bmc/NetworkProtocol', ipmi) + .then(() => { + if (protocolEnabled) { + return i18n.t('pagePolicies.toast.successIpmiEnabled'); + } else { + return i18n.t('pagePolicies.toast.successIpmiDisabled'); + } + }) + .catch((error) => { + console.log(error); + commit('setIpmiProtocolEnabled', !protocolEnabled); + if (protocolEnabled) { + throw new Error(i18n.t('pagePolicies.toast.errorIpmiEnabled')); + } else { + throw new Error(i18n.t('pagePolicies.toast.errorIpmiDisabled')); + } + }); + }, + async saveSshProtocolState({ commit }, protocolEnabled) { + commit('setSshProtocolEnabled', protocolEnabled); + const ssh = { + SSH: { + ProtocolEnabled: protocolEnabled, + }, + }; + return await api + .patch('/redfish/v1/Managers/bmc/NetworkProtocol', ssh) + .then(() => { + if (protocolEnabled) { + return i18n.t('pagePolicies.toast.successSshEnabled'); + } else { + return i18n.t('pagePolicies.toast.successSshDisabled'); + } + }) + .catch((error) => { + console.log(error); + commit('setSshProtocolEnabled', !protocolEnabled); + if (protocolEnabled) { + throw new Error(i18n.t('pagePolicies.toast.errorSshEnabled')); + } else { + throw new Error(i18n.t('pagePolicies.toast.errorSshDisabled')); + } + }); + }, + }, +}; + +export default PoliciesStore; diff --git a/src/store/modules/SecurityAndAccess/SessionsStore.js b/src/store/modules/SecurityAndAccess/SessionsStore.js new file mode 100644 index 00000000..54607ab6 --- /dev/null +++ b/src/store/modules/SecurityAndAccess/SessionsStore.js @@ -0,0 +1,80 @@ +import api, { getResponseCount } from '@/store/api'; +import i18n from '@/i18n'; + +const SessionsStore = { + namespaced: true, + state: { + allConnections: [], + }, + getters: { + allConnections: (state) => state.allConnections, + }, + mutations: { + setAllConnections: (state, allConnections) => + (state.allConnections = allConnections), + }, + actions: { + async getSessionsData({ commit }) { + return await api + .get('/redfish/v1/SessionService/Sessions') + .then((response) => + response.data.Members.map((sessionLogs) => sessionLogs['@odata.id']) + ) + .then((sessionUris) => + api.all(sessionUris.map((sessionUri) => api.get(sessionUri))) + ) + .then((sessionUris) => { + const allConnectionsData = sessionUris.map((sessionUri) => { + return { + clientID: sessionUri.data?.Oem?.OpenBMC.ClientID, + username: sessionUri.data?.UserName, + ipAddress: sessionUri.data?.ClientOriginIPAddress, + uri: sessionUri.data['@odata.id'], + }; + }); + commit('setAllConnections', allConnectionsData); + }) + .catch((error) => { + console.log('Client Session Data:', error); + }); + }, + async disconnectSessions({ dispatch }, uris = []) { + const promises = uris.map((uri) => + api.delete(uri).catch((error) => { + console.log(error); + return error; + }) + ); + return await api + .all(promises) + .then((response) => { + dispatch('getSessionsData'); + return response; + }) + .then( + api.spread((...responses) => { + const { successCount, errorCount } = getResponseCount(responses); + const toastMessages = []; + + if (successCount) { + const message = i18n.tc( + 'pageSessions.toast.successDelete', + successCount + ); + toastMessages.push({ type: 'success', message }); + } + + if (errorCount) { + const message = i18n.tc( + 'pageSessions.toast.errorDelete', + errorCount + ); + toastMessages.push({ type: 'error', message }); + } + return toastMessages; + }) + ); + }, + }, +}; +export default SessionsStore; diff --git a/src/store/modules/SecurityAndAccess/UserManagementStore.js b/src/store/modules/SecurityAndAccess/UserManagementStore.js new file mode 100644 index 00000000..362f3f64 --- /dev/null +++ b/src/store/modules/SecurityAndAccess/UserManagementStore.js @@ -0,0 +1,318 @@ +import api, { getResponseCount } from '@/store/api'; +import i18n from '@/i18n'; + +const UserManagementStore = { + namespaced: true, + state: { + allUsers: [], + accountRoles: [], + accountLockoutDuration: null, + accountLockoutThreshold: null, + accountMinPasswordLength: null, + accountMaxPasswordLength: null, + }, + getters: { + allUsers(state) { + return state.allUsers; + }, + accountRoles(state) { + return state.accountRoles; + }, + accountSettings(state) { + return { + lockoutDuration: state.accountLockoutDuration, + lockoutThreshold: state.accountLockoutThreshold, + }; + }, + accountPasswordRequirements(state) { + return { + minLength: state.accountMinPasswordLength, + maxLength: state.accountMaxPasswordLength, + }; + }, + }, + mutations: { + setUsers(state, allUsers) { + state.allUsers = allUsers; + }, + setAccountRoles(state, accountRoles) { + state.accountRoles = accountRoles; + }, + setLockoutDuration(state, lockoutDuration) { + state.accountLockoutDuration = lockoutDuration; + }, + setLockoutThreshold(state, lockoutThreshold) { + state.accountLockoutThreshold = lockoutThreshold; + }, + setAccountMinPasswordLength(state, minPasswordLength) { + state.accountMinPasswordLength = minPasswordLength; + }, + setAccountMaxPasswordLength(state, maxPasswordLength) { + state.accountMaxPasswordLength = maxPasswordLength; + }, + }, + actions: { + async getUsers({ commit }) { + return await api + .get('/redfish/v1/AccountService/Accounts') + .then((response) => + response.data.Members.map((user) => user['@odata.id']) + ) + .then((userIds) => api.all(userIds.map((user) => api.get(user)))) + .then((users) => { + const userData = users.map((user) => user.data); + commit('setUsers', userData); + }) + .catch((error) => { + console.log(error); + const message = i18n.t('pageUserManagement.toast.errorLoadUsers'); + throw new Error(message); + }); + }, + getAccountSettings({ commit }) { + api + .get('/redfish/v1/AccountService') + .then(({ data }) => { + commit('setLockoutDuration', data.AccountLockoutDuration); + commit('setLockoutThreshold', data.AccountLockoutThreshold); + commit('setAccountMinPasswordLength', data.MinPasswordLength); + commit('setAccountMaxPasswordLength', data.MaxPasswordLength); + }) + .catch((error) => { + console.log(error); + const message = i18n.t( + 'pageUserManagement.toast.errorLoadAccountSettings' + ); + throw new Error(message); + }); + }, + getAccountRoles({ commit }) { + api + .get('/redfish/v1/AccountService/Roles') + .then(({ data: { Members = [] } = {} }) => { + const roles = Members.map((role) => { + return role['@odata.id'].split('/').pop(); + }); + commit('setAccountRoles', roles); + }) + .catch((error) => console.log(error)); + }, + async createUser({ dispatch }, { username, password, privilege, status }) { + const data = { + UserName: username, + Password: password, + RoleId: privilege, + Enabled: status, + }; + return await api + .post('/redfish/v1/AccountService/Accounts', data) + .then(() => dispatch('getUsers')) + .then(() => + i18n.t('pageUserManagement.toast.successCreateUser', { + username, + }) + ) + .catch((error) => { + console.log(error); + const message = i18n.t('pageUserManagement.toast.errorCreateUser', { + username, + }); + throw new Error(message); + }); + }, + async updateUser( + { dispatch }, + { originalUsername, username, password, privilege, status, locked } + ) { + const data = {}; + if (username) data.UserName = username; + if (password) data.Password = password; + if (privilege) data.RoleId = privilege; + if (status !== undefined) data.Enabled = status; + if (locked !== undefined) data.Locked = locked; + return await api + .patch(`/redfish/v1/AccountService/Accounts/${originalUsername}`, data) + .then(() => dispatch('getUsers')) + .then(() => + i18n.t('pageUserManagement.toast.successUpdateUser', { + username: originalUsername, + }) + ) + .catch((error) => { + console.log(error); + const message = i18n.t('pageUserManagement.toast.errorUpdateUser', { + username: originalUsername, + }); + throw new Error(message); + }); + }, + async deleteUser({ dispatch }, username) { + return await api + .delete(`/redfish/v1/AccountService/Accounts/${username}`) + .then(() => dispatch('getUsers')) + .then(() => + i18n.t('pageUserManagement.toast.successDeleteUser', { + username, + }) + ) + .catch((error) => { + console.log(error); + const message = i18n.t('pageUserManagement.toast.errorDeleteUser', { + username, + }); + throw new Error(message); + }); + }, + async deleteUsers({ dispatch }, users) { + const promises = users.map(({ username }) => { + return api + .delete(`/redfish/v1/AccountService/Accounts/${username}`) + .catch((error) => { + console.log(error); + return error; + }); + }); + return await api + .all(promises) + .then((response) => { + dispatch('getUsers'); + return response; + }) + .then( + api.spread((...responses) => { + const { successCount, errorCount } = getResponseCount(responses); + let toastMessages = []; + + if (successCount) { + const message = i18n.tc( + 'pageUserManagement.toast.successBatchDelete', + successCount + ); + toastMessages.push({ type: 'success', message }); + } + + if (errorCount) { + const message = i18n.tc( + 'pageUserManagement.toast.errorBatchDelete', + errorCount + ); + toastMessages.push({ type: 'error', message }); + } + + return toastMessages; + }) + ); + }, + async enableUsers({ dispatch }, users) { + const data = { + Enabled: true, + }; + const promises = users.map(({ username }) => { + return api + .patch(`/redfish/v1/AccountService/Accounts/${username}`, data) + .catch((error) => { + console.log(error); + return error; + }); + }); + return await api + .all(promises) + .then((response) => { + dispatch('getUsers'); + return response; + }) + .then( + api.spread((...responses) => { + const { successCount, errorCount } = getResponseCount(responses); + let toastMessages = []; + + if (successCount) { + const message = i18n.tc( + 'pageUserManagement.toast.successBatchEnable', + successCount + ); + toastMessages.push({ type: 'success', message }); + } + + if (errorCount) { + const message = i18n.tc( + 'pageUserManagement.toast.errorBatchEnable', + errorCount + ); + toastMessages.push({ type: 'error', message }); + } + + return toastMessages; + }) + ); + }, + async disableUsers({ dispatch }, users) { + const data = { + Enabled: false, + }; + const promises = users.map(({ username }) => { + return api + .patch(`/redfish/v1/AccountService/Accounts/${username}`, data) + .catch((error) => { + console.log(error); + return error; + }); + }); + return await api + .all(promises) + .then((response) => { + dispatch('getUsers'); + return response; + }) + .then( + api.spread((...responses) => { + const { successCount, errorCount } = getResponseCount(responses); + let toastMessages = []; + + if (successCount) { + const message = i18n.tc( + 'pageUserManagement.toast.successBatchDisable', + successCount + ); + toastMessages.push({ type: 'success', message }); + } + + if (errorCount) { + const message = i18n.tc( + 'pageUserManagement.toast.errorBatchDisable', + errorCount + ); + toastMessages.push({ type: 'error', message }); + } + + return toastMessages; + }) + ); + }, + async saveAccountSettings( + { dispatch }, + { lockoutThreshold, lockoutDuration } + ) { + const data = {}; + if (lockoutThreshold !== undefined) { + data.AccountLockoutThreshold = lockoutThreshold; + } + if (lockoutDuration !== undefined) { + data.AccountLockoutDuration = lockoutDuration; + } + + return await api + .patch('/redfish/v1/AccountService', data) + //GET new settings to update view + .then(() => dispatch('getAccountSettings')) + .then(() => i18n.t('pageUserManagement.toast.successSaveSettings')) + .catch((error) => { + console.log(error); + const message = i18n.t('pageUserManagement.toast.errorSaveSettings'); + throw new Error(message); + }); + }, + }, +}; + +export default UserManagementStore; diff --git a/src/store/modules/Settings/SecuritySettingsStore.js b/src/store/modules/Settings/SecuritySettingsStore.js deleted file mode 100644 index 5a885425..00000000 --- a/src/store/modules/Settings/SecuritySettingsStore.js +++ /dev/null @@ -1,95 +0,0 @@ -import api from '@/store/api'; -import i18n from '@/i18n'; - -const SecuritySettingsStore = { - namespaced: true, - state: { - sshProtocolEnabled: false, - ipmiProtocolEnabled: false, - }, - getters: { - sshProtocolEnabled: (state) => state.sshProtocolEnabled, - ipmiProtocolEnabled: (state) => state.ipmiProtocolEnabled, - }, - mutations: { - setSshProtocolEnabled: (state, sshProtocolEnabled) => - (state.sshProtocolEnabled = sshProtocolEnabled), - setIpmiProtocolEnabled: (state, ipmiProtocolEnabled) => - (state.ipmiProtocolEnabled = ipmiProtocolEnabled), - }, - actions: { - async getNetworkProtocolStatus({ commit }) { - return await api - .get('/redfish/v1/Managers/bmc/NetworkProtocol') - .then((response) => { - const sshProtocol = response.data.SSH.ProtocolEnabled; - const ipmiProtocol = response.data.IPMI.ProtocolEnabled; - commit('setSshProtocolEnabled', sshProtocol); - commit('setIpmiProtocolEnabled', ipmiProtocol); - }) - .catch((error) => console.log(error)); - }, - async saveIpmiProtocolState({ commit }, protocolEnabled) { - commit('setIpmiProtocolEnabled', protocolEnabled); - const ipmi = { - IPMI: { - ProtocolEnabled: protocolEnabled, - }, - }; - return await api - .patch('/redfish/v1/Managers/bmc/NetworkProtocol', ipmi) - .then(() => { - if (protocolEnabled) { - return i18n.t('pageSecuritySettings.toast.successIpmiEnabled'); - } else { - return i18n.t('pageSecuritySettings.toast.successIpmiDisabled'); - } - }) - .catch((error) => { - console.log(error); - commit('setIpmiProtocolEnabled', !protocolEnabled); - if (protocolEnabled) { - throw new Error( - i18n.t('pageSecuritySettings.toast.errorIpmiEnabled') - ); - } else { - throw new Error( - i18n.t('pageSecuritySettings.toast.errorIpmiDisabled') - ); - } - }); - }, - async saveSshProtocolState({ commit }, protocolEnabled) { - commit('setSshProtocolEnabled', protocolEnabled); - const ssh = { - SSH: { - ProtocolEnabled: protocolEnabled, - }, - }; - return await api - .patch('/redfish/v1/Managers/bmc/NetworkProtocol', ssh) - .then(() => { - if (protocolEnabled) { - return i18n.t('pageSecuritySettings.toast.successSshEnabled'); - } else { - return i18n.t('pageSecuritySettings.toast.successSshDisabled'); - } - }) - .catch((error) => { - console.log(error); - commit('setSshProtocolEnabled', !protocolEnabled); - if (protocolEnabled) { - throw new Error( - i18n.t('pageSecuritySettings.toast.errorSshEnabled') - ); - } else { - throw new Error( - i18n.t('pageSecuritySettings.toast.errorSshDisabled') - ); - } - }); - }, - }, -}; - -export default SecuritySettingsStore; diff --git a/src/views/AccessControl/ClientSessions/ClientSessions.vue b/src/views/AccessControl/ClientSessions/ClientSessions.vue deleted file mode 100644 index b61b2032..00000000 --- a/src/views/AccessControl/ClientSessions/ClientSessions.vue +++ /dev/null @@ -1,296 +0,0 @@ - - - - diff --git a/src/views/AccessControl/ClientSessions/index.js b/src/views/AccessControl/ClientSessions/index.js deleted file mode 100644 index 6000ab75..00000000 --- a/src/views/AccessControl/ClientSessions/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import ClientSessions from './ClientSessions.vue'; -export default ClientSessions; diff --git a/src/views/AccessControl/Ldap/Ldap.vue b/src/views/AccessControl/Ldap/Ldap.vue deleted file mode 100644 index 78bb830b..00000000 --- a/src/views/AccessControl/Ldap/Ldap.vue +++ /dev/null @@ -1,435 +0,0 @@ - - - diff --git a/src/views/AccessControl/Ldap/ModalAddRoleGroup.vue b/src/views/AccessControl/Ldap/ModalAddRoleGroup.vue deleted file mode 100644 index b6b77e9e..00000000 --- a/src/views/AccessControl/Ldap/ModalAddRoleGroup.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - diff --git a/src/views/AccessControl/Ldap/TableRoleGroups.vue b/src/views/AccessControl/Ldap/TableRoleGroups.vue deleted file mode 100644 index 9d05ceaf..00000000 --- a/src/views/AccessControl/Ldap/TableRoleGroups.vue +++ /dev/null @@ -1,265 +0,0 @@ - - - diff --git a/src/views/AccessControl/Ldap/index.js b/src/views/AccessControl/Ldap/index.js deleted file mode 100644 index 6ae3abfc..00000000 --- a/src/views/AccessControl/Ldap/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import Ldap from './Ldap.vue'; -export default Ldap; diff --git a/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue b/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue deleted file mode 100644 index fb5ba16e..00000000 --- a/src/views/AccessControl/LocalUserManagement/LocalUserManagement.vue +++ /dev/null @@ -1,386 +0,0 @@ - - - - - diff --git a/src/views/AccessControl/LocalUserManagement/ModalSettings.vue b/src/views/AccessControl/LocalUserManagement/ModalSettings.vue deleted file mode 100644 index bf274e5a..00000000 --- a/src/views/AccessControl/LocalUserManagement/ModalSettings.vue +++ /dev/null @@ -1,219 +0,0 @@ - - - diff --git a/src/views/AccessControl/LocalUserManagement/ModalUser.vue b/src/views/AccessControl/LocalUserManagement/ModalUser.vue deleted file mode 100644 index 202ae8e6..00000000 --- a/src/views/AccessControl/LocalUserManagement/ModalUser.vue +++ /dev/null @@ -1,395 +0,0 @@ - - - diff --git a/src/views/AccessControl/LocalUserManagement/TableRoles.vue b/src/views/AccessControl/LocalUserManagement/TableRoles.vue deleted file mode 100644 index 3993af02..00000000 --- a/src/views/AccessControl/LocalUserManagement/TableRoles.vue +++ /dev/null @@ -1,92 +0,0 @@ - - - diff --git a/src/views/AccessControl/LocalUserManagement/index.js b/src/views/AccessControl/LocalUserManagement/index.js deleted file mode 100644 index 315748af..00000000 --- a/src/views/AccessControl/LocalUserManagement/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import LocalUserManagement from './LocalUserManagement.vue'; -export default LocalUserManagement; diff --git a/src/views/AccessControl/SslCertificates/CsrCountryCodes.js b/src/views/AccessControl/SslCertificates/CsrCountryCodes.js deleted file mode 100644 index a2d70007..00000000 --- a/src/views/AccessControl/SslCertificates/CsrCountryCodes.js +++ /dev/null @@ -1,345 +0,0 @@ -import i18n from '@/i18n'; - -export const COUNTRY_LIST = [ - { name: 'Afghanistan', code: 'AF', label: i18n.t('countries.AF') }, - { name: 'Albania', code: 'AL', label: i18n.t('countries.AL') }, - { name: 'Algeria', code: 'DZ', label: i18n.t('countries.DZ') }, - { name: 'American Samoa', code: 'AS', label: i18n.t('countries.AS') }, - { name: 'Andorra', code: 'AD', label: i18n.t('countries.AD') }, - { name: 'Angola', code: 'AO', label: i18n.t('countries.AO') }, - { name: 'Anguilla', code: 'AI', label: i18n.t('countries.AI') }, - { name: 'Antarctica', code: 'AQ', label: i18n.t('countries.AQ') }, - { name: 'Antigua and Barbuda', code: 'AG', label: i18n.t('countries.AG') }, - { name: 'Argentina', code: 'AR', label: i18n.t('countries.AR') }, - { name: 'Armenia', code: 'AM', label: i18n.t('countries.AM') }, - { name: 'Aruba', code: 'AW', label: i18n.t('countries.AW') }, - { name: 'Australia', code: 'AU', label: i18n.t('countries.AU') }, - { name: 'Austria', code: 'AT', label: i18n.t('countries.AT') }, - { name: 'Azerbaijan', code: 'AZ', label: i18n.t('countries.AZ') }, - { name: 'Bahamas, The', code: 'BS', label: i18n.t('countries.BS') }, - { name: 'Bahrain', code: 'BH', label: i18n.t('countries.BH') }, - { name: 'Bangladesh', code: 'BD', label: i18n.t('countries.BD') }, - { name: 'Barbados', code: 'BB', label: i18n.t('countries.BB') }, - { name: 'Belarus', code: 'BY', label: i18n.t('countries.BY') }, - { name: 'Belgium', code: 'BE', label: i18n.t('countries.BE') }, - { name: 'Belize', code: 'BZ', label: i18n.t('countries.BZ') }, - { name: 'Benin', code: 'BJ', label: i18n.t('countries.BJ') }, - { name: 'Bermuda', code: 'BM', label: i18n.t('countries.BM') }, - { name: 'Bhutan', code: 'BT', label: i18n.t('countries.BT') }, - { name: 'Bolivia', code: 'BO', label: i18n.t('countries.BO') }, - { - name: 'Bonaire, Sint Eustatius and Saba', - code: 'BQ', - label: i18n.t('countries.BQ'), - }, - { - name: 'Bosnia and Herzegovina ', - code: 'BA', - label: i18n.t('countries.BA'), - }, - { name: 'Bostwana', code: 'BW', label: i18n.t('countries.BW') }, - { name: 'Bouvet Island', code: 'BV', label: i18n.t('countries.BV') }, - { name: 'Brazil', code: 'BR', label: i18n.t('countries.BR') }, - { - name: 'British Indian Ocean Territory', - code: 'IO', - label: i18n.t('countries.IO'), - }, - { name: 'Brunei Darussalam ', code: 'BN', label: i18n.t('countries.BN') }, - { name: 'Bulgaria', code: 'BG', label: i18n.t('countries.BG') }, - { name: 'Burkina Faso', code: 'BF', label: i18n.t('countries.BF') }, - { name: 'Burundi', code: 'BI', label: i18n.t('countries.BI') }, - { name: 'Cabo Verde', code: 'CV', label: i18n.t('countries.CV') }, - { name: 'Cambodia', code: 'KH', label: i18n.t('countries.KH') }, - { name: 'Cameroon', code: 'CM', label: i18n.t('countries.CM') }, - { name: 'Canada', code: 'CA', label: i18n.t('countries.CA') }, - { name: 'Cayman Islands', code: 'KY', label: i18n.t('countries.KY') }, - { - name: 'Central African Republic', - code: 'CF', - label: i18n.t('countries.CF'), - }, - { name: 'Chad', code: 'TD', label: i18n.t('countries.TD') }, - { name: 'Chile', code: 'CL', label: i18n.t('countries.CL') }, - { name: 'China', code: 'CN', label: i18n.t('countries.CN') }, - { name: 'Christmas Island ', code: 'CX', label: i18n.t('countries.CX') }, - { name: 'Cocos(Keeling) Islands', code: 'CC', label: i18n.t('countries.CC') }, - { name: 'Columbia', code: 'CO', label: i18n.t('countries.CO') }, - { name: 'Comoros', code: 'KM', label: i18n.t('countries.KM') }, - { - name: 'Congo, The Democratic Republic of the', - code: 'CD', - label: i18n.t('countries.CD'), - }, - { name: 'Congo', code: 'CG', label: i18n.t('countries.CG') }, - { name: 'Cook Islands', code: 'CK', label: i18n.t('countries.CK') }, - { name: 'Costa Rica', code: 'CR', label: i18n.t('countries.CR') }, - { name: 'Croatia', code: 'HR', label: i18n.t('countries.HR') }, - { name: 'Cuba', code: 'CU', label: i18n.t('countries.CU') }, - { name: 'Curaçao', code: 'CW', label: i18n.t('countries.CW') }, - { name: 'Cyprus', code: 'CY', label: i18n.t('countries.CY') }, - { name: 'Czechia', code: 'CZ', label: i18n.t('countries.CZ') }, - { name: "Côte d'Ivoire", code: 'CI', label: i18n.t('countries.CI') }, - { name: 'Denmark', code: 'DK', label: i18n.t('countries.DK') }, - { name: 'Djibouti', code: 'DJ', label: i18n.t('countries.DJ') }, - { name: 'Dominica', code: 'DM', label: i18n.t('countries.DM') }, - { name: 'Dominican Republic', code: 'DO', label: i18n.t('countries.DO') }, - { name: 'Ecuador', code: 'EC', label: i18n.t('countries.EC') }, - { name: 'Egypt', code: 'EG', label: i18n.t('countries.EG') }, - { name: 'El Salvador', code: 'SV', label: i18n.t('countries.SV') }, - { name: 'Equatorial Guinea ', code: 'GQ', label: i18n.t('countries.GQ') }, - { name: 'Eritrea', code: 'ER', label: i18n.t('countries.ER') }, - { name: 'Estonia', code: 'EE', label: i18n.t('countries.EE') }, - { name: 'Eswatini', code: 'SZ', label: i18n.t('countries.SZ') }, - { name: 'Ethiopia', code: 'ET', label: i18n.t('countries.ET') }, - { - name: 'Falkland Islands (Malvinas)', - code: 'FK', - label: i18n.t('countries.FK'), - }, - { name: 'Faroe Islands', code: 'FO', label: i18n.t('countries.FO') }, - { name: 'Fiji', code: 'FJ', label: i18n.t('countries.FJ') }, - { name: 'Finland', code: 'FI', label: i18n.t('countries.FI') }, - { name: 'France', code: 'FR', label: i18n.t('countries.FR') }, - { name: 'French Guiana', code: 'GF', label: i18n.t('countries.GF') }, - { name: 'French Polynesia', code: 'PF', label: i18n.t('countries.PF') }, - { - name: 'French Southern Territories', - code: 'TF', - label: i18n.t('countries.TF'), - }, - { name: 'Gabon', code: 'GA', label: i18n.t('countries.GA') }, - { name: 'Gambia, The', code: 'GM', label: i18n.t('countries.GM') }, - { name: 'Georgia', code: 'GE', label: i18n.t('countries.GE') }, - { name: 'Germany', code: 'DE', label: i18n.t('countries.DE') }, - { name: 'Ghana', code: 'GH', label: i18n.t('countries.GH') }, - { name: 'Gibraltar', code: 'GI', label: i18n.t('countries.GI') }, - { name: 'Greece', code: 'GR', label: i18n.t('countries.GR') }, - { name: 'Greenland', code: 'GL', label: i18n.t('countries.GL') }, - { name: 'Grenada', code: 'GD', label: i18n.t('countries.GD') }, - { name: 'Guadeloupe', code: 'GP', label: i18n.t('countries.GP') }, - { name: 'Guam', code: 'GU', label: i18n.t('countries.GU') }, - { name: 'Guatemala', code: 'GT', label: i18n.t('countries.GT') }, - { name: 'Guernsey', code: 'GG', label: i18n.t('countries.GG') }, - { name: 'Guinea', code: 'GN', label: i18n.t('countries.GN') }, - { name: 'Guinea-Bissau', code: 'GW', label: i18n.t('countries.GW') }, - { name: 'Guyana', code: 'GY', label: i18n.t('countries.GY') }, - { name: 'Haiti', code: 'HT', label: i18n.t('countries.HT') }, - { - name: 'Heard Island and McDonald Islands', - code: 'HM', - label: i18n.t('countries.HM'), - }, - { name: 'Holy See', code: 'VA', label: i18n.t('countries.VA') }, - { name: 'Honduras', code: 'HN', label: i18n.t('countries.HN') }, - { name: 'Hong Kong', code: 'HK', label: i18n.t('countries.HK') }, - { name: 'Hungary', code: 'HU', label: i18n.t('countries.HU') }, - { name: 'Iceland', code: 'IS', label: i18n.t('countries.IS') }, - { name: 'India', code: 'IN', label: i18n.t('countries.IN') }, - { name: 'Indonesia', code: 'ID', label: i18n.t('countries.ID') }, - { - name: 'Iran, Islamic Republic of', - code: 'IR', - label: i18n.t('countries.IR'), - }, - { name: 'Iraq', code: 'IQ', label: i18n.t('countries.IQ') }, - { name: 'Ireland', code: 'IE', label: i18n.t('countries.IE') }, - { name: 'Isle of Man', code: 'IM', label: i18n.t('countries.IM') }, - { name: 'Israel', code: 'IL', label: i18n.t('countries.IL') }, - { name: 'Italy', code: 'IT', label: i18n.t('countries.IT') }, - { name: 'Jamaica', code: 'JM', label: i18n.t('countries.JM') }, - { name: 'Japan', code: 'JP', label: i18n.t('countries.JP') }, - { name: 'Jersey', code: 'JE', label: i18n.t('countries.JE') }, - { name: 'Jordan', code: 'JO', label: i18n.t('countries.JO') }, - { name: 'Kazakhstan', code: 'KZ', label: i18n.t('countries.KZ') }, - { name: 'Kenya', code: 'KE', label: i18n.t('countries.KE') }, - { name: 'Kiribati', code: 'KI', label: i18n.t('countries.KI') }, - { name: 'Korea, Republic of', code: 'KR', label: i18n.t('countries.KR') }, - { - name: "Korea, Democratic People's Republic of", - code: 'KP', - label: i18n.t('countries.KP'), - }, - { name: 'Kuwait', code: 'KW', label: i18n.t('countries.KW') }, - { name: 'Kyrgyzstan', code: 'KG', label: i18n.t('countries.KG') }, - { - name: "Lao People's Democratic Republic", - code: 'LA', - label: i18n.t('countries.LA'), - }, - { name: 'Latvia', code: 'LV', label: i18n.t('countries.LV') }, - { name: 'Lebanon', code: 'LB', label: i18n.t('countries.LB') }, - { name: 'Lesotho', code: 'LS', label: i18n.t('countries.LS') }, - { name: 'Liberia', code: 'LR', label: i18n.t('countries.LR') }, - { name: 'Libya', code: 'LY', label: i18n.t('countries.LY') }, - { name: 'Liechtenstein', code: 'LI', label: i18n.t('countries.LI') }, - { name: 'Lithuania', code: 'LT', label: i18n.t('countries.LT') }, - { name: 'Luxembourg', code: 'LU', label: i18n.t('countries.LU') }, - { name: 'Macao', code: 'MO', label: i18n.t('countries.MO') }, - { - name: 'Macedonia, The Former Yugoslav Republic of', - code: 'MK', - label: i18n.t('countries.MK'), - }, - { name: 'Madagascar', code: 'MG', label: i18n.t('countries.MG') }, - { name: 'Malawi', code: 'MW', label: i18n.t('countries.MW') }, - { name: 'Malaysia', code: 'MY', label: i18n.t('countries.MY') }, - { name: 'Maldives', code: 'MV', label: i18n.t('countries.MV') }, - { name: 'Mali', code: 'ML', label: i18n.t('countries.ML') }, - { name: 'Malta', code: 'MT', label: i18n.t('countries.MT') }, - { name: 'Marshall Islands', code: 'MH', label: i18n.t('countries.MH') }, - { name: 'Martinique', code: 'MQ', label: i18n.t('countries.MQ') }, - { name: 'Mauritania', code: 'MR', label: i18n.t('countries.MR') }, - { name: 'Mauritius', code: 'MU', label: i18n.t('countries.MU') }, - { name: 'Mayotte', code: 'YT', label: i18n.t('countries.YT') }, - { name: 'Mexico', code: 'MX', label: i18n.t('countries.MX') }, - { - name: 'Micronesia, Federated States of', - code: 'FM', - label: i18n.t('countries.FM'), - }, - { name: 'Moldova, Republic of', code: 'MD', label: i18n.t('countries.MD') }, - { name: 'Monaco', code: 'MC', label: i18n.t('countries.MC') }, - { name: 'Mongolia', code: 'MN', label: i18n.t('countries.MN') }, - { name: 'Montenegro', code: 'ME', label: i18n.t('countries.ME') }, - { name: 'Montserrat', code: 'MS', label: i18n.t('countries.MS') }, - { name: 'Morocco', code: 'MA', label: i18n.t('countries.MA') }, - { name: 'Mozambique', code: 'MZ', label: i18n.t('countries.MZ') }, - { name: 'Myanmar', code: 'MM', label: i18n.t('countries.MM') }, - { name: 'Namibia', code: 'NA', label: i18n.t('countries.NA') }, - { name: 'Nauru', code: 'NR', label: i18n.t('countries.NR') }, - { name: 'Nepal', code: 'NP', label: i18n.t('countries.NP') }, - { name: 'Netherlands', code: 'NL', label: i18n.t('countries.NL') }, - { name: 'New Caledonia', code: 'NC', label: i18n.t('countries.NC') }, - { name: 'New Zealand', code: 'NZ', label: i18n.t('countries.NZ') }, - { name: 'Nicaragua', code: 'NI', label: i18n.t('countries.NI') }, - { name: 'Niger', code: 'NE', label: i18n.t('countries.NE') }, - { name: 'Nigeria', code: 'NG', label: i18n.t('countries.NG') }, - { name: 'Niue', code: 'NU', label: i18n.t('countries.NU') }, - { name: 'Norfolk Island', code: 'NF', label: i18n.t('countries.NF') }, - { - name: 'Northern Mariana Islands', - code: 'MP', - label: i18n.t('countries.MP'), - }, - { name: 'Norway', code: 'NO', label: i18n.t('countries.NO') }, - { name: 'Oman', code: 'OM', label: i18n.t('countries.OM') }, - { name: 'Pakistan', code: 'PK', label: i18n.t('countries.PK') }, - { name: 'Palau', code: 'PW', label: i18n.t('countries.PW') }, - { name: 'Palestine', code: 'PS', label: i18n.t('countries.PS') }, - { name: 'Panama', code: 'PA', label: i18n.t('countries.PA') }, - { name: 'Papua New Guinea', code: 'PG', label: i18n.t('countries.PG') }, - { name: 'Paraguay', code: 'PY', label: i18n.t('countries.PY') }, - { name: 'Peru', code: 'PE', label: i18n.t('countries.PE') }, - { name: 'Philippines', code: 'PH', label: i18n.t('countries.PH') }, - { name: 'Pitcairn', code: 'PN', label: i18n.t('countries.PN') }, - { name: 'Poland', code: 'PL', label: i18n.t('countries.PL') }, - { name: 'Portugal', code: 'PT', label: i18n.t('countries.PT') }, - { name: 'Puerto Rico', code: 'PR', label: i18n.t('countries.PR') }, - { name: 'Qatar', code: 'QA', label: i18n.t('countries.QA') }, - { name: 'Romania', code: 'RO', label: i18n.t('countries.RO') }, - { name: 'Russian Federation', code: 'RU', label: i18n.t('countries.RU') }, - { name: 'Rwanda', code: 'RW', label: i18n.t('countries.RW') }, - { name: 'Réunion', code: 'RE', label: i18n.t('countries.RE') }, - { name: 'Saint Barthélemy', code: 'BL', label: i18n.t('countries.BL') }, - { - name: 'Saint Helena, Ascension and Tristan da Cunha', - code: 'SH', - label: i18n.t('countries.SH'), - }, - { name: 'Saint Kitts and Nevis ', code: 'KN', label: i18n.t('countries.KN') }, - { name: 'Saint Lucia', code: 'LC', label: i18n.t('countries.LC') }, - { name: 'Saint Martin', code: 'MF', label: i18n.t('countries.MF') }, - { - name: 'Saint Pierre and Miquelon', - code: 'PM', - label: i18n.t('countries.PM'), - }, - { - name: 'Saint Vincent and the Grenadines', - code: 'VC', - label: i18n.t('countries.VC'), - }, - { name: 'Samoa', code: 'WS', label: i18n.t('countries.WS') }, - { name: 'San Marino ', code: 'SM', label: i18n.t('countries.SM') }, - { name: 'Sao Tome and Principe', code: 'ST', label: i18n.t('countries.ST') }, - { name: 'Saudi Arabia', code: 'SA', label: i18n.t('countries.SA') }, - { name: 'Senegal', code: 'SN', label: i18n.t('countries.SN') }, - { name: 'Serbia', code: 'RS', label: i18n.t('countries.RS') }, - { name: 'Seychelles', code: 'SC', label: i18n.t('countries.SC') }, - { name: 'Sierra Leone', code: 'SL', label: i18n.t('countries.SL') }, - { name: 'Singapore', code: 'SG', label: i18n.t('countries.SG') }, - { name: 'Sint Maarten', code: 'SX', label: i18n.t('countries.SX') }, - { name: 'Slovakia', code: 'SK', label: i18n.t('countries.SK') }, - { name: 'Slovenia', code: 'SI', label: i18n.t('countries.SI') }, - { name: 'Solomon Islands', code: 'SB', label: i18n.t('countries.SB') }, - { name: 'Somalia', code: 'SO', label: i18n.t('countries.SO') }, - { name: 'South Africa ', code: 'ZA', label: i18n.t('countries.ZA') }, - { - name: 'South Georgia and the South Sandwich Islands', - code: 'GS', - label: i18n.t('countries.GS'), - }, - { name: 'South Sudan', code: 'SS', label: i18n.t('countries.SS') }, - { name: 'Spain', code: 'ES', label: i18n.t('countries.ES') }, - { name: 'Sri Lanka', code: 'LK', label: i18n.t('countries.LK') }, - { name: 'Sudan', code: 'SD', label: i18n.t('countries.SD') }, - { name: 'Suriname', code: 'SR', label: i18n.t('countries.SR') }, - { name: 'Svalbard and Jan Mayen', code: 'SJ', label: i18n.t('countries.SJ') }, - { name: 'Sweden', code: 'SE', label: i18n.t('countries.SE') }, - { name: 'Switzerland', code: 'CH', label: i18n.t('countries.CH') }, - { name: 'Syrian Arab Republic', code: 'SY', label: i18n.t('countries.SY') }, - { name: 'Taiwan', code: 'TW', label: i18n.t('countries.TW') }, - { name: 'Tajikistan', code: 'TJ', label: i18n.t('countries.TJ') }, - { - name: 'Tanzania, United Republic of', - code: 'TZ', - label: i18n.t('countries.TZ'), - }, - { name: 'Thailand', code: 'TH', label: i18n.t('countries.TH') }, - { name: 'Timor-Leste', code: 'TL', label: i18n.t('countries.TL') }, - { name: 'Togo', code: 'TG', label: i18n.t('countries.TG') }, - { name: 'Tokelau', code: 'TK', label: i18n.t('countries.TK') }, - { name: 'Tonga', code: 'TO', label: i18n.t('countries.TO') }, - { name: 'Trinidad and Tobago', code: 'TT', label: i18n.t('countries.TT') }, - { name: 'Tunisia', code: 'TN', label: i18n.t('countries.TN') }, - { name: 'Turkey', code: 'TR', label: i18n.t('countries.TR') }, - { name: 'Turkmenistan', code: 'TM', label: i18n.t('countries.TM') }, - { - name: 'Turks and Caicos Islands', - code: 'TC', - label: i18n.t('countries.TC'), - }, - { name: 'Tuvalu', code: 'TV', label: i18n.t('countries.TV') }, - { name: 'Uganda', code: 'UG', label: i18n.t('countries.UG') }, - { name: 'Ukraine', code: 'UA', label: i18n.t('countries.UA') }, - { name: 'United Arab Emirates', code: 'AE', label: i18n.t('countries.AE') }, - { name: 'United Kingdom', code: 'GB', label: i18n.t('countries.GB') }, - { - name: 'United States Minor Outlying Islands', - code: 'UM', - label: i18n.t('countries.UM'), - }, - { - name: 'United States of America', - code: 'US', - label: i18n.t('countries.US'), - }, - { name: 'Uruguay', code: 'UY', label: i18n.t('countries.UY') }, - { name: 'Uzbekistan', code: 'UZ', label: i18n.t('countries.UZ') }, - { name: 'Vanuatu', code: 'VU', label: i18n.t('countries.VU') }, - { name: 'Venezuela', code: 'VE', label: i18n.t('countries.VE') }, - { name: 'Viet Nam', code: 'VN', label: i18n.t('countries.VN') }, - { - name: 'Virgin Islands, British', - code: 'VG', - label: i18n.t('countries.VG'), - }, - { name: 'Virgin Islands, U.S', code: 'VI', label: i18n.t('countries.VI') }, - { name: 'Wallis and Futuna', code: 'WF', label: i18n.t('countries.WF') }, - { name: 'Western Sahara', code: 'EH', label: i18n.t('countries.EH') }, - { name: 'Yemen', code: 'YE', label: i18n.t('countries.YE') }, - { name: 'Zambia', code: 'ZM', label: i18n.t('countries.ZM') }, - { name: 'Zimbabwe', code: 'ZW', label: i18n.t('countries.ZW') }, - { name: 'Åland Islands', code: 'AX', label: i18n.t('countries.AX') }, -]; diff --git a/src/views/AccessControl/SslCertificates/ModalGenerateCsr.vue b/src/views/AccessControl/SslCertificates/ModalGenerateCsr.vue deleted file mode 100644 index 6544c2c4..00000000 --- a/src/views/AccessControl/SslCertificates/ModalGenerateCsr.vue +++ /dev/null @@ -1,500 +0,0 @@ - - - diff --git a/src/views/AccessControl/SslCertificates/ModalUploadCertificate.vue b/src/views/AccessControl/SslCertificates/ModalUploadCertificate.vue deleted file mode 100644 index cafbd935..00000000 --- a/src/views/AccessControl/SslCertificates/ModalUploadCertificate.vue +++ /dev/null @@ -1,168 +0,0 @@ - - - diff --git a/src/views/AccessControl/SslCertificates/SslCertificates.vue b/src/views/AccessControl/SslCertificates/SslCertificates.vue deleted file mode 100644 index 4ce9a707..00000000 --- a/src/views/AccessControl/SslCertificates/SslCertificates.vue +++ /dev/null @@ -1,319 +0,0 @@ - - - diff --git a/src/views/AccessControl/SslCertificates/index.js b/src/views/AccessControl/SslCertificates/index.js deleted file mode 100644 index 03daa565..00000000 --- a/src/views/AccessControl/SslCertificates/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import SslCertificates from './SslCertificates.vue'; -export default SslCertificates; diff --git a/src/views/ChangePassword/ChangePassword.vue b/src/views/ChangePassword/ChangePassword.vue index 039dd0b6..e4319303 100644 --- a/src/views/ChangePassword/ChangePassword.vue +++ b/src/views/ChangePassword/ChangePassword.vue @@ -115,7 +115,7 @@ export default { }; this.$store - .dispatch('localUsers/updateUser', data) + .dispatch('userManagement/updateUser', data) .then(() => this.$router.push('/')) .catch(() => (this.changePasswordError = true)); }, diff --git a/src/views/ProfileSettings/ProfileSettings.vue b/src/views/ProfileSettings/ProfileSettings.vue index 820d386c..35fc800d 100644 --- a/src/views/ProfileSettings/ProfileSettings.vue +++ b/src/views/ProfileSettings/ProfileSettings.vue @@ -30,7 +30,7 @@ > {{ - $t('pageLocalUserManagement.modal.passwordMustBeBetween', { + $t('pageUserManagement.modal.passwordMustBeBetween', { min: passwordRequirements.minLength, max: passwordRequirements.maxLength, }) @@ -160,7 +160,7 @@ export default { return this.$store.getters['global/username']; }, passwordRequirements() { - return this.$store.getters['localUsers/accountPasswordRequirements']; + return this.$store.getters['userManagement/accountPasswordRequirements']; }, timezone() { return this.localOffset(); @@ -169,7 +169,7 @@ export default { created() { this.startLoader(); this.$store - .dispatch('localUsers/getAccountSettings') + .dispatch('userManagement/getAccountSettings') .finally(() => this.endLoader()); }, validations() { @@ -196,7 +196,7 @@ export default { }; this.$store - .dispatch('localUsers/updateUser', userData) + .dispatch('userManagement/updateUser', userData) .then((message) => { (this.form.newPassword = ''), (this.form.confirmPassword = ''); this.$v.$reset(); diff --git a/src/views/SecurityAndAccess/Certificates/Certificates.vue b/src/views/SecurityAndAccess/Certificates/Certificates.vue new file mode 100644 index 00000000..9d208897 --- /dev/null +++ b/src/views/SecurityAndAccess/Certificates/Certificates.vue @@ -0,0 +1,319 @@ + + + diff --git a/src/views/SecurityAndAccess/Certificates/CsrCountryCodes.js b/src/views/SecurityAndAccess/Certificates/CsrCountryCodes.js new file mode 100644 index 00000000..a2d70007 --- /dev/null +++ b/src/views/SecurityAndAccess/Certificates/CsrCountryCodes.js @@ -0,0 +1,345 @@ +import i18n from '@/i18n'; + +export const COUNTRY_LIST = [ + { name: 'Afghanistan', code: 'AF', label: i18n.t('countries.AF') }, + { name: 'Albania', code: 'AL', label: i18n.t('countries.AL') }, + { name: 'Algeria', code: 'DZ', label: i18n.t('countries.DZ') }, + { name: 'American Samoa', code: 'AS', label: i18n.t('countries.AS') }, + { name: 'Andorra', code: 'AD', label: i18n.t('countries.AD') }, + { name: 'Angola', code: 'AO', label: i18n.t('countries.AO') }, + { name: 'Anguilla', code: 'AI', label: i18n.t('countries.AI') }, + { name: 'Antarctica', code: 'AQ', label: i18n.t('countries.AQ') }, + { name: 'Antigua and Barbuda', code: 'AG', label: i18n.t('countries.AG') }, + { name: 'Argentina', code: 'AR', label: i18n.t('countries.AR') }, + { name: 'Armenia', code: 'AM', label: i18n.t('countries.AM') }, + { name: 'Aruba', code: 'AW', label: i18n.t('countries.AW') }, + { name: 'Australia', code: 'AU', label: i18n.t('countries.AU') }, + { name: 'Austria', code: 'AT', label: i18n.t('countries.AT') }, + { name: 'Azerbaijan', code: 'AZ', label: i18n.t('countries.AZ') }, + { name: 'Bahamas, The', code: 'BS', label: i18n.t('countries.BS') }, + { name: 'Bahrain', code: 'BH', label: i18n.t('countries.BH') }, + { name: 'Bangladesh', code: 'BD', label: i18n.t('countries.BD') }, + { name: 'Barbados', code: 'BB', label: i18n.t('countries.BB') }, + { name: 'Belarus', code: 'BY', label: i18n.t('countries.BY') }, + { name: 'Belgium', code: 'BE', label: i18n.t('countries.BE') }, + { name: 'Belize', code: 'BZ', label: i18n.t('countries.BZ') }, + { name: 'Benin', code: 'BJ', label: i18n.t('countries.BJ') }, + { name: 'Bermuda', code: 'BM', label: i18n.t('countries.BM') }, + { name: 'Bhutan', code: 'BT', label: i18n.t('countries.BT') }, + { name: 'Bolivia', code: 'BO', label: i18n.t('countries.BO') }, + { + name: 'Bonaire, Sint Eustatius and Saba', + code: 'BQ', + label: i18n.t('countries.BQ'), + }, + { + name: 'Bosnia and Herzegovina ', + code: 'BA', + label: i18n.t('countries.BA'), + }, + { name: 'Bostwana', code: 'BW', label: i18n.t('countries.BW') }, + { name: 'Bouvet Island', code: 'BV', label: i18n.t('countries.BV') }, + { name: 'Brazil', code: 'BR', label: i18n.t('countries.BR') }, + { + name: 'British Indian Ocean Territory', + code: 'IO', + label: i18n.t('countries.IO'), + }, + { name: 'Brunei Darussalam ', code: 'BN', label: i18n.t('countries.BN') }, + { name: 'Bulgaria', code: 'BG', label: i18n.t('countries.BG') }, + { name: 'Burkina Faso', code: 'BF', label: i18n.t('countries.BF') }, + { name: 'Burundi', code: 'BI', label: i18n.t('countries.BI') }, + { name: 'Cabo Verde', code: 'CV', label: i18n.t('countries.CV') }, + { name: 'Cambodia', code: 'KH', label: i18n.t('countries.KH') }, + { name: 'Cameroon', code: 'CM', label: i18n.t('countries.CM') }, + { name: 'Canada', code: 'CA', label: i18n.t('countries.CA') }, + { name: 'Cayman Islands', code: 'KY', label: i18n.t('countries.KY') }, + { + name: 'Central African Republic', + code: 'CF', + label: i18n.t('countries.CF'), + }, + { name: 'Chad', code: 'TD', label: i18n.t('countries.TD') }, + { name: 'Chile', code: 'CL', label: i18n.t('countries.CL') }, + { name: 'China', code: 'CN', label: i18n.t('countries.CN') }, + { name: 'Christmas Island ', code: 'CX', label: i18n.t('countries.CX') }, + { name: 'Cocos(Keeling) Islands', code: 'CC', label: i18n.t('countries.CC') }, + { name: 'Columbia', code: 'CO', label: i18n.t('countries.CO') }, + { name: 'Comoros', code: 'KM', label: i18n.t('countries.KM') }, + { + name: 'Congo, The Democratic Republic of the', + code: 'CD', + label: i18n.t('countries.CD'), + }, + { name: 'Congo', code: 'CG', label: i18n.t('countries.CG') }, + { name: 'Cook Islands', code: 'CK', label: i18n.t('countries.CK') }, + { name: 'Costa Rica', code: 'CR', label: i18n.t('countries.CR') }, + { name: 'Croatia', code: 'HR', label: i18n.t('countries.HR') }, + { name: 'Cuba', code: 'CU', label: i18n.t('countries.CU') }, + { name: 'Curaçao', code: 'CW', label: i18n.t('countries.CW') }, + { name: 'Cyprus', code: 'CY', label: i18n.t('countries.CY') }, + { name: 'Czechia', code: 'CZ', label: i18n.t('countries.CZ') }, + { name: "Côte d'Ivoire", code: 'CI', label: i18n.t('countries.CI') }, + { name: 'Denmark', code: 'DK', label: i18n.t('countries.DK') }, + { name: 'Djibouti', code: 'DJ', label: i18n.t('countries.DJ') }, + { name: 'Dominica', code: 'DM', label: i18n.t('countries.DM') }, + { name: 'Dominican Republic', code: 'DO', label: i18n.t('countries.DO') }, + { name: 'Ecuador', code: 'EC', label: i18n.t('countries.EC') }, + { name: 'Egypt', code: 'EG', label: i18n.t('countries.EG') }, + { name: 'El Salvador', code: 'SV', label: i18n.t('countries.SV') }, + { name: 'Equatorial Guinea ', code: 'GQ', label: i18n.t('countries.GQ') }, + { name: 'Eritrea', code: 'ER', label: i18n.t('countries.ER') }, + { name: 'Estonia', code: 'EE', label: i18n.t('countries.EE') }, + { name: 'Eswatini', code: 'SZ', label: i18n.t('countries.SZ') }, + { name: 'Ethiopia', code: 'ET', label: i18n.t('countries.ET') }, + { + name: 'Falkland Islands (Malvinas)', + code: 'FK', + label: i18n.t('countries.FK'), + }, + { name: 'Faroe Islands', code: 'FO', label: i18n.t('countries.FO') }, + { name: 'Fiji', code: 'FJ', label: i18n.t('countries.FJ') }, + { name: 'Finland', code: 'FI', label: i18n.t('countries.FI') }, + { name: 'France', code: 'FR', label: i18n.t('countries.FR') }, + { name: 'French Guiana', code: 'GF', label: i18n.t('countries.GF') }, + { name: 'French Polynesia', code: 'PF', label: i18n.t('countries.PF') }, + { + name: 'French Southern Territories', + code: 'TF', + label: i18n.t('countries.TF'), + }, + { name: 'Gabon', code: 'GA', label: i18n.t('countries.GA') }, + { name: 'Gambia, The', code: 'GM', label: i18n.t('countries.GM') }, + { name: 'Georgia', code: 'GE', label: i18n.t('countries.GE') }, + { name: 'Germany', code: 'DE', label: i18n.t('countries.DE') }, + { name: 'Ghana', code: 'GH', label: i18n.t('countries.GH') }, + { name: 'Gibraltar', code: 'GI', label: i18n.t('countries.GI') }, + { name: 'Greece', code: 'GR', label: i18n.t('countries.GR') }, + { name: 'Greenland', code: 'GL', label: i18n.t('countries.GL') }, + { name: 'Grenada', code: 'GD', label: i18n.t('countries.GD') }, + { name: 'Guadeloupe', code: 'GP', label: i18n.t('countries.GP') }, + { name: 'Guam', code: 'GU', label: i18n.t('countries.GU') }, + { name: 'Guatemala', code: 'GT', label: i18n.t('countries.GT') }, + { name: 'Guernsey', code: 'GG', label: i18n.t('countries.GG') }, + { name: 'Guinea', code: 'GN', label: i18n.t('countries.GN') }, + { name: 'Guinea-Bissau', code: 'GW', label: i18n.t('countries.GW') }, + { name: 'Guyana', code: 'GY', label: i18n.t('countries.GY') }, + { name: 'Haiti', code: 'HT', label: i18n.t('countries.HT') }, + { + name: 'Heard Island and McDonald Islands', + code: 'HM', + label: i18n.t('countries.HM'), + }, + { name: 'Holy See', code: 'VA', label: i18n.t('countries.VA') }, + { name: 'Honduras', code: 'HN', label: i18n.t('countries.HN') }, + { name: 'Hong Kong', code: 'HK', label: i18n.t('countries.HK') }, + { name: 'Hungary', code: 'HU', label: i18n.t('countries.HU') }, + { name: 'Iceland', code: 'IS', label: i18n.t('countries.IS') }, + { name: 'India', code: 'IN', label: i18n.t('countries.IN') }, + { name: 'Indonesia', code: 'ID', label: i18n.t('countries.ID') }, + { + name: 'Iran, Islamic Republic of', + code: 'IR', + label: i18n.t('countries.IR'), + }, + { name: 'Iraq', code: 'IQ', label: i18n.t('countries.IQ') }, + { name: 'Ireland', code: 'IE', label: i18n.t('countries.IE') }, + { name: 'Isle of Man', code: 'IM', label: i18n.t('countries.IM') }, + { name: 'Israel', code: 'IL', label: i18n.t('countries.IL') }, + { name: 'Italy', code: 'IT', label: i18n.t('countries.IT') }, + { name: 'Jamaica', code: 'JM', label: i18n.t('countries.JM') }, + { name: 'Japan', code: 'JP', label: i18n.t('countries.JP') }, + { name: 'Jersey', code: 'JE', label: i18n.t('countries.JE') }, + { name: 'Jordan', code: 'JO', label: i18n.t('countries.JO') }, + { name: 'Kazakhstan', code: 'KZ', label: i18n.t('countries.KZ') }, + { name: 'Kenya', code: 'KE', label: i18n.t('countries.KE') }, + { name: 'Kiribati', code: 'KI', label: i18n.t('countries.KI') }, + { name: 'Korea, Republic of', code: 'KR', label: i18n.t('countries.KR') }, + { + name: "Korea, Democratic People's Republic of", + code: 'KP', + label: i18n.t('countries.KP'), + }, + { name: 'Kuwait', code: 'KW', label: i18n.t('countries.KW') }, + { name: 'Kyrgyzstan', code: 'KG', label: i18n.t('countries.KG') }, + { + name: "Lao People's Democratic Republic", + code: 'LA', + label: i18n.t('countries.LA'), + }, + { name: 'Latvia', code: 'LV', label: i18n.t('countries.LV') }, + { name: 'Lebanon', code: 'LB', label: i18n.t('countries.LB') }, + { name: 'Lesotho', code: 'LS', label: i18n.t('countries.LS') }, + { name: 'Liberia', code: 'LR', label: i18n.t('countries.LR') }, + { name: 'Libya', code: 'LY', label: i18n.t('countries.LY') }, + { name: 'Liechtenstein', code: 'LI', label: i18n.t('countries.LI') }, + { name: 'Lithuania', code: 'LT', label: i18n.t('countries.LT') }, + { name: 'Luxembourg', code: 'LU', label: i18n.t('countries.LU') }, + { name: 'Macao', code: 'MO', label: i18n.t('countries.MO') }, + { + name: 'Macedonia, The Former Yugoslav Republic of', + code: 'MK', + label: i18n.t('countries.MK'), + }, + { name: 'Madagascar', code: 'MG', label: i18n.t('countries.MG') }, + { name: 'Malawi', code: 'MW', label: i18n.t('countries.MW') }, + { name: 'Malaysia', code: 'MY', label: i18n.t('countries.MY') }, + { name: 'Maldives', code: 'MV', label: i18n.t('countries.MV') }, + { name: 'Mali', code: 'ML', label: i18n.t('countries.ML') }, + { name: 'Malta', code: 'MT', label: i18n.t('countries.MT') }, + { name: 'Marshall Islands', code: 'MH', label: i18n.t('countries.MH') }, + { name: 'Martinique', code: 'MQ', label: i18n.t('countries.MQ') }, + { name: 'Mauritania', code: 'MR', label: i18n.t('countries.MR') }, + { name: 'Mauritius', code: 'MU', label: i18n.t('countries.MU') }, + { name: 'Mayotte', code: 'YT', label: i18n.t('countries.YT') }, + { name: 'Mexico', code: 'MX', label: i18n.t('countries.MX') }, + { + name: 'Micronesia, Federated States of', + code: 'FM', + label: i18n.t('countries.FM'), + }, + { name: 'Moldova, Republic of', code: 'MD', label: i18n.t('countries.MD') }, + { name: 'Monaco', code: 'MC', label: i18n.t('countries.MC') }, + { name: 'Mongolia', code: 'MN', label: i18n.t('countries.MN') }, + { name: 'Montenegro', code: 'ME', label: i18n.t('countries.ME') }, + { name: 'Montserrat', code: 'MS', label: i18n.t('countries.MS') }, + { name: 'Morocco', code: 'MA', label: i18n.t('countries.MA') }, + { name: 'Mozambique', code: 'MZ', label: i18n.t('countries.MZ') }, + { name: 'Myanmar', code: 'MM', label: i18n.t('countries.MM') }, + { name: 'Namibia', code: 'NA', label: i18n.t('countries.NA') }, + { name: 'Nauru', code: 'NR', label: i18n.t('countries.NR') }, + { name: 'Nepal', code: 'NP', label: i18n.t('countries.NP') }, + { name: 'Netherlands', code: 'NL', label: i18n.t('countries.NL') }, + { name: 'New Caledonia', code: 'NC', label: i18n.t('countries.NC') }, + { name: 'New Zealand', code: 'NZ', label: i18n.t('countries.NZ') }, + { name: 'Nicaragua', code: 'NI', label: i18n.t('countries.NI') }, + { name: 'Niger', code: 'NE', label: i18n.t('countries.NE') }, + { name: 'Nigeria', code: 'NG', label: i18n.t('countries.NG') }, + { name: 'Niue', code: 'NU', label: i18n.t('countries.NU') }, + { name: 'Norfolk Island', code: 'NF', label: i18n.t('countries.NF') }, + { + name: 'Northern Mariana Islands', + code: 'MP', + label: i18n.t('countries.MP'), + }, + { name: 'Norway', code: 'NO', label: i18n.t('countries.NO') }, + { name: 'Oman', code: 'OM', label: i18n.t('countries.OM') }, + { name: 'Pakistan', code: 'PK', label: i18n.t('countries.PK') }, + { name: 'Palau', code: 'PW', label: i18n.t('countries.PW') }, + { name: 'Palestine', code: 'PS', label: i18n.t('countries.PS') }, + { name: 'Panama', code: 'PA', label: i18n.t('countries.PA') }, + { name: 'Papua New Guinea', code: 'PG', label: i18n.t('countries.PG') }, + { name: 'Paraguay', code: 'PY', label: i18n.t('countries.PY') }, + { name: 'Peru', code: 'PE', label: i18n.t('countries.PE') }, + { name: 'Philippines', code: 'PH', label: i18n.t('countries.PH') }, + { name: 'Pitcairn', code: 'PN', label: i18n.t('countries.PN') }, + { name: 'Poland', code: 'PL', label: i18n.t('countries.PL') }, + { name: 'Portugal', code: 'PT', label: i18n.t('countries.PT') }, + { name: 'Puerto Rico', code: 'PR', label: i18n.t('countries.PR') }, + { name: 'Qatar', code: 'QA', label: i18n.t('countries.QA') }, + { name: 'Romania', code: 'RO', label: i18n.t('countries.RO') }, + { name: 'Russian Federation', code: 'RU', label: i18n.t('countries.RU') }, + { name: 'Rwanda', code: 'RW', label: i18n.t('countries.RW') }, + { name: 'Réunion', code: 'RE', label: i18n.t('countries.RE') }, + { name: 'Saint Barthélemy', code: 'BL', label: i18n.t('countries.BL') }, + { + name: 'Saint Helena, Ascension and Tristan da Cunha', + code: 'SH', + label: i18n.t('countries.SH'), + }, + { name: 'Saint Kitts and Nevis ', code: 'KN', label: i18n.t('countries.KN') }, + { name: 'Saint Lucia', code: 'LC', label: i18n.t('countries.LC') }, + { name: 'Saint Martin', code: 'MF', label: i18n.t('countries.MF') }, + { + name: 'Saint Pierre and Miquelon', + code: 'PM', + label: i18n.t('countries.PM'), + }, + { + name: 'Saint Vincent and the Grenadines', + code: 'VC', + label: i18n.t('countries.VC'), + }, + { name: 'Samoa', code: 'WS', label: i18n.t('countries.WS') }, + { name: 'San Marino ', code: 'SM', label: i18n.t('countries.SM') }, + { name: 'Sao Tome and Principe', code: 'ST', label: i18n.t('countries.ST') }, + { name: 'Saudi Arabia', code: 'SA', label: i18n.t('countries.SA') }, + { name: 'Senegal', code: 'SN', label: i18n.t('countries.SN') }, + { name: 'Serbia', code: 'RS', label: i18n.t('countries.RS') }, + { name: 'Seychelles', code: 'SC', label: i18n.t('countries.SC') }, + { name: 'Sierra Leone', code: 'SL', label: i18n.t('countries.SL') }, + { name: 'Singapore', code: 'SG', label: i18n.t('countries.SG') }, + { name: 'Sint Maarten', code: 'SX', label: i18n.t('countries.SX') }, + { name: 'Slovakia', code: 'SK', label: i18n.t('countries.SK') }, + { name: 'Slovenia', code: 'SI', label: i18n.t('countries.SI') }, + { name: 'Solomon Islands', code: 'SB', label: i18n.t('countries.SB') }, + { name: 'Somalia', code: 'SO', label: i18n.t('countries.SO') }, + { name: 'South Africa ', code: 'ZA', label: i18n.t('countries.ZA') }, + { + name: 'South Georgia and the South Sandwich Islands', + code: 'GS', + label: i18n.t('countries.GS'), + }, + { name: 'South Sudan', code: 'SS', label: i18n.t('countries.SS') }, + { name: 'Spain', code: 'ES', label: i18n.t('countries.ES') }, + { name: 'Sri Lanka', code: 'LK', label: i18n.t('countries.LK') }, + { name: 'Sudan', code: 'SD', label: i18n.t('countries.SD') }, + { name: 'Suriname', code: 'SR', label: i18n.t('countries.SR') }, + { name: 'Svalbard and Jan Mayen', code: 'SJ', label: i18n.t('countries.SJ') }, + { name: 'Sweden', code: 'SE', label: i18n.t('countries.SE') }, + { name: 'Switzerland', code: 'CH', label: i18n.t('countries.CH') }, + { name: 'Syrian Arab Republic', code: 'SY', label: i18n.t('countries.SY') }, + { name: 'Taiwan', code: 'TW', label: i18n.t('countries.TW') }, + { name: 'Tajikistan', code: 'TJ', label: i18n.t('countries.TJ') }, + { + name: 'Tanzania, United Republic of', + code: 'TZ', + label: i18n.t('countries.TZ'), + }, + { name: 'Thailand', code: 'TH', label: i18n.t('countries.TH') }, + { name: 'Timor-Leste', code: 'TL', label: i18n.t('countries.TL') }, + { name: 'Togo', code: 'TG', label: i18n.t('countries.TG') }, + { name: 'Tokelau', code: 'TK', label: i18n.t('countries.TK') }, + { name: 'Tonga', code: 'TO', label: i18n.t('countries.TO') }, + { name: 'Trinidad and Tobago', code: 'TT', label: i18n.t('countries.TT') }, + { name: 'Tunisia', code: 'TN', label: i18n.t('countries.TN') }, + { name: 'Turkey', code: 'TR', label: i18n.t('countries.TR') }, + { name: 'Turkmenistan', code: 'TM', label: i18n.t('countries.TM') }, + { + name: 'Turks and Caicos Islands', + code: 'TC', + label: i18n.t('countries.TC'), + }, + { name: 'Tuvalu', code: 'TV', label: i18n.t('countries.TV') }, + { name: 'Uganda', code: 'UG', label: i18n.t('countries.UG') }, + { name: 'Ukraine', code: 'UA', label: i18n.t('countries.UA') }, + { name: 'United Arab Emirates', code: 'AE', label: i18n.t('countries.AE') }, + { name: 'United Kingdom', code: 'GB', label: i18n.t('countries.GB') }, + { + name: 'United States Minor Outlying Islands', + code: 'UM', + label: i18n.t('countries.UM'), + }, + { + name: 'United States of America', + code: 'US', + label: i18n.t('countries.US'), + }, + { name: 'Uruguay', code: 'UY', label: i18n.t('countries.UY') }, + { name: 'Uzbekistan', code: 'UZ', label: i18n.t('countries.UZ') }, + { name: 'Vanuatu', code: 'VU', label: i18n.t('countries.VU') }, + { name: 'Venezuela', code: 'VE', label: i18n.t('countries.VE') }, + { name: 'Viet Nam', code: 'VN', label: i18n.t('countries.VN') }, + { + name: 'Virgin Islands, British', + code: 'VG', + label: i18n.t('countries.VG'), + }, + { name: 'Virgin Islands, U.S', code: 'VI', label: i18n.t('countries.VI') }, + { name: 'Wallis and Futuna', code: 'WF', label: i18n.t('countries.WF') }, + { name: 'Western Sahara', code: 'EH', label: i18n.t('countries.EH') }, + { name: 'Yemen', code: 'YE', label: i18n.t('countries.YE') }, + { name: 'Zambia', code: 'ZM', label: i18n.t('countries.ZM') }, + { name: 'Zimbabwe', code: 'ZW', label: i18n.t('countries.ZW') }, + { name: 'Åland Islands', code: 'AX', label: i18n.t('countries.AX') }, +]; diff --git a/src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue b/src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue new file mode 100644 index 00000000..d76f9fe1 --- /dev/null +++ b/src/views/SecurityAndAccess/Certificates/ModalGenerateCsr.vue @@ -0,0 +1,496 @@ + + + diff --git a/src/views/SecurityAndAccess/Certificates/ModalUploadCertificate.vue b/src/views/SecurityAndAccess/Certificates/ModalUploadCertificate.vue new file mode 100644 index 00000000..f4db7a26 --- /dev/null +++ b/src/views/SecurityAndAccess/Certificates/ModalUploadCertificate.vue @@ -0,0 +1,168 @@ + + + diff --git a/src/views/SecurityAndAccess/Certificates/index.js b/src/views/SecurityAndAccess/Certificates/index.js new file mode 100644 index 00000000..aff57b59 --- /dev/null +++ b/src/views/SecurityAndAccess/Certificates/index.js @@ -0,0 +1,2 @@ +import Certificates from './Certificates.vue'; +export default Certificates; diff --git a/src/views/SecurityAndAccess/Ldap/Ldap.vue b/src/views/SecurityAndAccess/Ldap/Ldap.vue new file mode 100644 index 00000000..1f2108de --- /dev/null +++ b/src/views/SecurityAndAccess/Ldap/Ldap.vue @@ -0,0 +1,435 @@ + + + diff --git a/src/views/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue b/src/views/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue new file mode 100644 index 00000000..6ea2561a --- /dev/null +++ b/src/views/SecurityAndAccess/Ldap/ModalAddRoleGroup.vue @@ -0,0 +1,164 @@ + + + diff --git a/src/views/SecurityAndAccess/Ldap/TableRoleGroups.vue b/src/views/SecurityAndAccess/Ldap/TableRoleGroups.vue new file mode 100644 index 00000000..6e231110 --- /dev/null +++ b/src/views/SecurityAndAccess/Ldap/TableRoleGroups.vue @@ -0,0 +1,265 @@ + + + diff --git a/src/views/SecurityAndAccess/Ldap/index.js b/src/views/SecurityAndAccess/Ldap/index.js new file mode 100644 index 00000000..6ae3abfc --- /dev/null +++ b/src/views/SecurityAndAccess/Ldap/index.js @@ -0,0 +1,2 @@ +import Ldap from './Ldap.vue'; +export default Ldap; diff --git a/src/views/SecurityAndAccess/Policies/Policies.vue b/src/views/SecurityAndAccess/Policies/Policies.vue new file mode 100644 index 00000000..41b95366 --- /dev/null +++ b/src/views/SecurityAndAccess/Policies/Policies.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/src/views/SecurityAndAccess/Policies/index.js b/src/views/SecurityAndAccess/Policies/index.js new file mode 100644 index 00000000..77023908 --- /dev/null +++ b/src/views/SecurityAndAccess/Policies/index.js @@ -0,0 +1,2 @@ +import Policies from './Policies.vue'; +export default Policies; diff --git a/src/views/SecurityAndAccess/Sessions/Sessions.vue b/src/views/SecurityAndAccess/Sessions/Sessions.vue new file mode 100644 index 00000000..bd4c06a9 --- /dev/null +++ b/src/views/SecurityAndAccess/Sessions/Sessions.vue @@ -0,0 +1,291 @@ + + + + diff --git a/src/views/SecurityAndAccess/Sessions/index.js b/src/views/SecurityAndAccess/Sessions/index.js new file mode 100644 index 00000000..aa113aff --- /dev/null +++ b/src/views/SecurityAndAccess/Sessions/index.js @@ -0,0 +1,2 @@ +import Sessions from './Sessions.vue'; +export default Sessions; diff --git a/src/views/SecurityAndAccess/UserManagement/ModalSettings.vue b/src/views/SecurityAndAccess/UserManagement/ModalSettings.vue new file mode 100644 index 00000000..0f05123c --- /dev/null +++ b/src/views/SecurityAndAccess/UserManagement/ModalSettings.vue @@ -0,0 +1,215 @@ + + + diff --git a/src/views/SecurityAndAccess/UserManagement/ModalUser.vue b/src/views/SecurityAndAccess/UserManagement/ModalUser.vue new file mode 100644 index 00000000..0f8757ce --- /dev/null +++ b/src/views/SecurityAndAccess/UserManagement/ModalUser.vue @@ -0,0 +1,386 @@ + + + diff --git a/src/views/SecurityAndAccess/UserManagement/TableRoles.vue b/src/views/SecurityAndAccess/UserManagement/TableRoles.vue new file mode 100644 index 00000000..61ef1ee8 --- /dev/null +++ b/src/views/SecurityAndAccess/UserManagement/TableRoles.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/views/SecurityAndAccess/UserManagement/UserManagement.vue b/src/views/SecurityAndAccess/UserManagement/UserManagement.vue new file mode 100644 index 00000000..015fee91 --- /dev/null +++ b/src/views/SecurityAndAccess/UserManagement/UserManagement.vue @@ -0,0 +1,388 @@ + + + + + diff --git a/src/views/SecurityAndAccess/UserManagement/index.js b/src/views/SecurityAndAccess/UserManagement/index.js new file mode 100644 index 00000000..c3aebec3 --- /dev/null +++ b/src/views/SecurityAndAccess/UserManagement/index.js @@ -0,0 +1,2 @@ +import UserManagement from './UserManagement.vue'; +export default UserManagement; diff --git a/src/views/Settings/SecuritySettings/SecuritySettings.vue b/src/views/Settings/SecuritySettings/SecuritySettings.vue deleted file mode 100644 index ec8d2589..00000000 --- a/src/views/Settings/SecuritySettings/SecuritySettings.vue +++ /dev/null @@ -1,125 +0,0 @@ - - - - - diff --git a/src/views/Settings/SecuritySettings/index.js b/src/views/Settings/SecuritySettings/index.js deleted file mode 100644 index 5ec2b615..00000000 --- a/src/views/Settings/SecuritySettings/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import SecuritySettings from './SecuritySettings.vue'; -export default SecuritySettings; diff --git a/tests/unit/__snapshots__/AppNavigation.spec.js.snap b/tests/unit/__snapshots__/AppNavigation.spec.js.snap index d8cf57fc..d87d44ed 100644 --- a/tests/unit/__snapshots__/AppNavigation.spec.js.snap +++ b/tests/unit/__snapshots__/AppNavigation.spec.js.snap @@ -462,15 +462,6 @@ exports[`AppNavigation.vue should render correctly 1`] = ` appNavigation.powerRestorePolicy - - - appNavigation.securitySettings - - @@ -479,10 +470,10 @@ exports[`AppNavigation.vue should render correctly 1`] = ` class="nav-item" >