summaryrefslogtreecommitdiff
path: root/src/views/ProfileSettings
AgeCommit message (Collapse)AuthorFilesLines
2026-05-14ProfileSettings: show current session privilegeAravinth S1-5/+16
Show the current session privilege on the Profile Settings page. The displayed privilege is derived from the active Redfish session, not from the user account definition, so label it as Session privilege and present it with semantic description list markup. Also add a unit test covering the profile info list structure and session privilege display. Change-Id: I6cf539c29366dc0a9752f9994ebcf4a3c45cf6b8 Signed-off-by: Aravinth Sri Krishna Raja Raghavan <aravinths@ami.com>
2026-01-14Fix Unit tests and useI18n() misusejason westover1-2/+0
Vue 3's vue-i18n requires useI18n() to be called within setup() or reactive contexts. Calling it in Options API data() creates disconnected i18n instances that cannot resolve linked messages. Component fixes: - Enable globalInjection in i18n.js for automatic $t injection - Remove explicit useI18n() imports from 84 components that incorrectly called useI18n().t in their data() functions Unit test fixes: - Mock @/i18n module in jest.setup.js because Webpack's require.context() does not work in Jest, leaving the real module with no locale messages loaded - Re-export real createI18nInstance so i18n unit tests work - Update snapshots to reflect real translated text instead of raw translation keys - Fix b-form-radio/checkbox stubs to wrap content in div for proper data-test-id attribute inheritance - Remove duplicate i18n plugin installations from individual test files that caused 'already registered' warnings - Suppress expected missing-key warning in vendor overlay test Tested: - Sanity testing on webui, ensured translations work. - All Unit tests pass (19/19) with no Errors or Warnings. Change-Id: I9789acd823261eccc7affde0957dd22e8fec06b1 Signed-off-by: Jason Westover <jwestover@nvidia.com>
2025-11-22Migrate to Bootstrap 5 and remove Vue compat pluginjason westover1-0/+13
Complete migration from Bootstrap 4 (bootstrap-vue) to Bootstrap 5 (bootstrap-vue-next) and remove the @vue/compat plugin to finalize the Vue 3 migration. Bundle size impact: - Before (Bootstrap 4 + bootstrap-vue): 535 KiB gzipped - After (Bootstrap 5 + bootstrap-vue-next): 511 KiB gzipped - Reduction: 24 KiB (4.5% smaller) Package updates: - Update bootstrap 4.6.2 -> 5.3.8 - Update bootstrap-vue 2.23.1 -> bootstrap-vue-next 0.40.8 - Remove @vue/compat plugin - Update vue 3.4.29 -> 3.5.24 and related packages - Add mitt 3.0.1 for global event bus - Add vue-demi 0.14.10 for library compatibility Bootstrap 5 CSS updates: - Replace directional classes: ml/mr/pl/pr -> ms/me/ps/pe - Replace text-left/right -> text-start/end - Replace sr-only -> visually-hidden / visually-hidden-focusable - Update media breakpoint xs -> sm (Bootstrap 5 removed xs) - Update color functions: gray("700") -> $gray-700 - Add form-switch border-radius for curved toggles - Update alert, table, toast, form, and button styles Bootstrap-Vue-Next API changes: - Use createBootstrap() for plugin registration - Update modal footer slots: #modal-footer -> #footer - Fix form select events: @change -> @update:model-value - Add v-model bindings to modals instead of manual show()/hide() - Update toast system with custom plugin wrapping useToast() - Register components and directives explicitly Vue 3 specific updates: - Replace $root.$emit with mitt event bus (eventBus.js) - Update render function from h(App) to createApp(App) - Add emits option to components - Use h() instead of $createElement in mixins - Add Vue 3 compile-time feature flags with documentation - Update event listeners: $on/$off to eventBus methods - Add beforeUnmount cleanup for event listeners New components and significant additions: - src/plugins/toast.js - Custom toast plugin wrapping useToast() for Options API compatibility - src/components/Global/ConfirmModal.vue - Global confirmation dialog shim to replace Bootstrap 4's removed bvModal.msgBoxConfirm - src/eventBus.js - mitt-based event bus with Vue 2-compatible API - Navigation state preservation on page refresh implemented Critical fixes: - Add global API interceptor to strip Vue reactivity from payloads - Preserve binary data (File, Blob, FormData) in API requests - Fix Generate CSR modal v-model binding for proper open/close - Remove debug logging and fix jest configuration - Fix responsive text visibility in AppHeader - Update BVTableSelectableMixin for proper row selection - Fix BVToastMixin VNode rendering for Vue 3 Vue 3 modal fixes (lazy-loaded components): - Add v-model support to network modals (ModalIpv4, ModalIpv6, ModalDns, ModalHostname, ModalMacAddress, ModalDefaultGateway) by adding modelValue prop, watcher on modelValue that triggers show(), and update:modelValue emit in resetForm - Remove lazy loading from TableIpv4, TableIpv6, TableDns to ensure modal component refs are available when v-model triggers - Fix modal title accessibility by adding title prop to modals (ModalAddDestination, ModalUser, ModalAddRoleGroup, etc.) i18n fixes (computed properties): - Fix computed properties using i18n translations in ModalAddRoleGroup, ModalUser, and ModalUploadCertificate - Move useI18n() call from data() to setup() and return i18n object - Use i18n.t() instead of $t in computed properties and templates - Prevents "this.$t is not a function" and "_ctx.$t is not a function" errors in Vue 3 Toast notification fixes: - Fix toast progress bar visibility by setting progressProps to undefined (documented way to opt-out) instead of false - Change modelValue prop to interval for auto-dismiss timing - Remove temporary CSS display:none hack from _toasts.scss Network settings fixes: - Fix checkbox @change event sending Vue reactive proxy object instead of boolean by casting with !! operator in changeDomainNameState and related methods in NetworkGlobalSettings.vue - Ensures API receives plain boolean values in PATCH requests Navigation fixes: - Fix nav-link styling for navigation items without children by replacing b-nav-item with router-link in AppNavigation.vue - Prevents blue font color from .nav-link CSS class Configuration updates: - Remove vue-compat webpack configuration - Add Vue 3 feature flags (__VUE_OPTIONS_API__, etc.) - Add .cursor to .gitignore Accessibility improvements: - Add autocomplete attributes to password and credential inputs - Add modal title props for screen reader support Build completes successfully and UI behavior matches pre-migration. Extracted features (to be submitted in follow-up PRs): The following features were removed from this migration PR to keep it focused on the Bootstrap 5 upgrade. They will be submitted separately: 1. UnresponsiveModal - Server connectivity watchdog with auto-retry 2. Auth token persistence - sessionStorage support for X-Auth-Token 3. Hardware store error handling - try/catch, dynamic discovery 4. Login page connecting indicator - Backend polling with spinner 5. Test updates - Jest setup and snapshot updates for Bootstrap-Vue-Next 6. Documentation updates - Vue 3 and Vue I18n v9+ API documentation 7. Enhanced ConfirmModal - Feature-rich confirmation dialog with custom actions Change-Id: Ib76a58f324b3c926cf536e6e4626e4271639de38 Signed-off-by: Jason Westover <jwestover@nvidia.com>
2025-06-02Fix password confirmation validationVladimir Novikov1-1/+1
@vuelidate/validators ^2.0.0 does not support literal strings as references for sameAs. They instead treated as literal strings and it means that the password confirmation must exactly match the passed string which is obviously incorrect. This essentially is just a correction of some artifacts caused by the upgrade to Vue 3. Change-Id: I41f6a1764c2dd3fcfbfd96d2da9b48e6e409fef0 Signed-off-by: Vladimir Novikov <MeVladimirNovikov@gmail.com>
2024-10-03Invalid feedback if condition changeSurya Venkatesan1-3/+5
For required, invalid format, minlength, maxlength, date, pattern validation if condition change in the few components Change-Id: Id8eebc140301e48dde833a604ca92426ebf77c9c Signed-off-by: Surya Venkatesan <suryav@ami.com>
2024-10-03Vuelidate, I18n, and filter are upgraded to vue3Surya V1-16/+19
While navigating to the pages i18n, vuelidate, and filters errors occurred. i18n, and vuelidate code changes in each page adapted to vue3. Filter global function for date and time format implemented in the main.js file and those files which as called the filter functions. Change-Id: If1a2ee22d47750faef1c35ef2c263299067d9a20 Signed-off-by: Surya Venkatesan <suryav@ami.com>
2024-10-03Upgrade vue3 and all dependenciesEd Tanous1-1/+7
Start the process of porting everything to Vue 3. I have most things working. npm run-scripts build works, npm install works. prettier passes. Styles load, login works, webui loads. This was primarily done using the linked documents below. It makes the following design decisions: 1. Vue is put in compat 2 mode, which allows most of the components to work as-is. 2. Bootstrap v4 is used along with bootstrap-vue to keep our components working. 3. Minor changes are made to load the latest versions of vue-router, vuex, and vue-i18n. I suspect this patchset is good enough to start with, and we can clean up the broken things one patchset at a time. The things that need to happen are: 1. Get remaining features working again. This primiarily is vue-i18n for mixins, and non vue components. This likely needs to be done by not pulling in i18n into the non vue components, then using the .Vue files to do the internationalization in the component context, NOT in the mixin context. Alternatively, we could drop MixIns alltogether. 2. Get custom styles working again. Previously, we used some path hackery in vue.config.js to optionally pre-load styles. This stops working now that we're required to @import our modules. Likely we need some rearangement of the paths such that custom styles are a complete replacement (possibly importing the original) rather than additive with overrides. That's a guess, but I don't really see anyone else doing customization the way we've defined it here. 3. Bootstrap 5 no longer requires ANY custom vue modules, as it has dropped the jquery dependency. We won't be able to pull in bootstrap 5 all at once, so pull in bootstrap 5 under an alias, like "bootstrap5" that we can optionally import 5 or 4. 4. One at a time, start porting components over to Vue3 syntax and bootstrap 5. This will be the bulk of the manual work and review. The only thing I think left is getting unit tests passing, which I commented out the pre-commit hook to make this PR. Tested: Code builds. Needs better testing. [1] https://router.vuejs.org/guide/migration/ [2] https://vue-i18n.intlify.dev/guide/migration/vue3 [3] https://vuelidate-next.netlify.app/migration_guide.html#package-name-and-imports Change-Id: I5bb3187b9efbf2e4ff63e57994bc528756e2a981 Signed-off-by: Ed Tanous <ed@tanous.net>
2024-03-05Reformat files with new linterEd Tanous1-2/+2
All changes should be whitespace, and were done using npm run-script lint. Change-Id: I943c6b435c5c872841af5affc1e89910468b5ca6 Signed-off-by: Ed Tanous <ed@tanous.net>
2023-03-30Old password input in change password screenDamian Celico1-4/+50
When the user changed their password in profile settings, to prevent XSS attacks, I added the current password input field to authenticate the user. Once the authentication had success with the current password, then allowing the update was possible. After the password is changed successfully, all the sessions of the user who changed the password will be disconnected, including the current session. and the current session will navigate to the login page. Signed-off-by: Kirankumar Ballapalli <kirankumarb@ami.com> Change-Id: Idb8bc9d6ada420329c38407da76a08dc83fddd61
2022-01-07Fix invalid password validationSandeepa Singh1-1/+1
Bug: Success toast message appeared on invalid value of new password on profile settings page. Solution: Fixed the toast message for password change and timezone change respectively. Signed-off-by: Sandeepa Singh <sandeepa.singh@ibm.com> Change-Id: I71b53dd02e4fdda040248c3ed9408be8d220454d
2021-08-10IA update: Update access and control sectionSandeepa Singh1-4/+4
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 <sandeepa.singh@ibm.com> Change-Id: Ie93cee9002742ecf7d33615636f4f159f4395fc4
2021-02-11Remove i18n module import from Profile settingsYoshie Muranaka1-2/+1
Update translation to use the global $t component method provided by the i18n plugin. Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com> Change-Id: I0f1de15b19820e3235187fb4c4c51befa67005e4
2021-01-07Fix issue related to profile settings pageSukanya Pandey1-12/+2
- On change of state of the timezone display preferences. - Toast notification will be displayed to the user. Signed-off-by: Sukanya Pandey <sukapan1@in.ibm.com> Change-Id: Ie846638077f75cb21123ec347d3e9f38724a51e8
2020-11-03Update linting packages to use latestDerick Montague1-17/+17
- 99% of changes were small syntax changes that were changed by the lint command. There were a couple of small manual changes to meet the property order patterns established as part of the vue:recommended guidelines. There are rules that were set from errors to warnings and new stories are being opened to address those issues. Testing: - Successfully ran npm run serve - Successfully ran npm run lint - Verified functionality works as expected, e.g. success and failure use cases - Resolved any JavaScript errors thrown to the console Signed-off-by: Derick Montague <derick.montague@ibm.com> Change-Id: Ie082f31c73ccbe8a60afa8f88a9ef6dbf33d9fd2
2020-08-18Add form input field validation iconsDixsie Wolmers1-0/+2
Updates form validation to match updated style guide: - Datepicker and password toggle form field padding adjusted to accomodate validation icons - Valid form validation icon is hidden - Adds carbon icons and enables validation icons in IBM environment Signed-off-by: Dixsie Wolmers <dixsie@ibm.com> Change-Id: I7edff1e9527ad2c2cfec236daacb83ad4864d785
2020-08-07Update Date and Time Settings to include UTC/offset labelDixsie Wolmers1-6/+8
Label updates allow the user to easily understand the expectation for entering time by using specific label text for "24 hour time" and removing parenthesis from the helper text as parenthesis are not needed to in the input field. UTC/offset is displayed based on user preference. Signed-off-by: Dixsie Wolmers <dixsie@ibm.com> Change-Id: I41f98d9d16f0a4a81af39ce9b25768a1c0b89f08
2020-07-30Add test hooks to profile settings pageSukanya Pandey1-1/+9
Signed-off-by: Sukanya Pandey <sukapan1@in.ibm.com> Change-Id: I99d6fbb97de18ca74f520f3ab2ea2fc7374fa5e6
2020-07-28Add timezone to profile settings pageSukanya Pandey1-20/+69
- Users will have two options to select a timezone. - UTC and browser offset timezone are the two options for the application. - date-fns and date-fns-tz is used for date and time manipulations because:- - The package size of library is smaller. - It allows for importing functions to work with the native date object rather than having to create a moment instance that carries a larger payload. Signed-off-by: Sukanya Pandey <sukapan1@in.ibm.com> Change-Id: I581803f230f501c0d34d0b53e7c2d89e8466ee60
2020-07-20Clear password fields when changed successfullySukanya Pandey1-1/+5
Signed-off-by: Sukanya Pandey <sukapan1@in.ibm.com> Change-Id: Iaf3e420bd48597c34c1588855ed69dcb1dbf7523
2020-07-17Add min and max password range in profile settingsSukanya Pandey1-14/+20
-Api used to get the min and max value is redfish/v1/AccountService. Signed-off-by: Sukanya Pandey <sukapan1@in.ibm.com> Change-Id: I0f211496bef85aefe843052a6b6ba72156d2e4c7
2020-06-17Profile settings pageSukanya Pandey2-0/+164
-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/<userName>' Signed-off-by: Sukanya Pandey <sukapan1@in.ibm.com> Change-Id: Ie54a54beff8c85bc9ac5af21c35edc481b34cf44