summaryrefslogtreecommitdiff
path: root/src/store
diff options
context:
space:
mode:
Diffstat (limited to 'src/store')
-rw-r--r--src/store/index.js2
-rw-r--r--src/store/modules/AccessControl/ClientSessionsStore.js80
2 files changed, 82 insertions, 0 deletions
diff --git a/src/store/index.js b/src/store/index.js
index b4a77d82..151eb68c 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -3,6 +3,7 @@ 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';
@@ -36,6 +37,7 @@ export default new Vuex.Store({
modules: {
global: GlobalStore,
authentication: AuthenticationStore,
+ clientSessions: ClientSessions,
dateTime: DateTimeStore,
ldap: LdapStore,
localUsers: LocalUserManagementStore,
diff --git a/src/store/modules/AccessControl/ClientSessionsStore.js b/src/store/modules/AccessControl/ClientSessionsStore.js
new file mode 100644
index 00000000..a09f766e
--- /dev/null
+++ b/src/store/modules/AccessControl/ClientSessionsStore.js
@@ -0,0 +1,80 @@
+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?.Id,
+ username: sessionUri.data?.UserName,
+ ipAddress: sessionUri.data?.Oem?.OpenBMC.ClientID.slice(2),
+ 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;