From b1f559f03e3f464c1b8b19a9327158be0ecafe62 Mon Sep 17 00:00:00 2001 From: Sukanya Pandey Date: Tue, 28 Apr 2020 20:18:28 +0530 Subject: Profile settings page -To set the profile by setting password. -This commit adds a profile page which allows the user to change their password. In the future, the profile page will also contain user settings like language and timezone. The API called to change the user's password is '/redfish/v1/AccountService/Accounts/' Signed-off-by: Sukanya Pandey Change-Id: Ie54a54beff8c85bc9ac5af21c35edc481b34cf44 --- .../vendor-overrides/bootstrap/_dropdown.scss | 9 +- src/components/AppHeader/AppHeader.vue | 116 ++++++++------- src/locales/en-US.json | 11 ++ src/router/index.js | 8 + .../modules/Authentication/AuthenticanStore.js | 1 + src/store/modules/GlobalStore.js | 9 +- src/views/Login/Login.vue | 2 + src/views/ProfileSettings/ProfileSettings.vue | 162 +++++++++++++++++++++ src/views/ProfileSettings/index.js | 2 + 9 files changed, 264 insertions(+), 56 deletions(-) create mode 100644 src/views/ProfileSettings/ProfileSettings.vue create mode 100644 src/views/ProfileSettings/index.js diff --git a/src/assets/styles/vendor-overrides/bootstrap/_dropdown.scss b/src/assets/styles/vendor-overrides/bootstrap/_dropdown.scss index 0eb310f6..c7d39548 100644 --- a/src/assets/styles/vendor-overrides/bootstrap/_dropdown.scss +++ b/src/assets/styles/vendor-overrides/bootstrap/_dropdown.scss @@ -9,11 +9,12 @@ } } +// Adding component style to global stylesheet because +// single-file component scoped styles aren't +// being applied to dynamically appended elements +// The overflow menu should be above the table + .table-filter { - // Adding component style to global stylesheet because - // single-file component scoped styles aren't - // being applied to dynamically appended elements - // The overflow menu should be above the table .dropdown-menu { z-index: $zindex-dropdown + 1; padding: 0; diff --git a/src/components/AppHeader/AppHeader.vue b/src/components/AppHeader/AppHeader.vue index a755a628..39d52b83 100644 --- a/src/components/AppHeader/AppHeader.vue +++ b/src/components/AppHeader/AppHeader.vue @@ -43,11 +43,19 @@ -
  • - - {{ $t('appHeader.logOut') }} - - +
  • @@ -110,6 +118,9 @@ export default { default: return 'secondary'; } + }, + username() { + return this.$store.getters['global/username']; } }, created() { @@ -142,64 +153,71 @@ export default { }; - diff --git a/src/locales/en-US.json b/src/locales/en-US.json index 1ccc330e..84a2a604 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -64,6 +64,7 @@ "health": "Health", "logOut": "Log out", "power": "Power", + "profileSettings": "@:appPageTitle.profileSettings", "refresh": "Refresh", "skipToContent": "Skip to content" }, @@ -98,6 +99,7 @@ "managePowerUsage": "Manage power usage", "networkSettings": "Network settings", "overview": "Overview", + "profileSettings":"Profile settings", "rebootBmc": "Reboot BMC", "sensors": "Sensors", "serverLed": "Server LED", @@ -299,6 +301,15 @@ "solConsole": "Serial over LAN console" } }, + "profileSettings": { + "changePassword": "Change password", + "confirmPassword": "Confirm new password", + "newPassword": "New password", + "newPassLabelTextInfo": "Password must be between %{min} - %{max} characters", + "passwordsDoNotMatch": "Passwords do not match", + "profileInfoTitle": "Profile information", + "username": "Username" + }, "pageManagePowerUsage": { "description": "Set a power cap to keep power consumption at or below the specified value in watts", "powerCapLabel": "Power cap value (in watts)", diff --git a/src/router/index.js b/src/router/index.js index f67d5ee4..22662d71 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -23,6 +23,14 @@ const routes = [ title: 'appPageTitle.overview' } }, + { + path: '/profile-settings', + name: 'profile-settings', + component: () => import('@/views/ProfileSettings'), + meta: { + title: 'appPageTitle.profileSettings' + } + }, { path: '/health/event-logs', name: 'event-logs', diff --git a/src/store/modules/Authentication/AuthenticanStore.js b/src/store/modules/Authentication/AuthenticanStore.js index 7a0c5ba3..407c2b57 100644 --- a/src/store/modules/Authentication/AuthenticanStore.js +++ b/src/store/modules/Authentication/AuthenticanStore.js @@ -23,6 +23,7 @@ const AuthenticationStore = { }, logout() { Cookies.remove('XSRF-TOKEN'); + localStorage.removeItem('storedUsername'); } }, actions: { diff --git a/src/store/modules/GlobalStore.js b/src/store/modules/GlobalStore.js index 42e9e2bf..55b07965 100644 --- a/src/store/modules/GlobalStore.js +++ b/src/store/modules/GlobalStore.js @@ -31,19 +31,22 @@ const GlobalStore = { state: { bmcTime: null, hostStatus: 'unreachable', - languagePreference: localStorage.getItem('storedLanguage') || 'en-US' + languagePreference: localStorage.getItem('storedLanguage') || 'en-US', + username: localStorage.getItem('storedUsername') }, getters: { hostStatus: state => state.hostStatus, bmcTime: state => state.bmcTime, - languagePreference: state => state.languagePreference + languagePreference: state => state.languagePreference, + username: state => state.username }, mutations: { setBmcTime: (state, bmcTime) => (state.bmcTime = bmcTime), setHostStatus: (state, hostState) => (state.hostStatus = hostStateMapper(hostState)), setLanguagePreference: (state, language) => - (state.languagePreference = language) + (state.languagePreference = language), + setUsername: (state, username) => (state.username = username) }, actions: { async getBmcTime({ commit }) { diff --git a/src/views/Login/Login.vue b/src/views/Login/Login.vue index 4d8f2484..3993800c 100644 --- a/src/views/Login/Login.vue +++ b/src/views/Login/Login.vue @@ -138,6 +138,8 @@ export default { .then(() => this.$router.push('/')) .then(() => { localStorage.setItem('storedLanguage', i18n.locale); + localStorage.setItem('storedUsername', username); + this.$store.commit('global/setUsername', username); this.$store.commit('global/setLanguagePreference', i18n.locale); }) .catch(error => console.log(error)) diff --git a/src/views/ProfileSettings/ProfileSettings.vue b/src/views/ProfileSettings/ProfileSettings.vue new file mode 100644 index 00000000..df74b4b7 --- /dev/null +++ b/src/views/ProfileSettings/ProfileSettings.vue @@ -0,0 +1,162 @@ + + + diff --git a/src/views/ProfileSettings/index.js b/src/views/ProfileSettings/index.js new file mode 100644 index 00000000..d6589c72 --- /dev/null +++ b/src/views/ProfileSettings/index.js @@ -0,0 +1,2 @@ +import ProfileSettings from './ProfileSettings.vue'; +export default ProfileSettings; -- cgit v1.2.3