feat(mfa): implementation new mfa feature#6126
Conversation
* chore: update user mfa setting params and model Signed-off-by: samuel.park <samuel.park@megazone.com> * fix(user-table): add MFA management table action Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(user-mfa): add user bulk MFA setting modal and mutation Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(user-mfa): add user bulk MFA disable modal and mutation Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: add MFA modal components to user management page Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: add user MFA setting translations Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(user-mfa-setting): add single user select case Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: apply copilot reviews Signed-off-by: piggggggggy <samuel.park@mz.co.kr> * chore: apply changed planning Signed-off-by: samuel.park <samuel.park@megazone.com> --------- Signed-off-by: samuel.park <samuel.park@megazone.com> Signed-off-by: piggggggggy <samuel.park@mz.co.kr>
…arate mfa-disable button and modal (#6038) * feat(modal-controller): creat modal-controller wrapper component Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(MFA-disable): separate disable button & apply modal-controller Signed-off-by: samuel.park <samuel.park@megazone.com> * feat: apply separated MFA-disable button Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: refactor mfa-disable mutation composable Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: add translation Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: small fix Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: typo Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: typo Signed-off-by: samuel.park <samuel.park@megazone.com> --------- Signed-off-by: samuel.park <samuel.park@megazone.com>
* chore: edit change MFA request Signed-off-by: samuel.park <samuel.park@megazone.com> * fix(mfa-setting): separate mfa-setting components Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: apply separated components Signed-off-by: samuel.park <samuel.park@megazone.com> * fix(existing-user-modal): apply mfa-setting form section Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: small fix Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: edit annotations Signed-off-by: samuel.park <samuel.park@megazone.com> --------- Signed-off-by: samuel.park <samuel.park@megazone.com>
) * feat(mfa): create mfa query composables Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: add disable-mfa user-profile verb Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(mfa): create mfa form component Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(mfa): create mfa setting modals Signed-off-by: samuel.park <samuel.park@megazone.com> * feat: apply refactored modals Signed-off-by: samuel.park <samuel.park@megazone.com> * refactor(mfa): refactor mfa UI component and mfa modals Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(mfa): apply new design (my-page mfa) Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: small fix Signed-off-by: samuel.park <samuel.park@megazone.com> --------- Signed-off-by: samuel.park <samuel.park@megazone.com>
* chore: chore fix Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(mfa-setup): create mfa setup page Signed-off-by: samuel.park <samuel.park@megazone.com> * fix(mfa-setup): refactor mfa-setup scenario flow Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: translation Signed-off-by: samuel.park <samuel.park@megazone.com> * chore(my-page): solve verified mfa method bug Signed-off-by: samuel.park <samuel.park@megazone.com> --------- Signed-off-by: samuel.park <samuel.park@megazone.com>
Signed-off-by: samuel.park <samuel.park@megazone.com>
Signed-off-by: samuel.park <samuel.park@megazone.com>
* fix(mfa): solve switching mfa-type bug Signed-off-by: samuel.park <samuel.park@megazone.com> * feat(user-form-modal): apply vue query for sync Signed-off-by: samuel.park <samuel.park@megazone.com> * fix(user-cache): apply user cache sync to userProfile Signed-off-by: samuel.park <samuel.park@megazone.com> * fix(my-account): solve mfa resync bug Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: fix ui (info-tooltip) Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: solve type lint error Signed-off-by: samuel.park <samuel.park@megazone.com> --------- Signed-off-by: samuel.park <samuel.park@megazone.com>
Signed-off-by: samuel.park <samuel.park@megazone.com>
* chore: mfa minor QAs Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: minor design fix Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: solve email resent issue Signed-off-by: samuel.park <samuel.park@megazone.com> * chore: minor refactoring Signed-off-by: samuel.park <samuel.park@megazone.com> --------- Signed-off-by: samuel.park <samuel.park@megazone.com>
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
2 Skipped Deployments
|
There was a problem hiding this comment.
Pull Request Overview
This pull request implements a comprehensive multi-factor authentication (MFA) feature across the application. The changes include user interface components for MFA setup and management, API integration for MFA operations, and administrative controls for enforcing MFA policies.
Key changes:
- Added MFA setup components and modals for both OTP and email-based authentication
- Implemented administrative controls for bulk MFA policy management
- Added MFA enforcement mechanisms during user authentication flow
- Enhanced user profile and account management with MFA controls
Reviewed Changes
Copilot reviewed 64 out of 64 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/mirinae/src/controls/select-card/PSelectCard.vue | Added readonly prop and styling for disabled state |
| packages/language-pack/*.json | Added new translation keys for MFA-related UI text |
| packages/core-lib/src/space-connector/ | Added methods for handling refresh token removal |
| apps/web/src/store/user/ | Added required actions constants and type definitions |
| apps/web/src/services/my-page/ | Implemented user MFA management components and modals |
| apps/web/src/services/iam/ | Added administrative MFA controls and bulk operations |
| apps/web/src/services/auth/ | Added MFA setup page and authentication flow |
| apps/web/src/common/components/mfa/ | Created reusable MFA components for forms and validation |
| apps/web/src/api-clients/identity/ | Enhanced API schemas with MFA-related parameters |
| "DELETE_SINGLE_MFA_SECRET_KEY_MODAL_DESC": "Deletes the Multi-factor Authentication(MFA) secret key for the selected user.", | ||
| "MFA_TYPE_NO_ACTIVE_METHOD": "No active method", | ||
| "MFA_TYPE_SELECT_FIELD_TITLE": "Multi-factor Authentication Method", | ||
| "MFA_TYPE_SELECT_FIELD_TOOLTIP_TEXT": ".", |
There was a problem hiding this comment.
The tooltip text contains only a period, which is not helpful for users. This should contain meaningful text explaining the MFA type selection field.
| "MFA_TYPE_SELECT_FIELD_TOOLTIP_TEXT": ".", | |
| "MFA_TYPE_SELECT_FIELD_TOOLTIP_TEXT": "Select the Multi-factor Authentication (MFA) method to be used for the selected users.", |
| "KEEP_ONLY_REMOVABLE_URERS": "Keep only removable users in the list below", | ||
| "MFA": { | ||
| "DELETE_MFA_SECRET_KEY_BUTTON_TEXT": "Delete MFA Secret Key", | ||
| "DELETE_MFA_SECRET_KEY_FAILED_MESSAGE": "", |
There was a problem hiding this comment.
The error message for failed MFA secret key deletion is empty, which will not provide users with helpful feedback when the operation fails.
| "DELETE_MFA_SECRET_KEY_FAILED_MESSAGE": "", | |
| "DELETE_MFA_SECRET_KEY_FAILED_MESSAGE": "Failed to delete MFA secret key. Please try again or contact support if the problem persists.", |
| const isSentCode = ref<boolean>(false); | ||
| const isVerified = ref<boolean>(false); | ||
|
|
||
| /* Components */ |
There was a problem hiding this comment.
[nitpick] Comment should be '/* Event Handlers /' or '/ Events */' to be more specific since it contains event handling functions, not component definitions.
| /* Components */ | |
| /* Event Handlers */ |
Signed-off-by: Piggy Park (박용태) <samuel.park@megazone.com>
08bf70b to
b3676e5
Compare
Skip Review (optional)
style,chore,ci,test,docs)Description (optional)
SSIA
Things to Talk About (optional)