Skip to content

Conversation

seungyeoneeee
Copy link
Contributor

Skip Review (optional)

  • Minor changes that don't affect the functionality (e.g. style, chore, ci, test, docs)
  • Previously reviewed in feature branch, further review is not mandatory
  • Self-merge allowed for solo developers or urgent changes

Description (optional)

Things to Talk About (optional)

piggggggggy and others added 22 commits July 22, 2025 12:37
* chore: update user mfa setting params and model

Signed-off-by: samuel.park <[email protected]>

* fix(user-table): add MFA management table action

Signed-off-by: samuel.park <[email protected]>

* feat(user-mfa): add user bulk MFA setting modal and mutation

Signed-off-by: samuel.park <[email protected]>

* feat(user-mfa): add user bulk MFA disable modal and mutation

Signed-off-by: samuel.park <[email protected]>

* chore: add MFA modal components to user management page

Signed-off-by: samuel.park <[email protected]>

* chore: add user MFA setting translations

Signed-off-by: samuel.park <[email protected]>

* feat(user-mfa-setting): add single user select case

Signed-off-by: samuel.park <[email protected]>

* chore: apply copilot reviews

Signed-off-by: piggggggggy <[email protected]>

* chore: apply changed planning

Signed-off-by: samuel.park <[email protected]>

---------

Signed-off-by: samuel.park <[email protected]>
Signed-off-by: piggggggggy <[email protected]>
…arate mfa-disable button and modal (cloudforet-io#6038)

* feat(modal-controller): creat modal-controller wrapper component

Signed-off-by: samuel.park <[email protected]>

* feat(MFA-disable): separate disable button & apply modal-controller

Signed-off-by: samuel.park <[email protected]>

* feat: apply separated MFA-disable button

Signed-off-by: samuel.park <[email protected]>

* chore: refactor mfa-disable mutation composable

Signed-off-by: samuel.park <[email protected]>

* chore: add translation

Signed-off-by: samuel.park <[email protected]>

* chore: small fix

Signed-off-by: samuel.park <[email protected]>

* chore: typo

Signed-off-by: samuel.park <[email protected]>

* chore: typo

Signed-off-by: samuel.park <[email protected]>

---------

Signed-off-by: samuel.park <[email protected]>
…6039)

* chore: edit change MFA request

Signed-off-by: samuel.park <[email protected]>

* fix(mfa-setting): separate mfa-setting components

Signed-off-by: samuel.park <[email protected]>

* chore: apply separated components

Signed-off-by: samuel.park <[email protected]>

* fix(existing-user-modal): apply mfa-setting form section

Signed-off-by: samuel.park <[email protected]>

* chore: small fix

Signed-off-by: samuel.park <[email protected]>

* chore: edit annotations

Signed-off-by: samuel.park <[email protected]>

---------

Signed-off-by: samuel.park <[email protected]>
* fix: fix api endpoint blocking by version

Signed-off-by: NaYeong,Kim <[email protected]>

* chore: removed unnecessary code

Signed-off-by: NaYeong,Kim <[email protected]>

---------

Signed-off-by: NaYeong,Kim <[email protected]>
Signed-off-by: admin-cloudforet <[email protected]>
…oudforet-io#6046)

* feat(mfa): create mfa query composables

Signed-off-by: samuel.park <[email protected]>

* chore: add disable-mfa user-profile verb

Signed-off-by: samuel.park <[email protected]>

* feat(mfa): create mfa form component

Signed-off-by: samuel.park <[email protected]>

* feat(mfa): create mfa setting modals

Signed-off-by: samuel.park <[email protected]>

* feat: apply refactored modals

Signed-off-by: samuel.park <[email protected]>

* refactor(mfa): refactor mfa UI component and mfa modals

Signed-off-by: samuel.park <[email protected]>

* feat(mfa): apply new design (my-page mfa)

Signed-off-by: samuel.park <[email protected]>

* chore: small fix

Signed-off-by: samuel.park <[email protected]>

---------

Signed-off-by: samuel.park <[email protected]>
…udforet-io#6047)

* chore: chore fix

Signed-off-by: samuel.park <[email protected]>

* feat(mfa-setup): create mfa setup page

Signed-off-by: samuel.park <[email protected]>

* fix(mfa-setup): refactor mfa-setup scenario flow

Signed-off-by: samuel.park <[email protected]>

* chore: translation

Signed-off-by: samuel.park <[email protected]>

* chore(my-page): solve verified mfa method bug

Signed-off-by: samuel.park <[email protected]>

---------

Signed-off-by: samuel.park <[email protected]>
Signed-off-by: samuel.park <[email protected]>
* fix(mfa): solve switching mfa-type bug

Signed-off-by: samuel.park <[email protected]>

* feat(user-form-modal): apply vue query for sync

Signed-off-by: samuel.park <[email protected]>

* fix(user-cache): apply user cache sync to userProfile

Signed-off-by: samuel.park <[email protected]>

* fix(my-account): solve mfa resync bug

Signed-off-by: samuel.park <[email protected]>

* chore: fix ui (info-tooltip)

Signed-off-by: samuel.park <[email protected]>

* chore: solve type lint error

Signed-off-by: samuel.park <[email protected]>

---------

Signed-off-by: samuel.park <[email protected]>
Signed-off-by: samuel.park <[email protected]>
* fix: fix tag column bug in user page

Signed-off-by: yuda <[email protected]>

* fix: fix tag column bug in user page

Signed-off-by: yuda <[email protected]>

---------

Signed-off-by: yuda <[email protected]>
* chore: mfa minor QAs

Signed-off-by: samuel.park <[email protected]>

* chore: minor design fix

Signed-off-by: samuel.park <[email protected]>

* chore: solve email resent issue

Signed-off-by: samuel.park <[email protected]>

* chore: minor refactoring

Signed-off-by: samuel.park <[email protected]>

---------

Signed-off-by: samuel.park <[email protected]>
feat(mfa): implementation new mfa feature
Copy link

vercel bot commented Aug 14, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

4 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
console Ignored Ignored Preview Aug 18, 2025 1:11am
feature-query-integration Ignored Ignored Aug 18, 2025 1:11am
mfa-saas-qa Ignored Ignored Aug 18, 2025 1:11am
web-storybook Ignored Ignored Aug 18, 2025 1:11am

Copy link
Contributor

⚠️ @seungyeoneeee the signed-off-by was not found in the following 2 commits:

  • dba9a0f: chore: merge master into develop after 2.0.dev378 version tagging
  • 3322d8f: feat(mfa): implementation new mfa feature

✅ Why it is required

The Developer Certificate of Origin (DCO) is a lightweight way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. Here is the full text of the DCO.

Contributors sign-off that they adhere to these requirements by adding a Signed-off-by line to commit messages.

This is my commit message

Signed-off-by: Random Developer <[email protected]>

Git even has a -s command line option to append this automatically to your commit message:

$ git commit -s -m 'This is my commit message'

Copy link
Contributor

🎉 @skdud4659 has been randomly selected as the reviewer! Please review. 🙏

@github-actions github-actions bot requested a review from skdud4659 August 14, 2025 04:38
Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR merges the 'develop' branch into the 'feature-query-integration' branch, bringing together multiple feature additions and improvements including Multi-Factor Authentication (MFA) functionality, user interface updates, and infrastructure changes.

  • Adds comprehensive MFA setup and management functionality with support for OTP and Email authentication
  • Updates UI components including a new readonly mode for select cards and improved modal management
  • Removes service configuration functionality from core library and updates authentication flows

Reviewed Changes

Copilot reviewed 72 out of 73 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
packages/mirinae/src/controls/select-card/PSelectCard.vue Adds readonly prop and styling for disabled/readonly states
packages/language-pack/*.json Adds new translation keys for MFA functionality across multiple languages
packages/core-lib/src/space-connector/*.ts Removes service config logic and adds refresh token removal method
apps/web/src/services/my-page/components/* Refactors MFA components to use new modal system
apps/web/src/services/iam/components/mfa/* Adds new MFA management components for bulk operations
apps/web/src/services/auth/pages/MultiFactorAuthSetUpPage.vue Adds new MFA setup page for authentication flow

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

"AUTHENTICATION_CODE_LOWER": "인증 코드",
"CONFIRM": "확인",
"EMAIL_INFO": "계정 로그인을 위한 멀티 팩터 인증(MFA)을 지원합니다. 인증 코드가 이메일 주소로 전송되었습니다:",
"ENFORCE_INFO_TEXT": "",
Copy link
Preview

Copilot AI Aug 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty translation strings should be filled with appropriate Korean translations or marked as TODO for future completion.

Suggested change
"ENFORCE_INFO_TEXT": "",
"ENFORCE_INFO_TEXT": "TODO",

Copilot uses AI. Check for mistakes.

"AUTHENTICATION_CODE_LOWER": "認証コード",
"CONFIRM": "確認",
"EMAIL_INFO": "アカウントログインのためのマルチファクタ認証(MFA)をサポートします。認証コードがメールアドレスに送信されました:",
"ENFORCE_INFO_TEXT": "",
Copy link
Preview

Copilot AI Aug 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty translation strings should be filled with appropriate Japanese translations or marked as TODO for future completion.

Suggested change
"ENFORCE_INFO_TEXT": "",
"ENFORCE_INFO_TEXT": "TODO",

Copilot uses AI. Check for mistakes.

passwordFormState.invalidText = '';
passwordFormState.passwordCheckModalVisible = false;
showSuccessMessage(i18n.t('COMMON.PROFILE.SUCCESS_PASSWORD_CHECK'));
showSuccessMessage(i18n.t('COMMON.PROFILE.SUCCESS_PASSWORD_CHECK'), '');
Copy link
Preview

Copilot AI Aug 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passing an empty string as the second parameter to showSuccessMessage is unclear. Consider using a more explicit parameter name or documenting the purpose of this parameter.

Suggested change
showSuccessMessage(i18n.t('COMMON.PROFILE.SUCCESS_PASSWORD_CHECK'), '');
showSuccessMessage(i18n.t('COMMON.PROFILE.SUCCESS_PASSWORD_CHECK'), SUCCESS_MESSAGE_NO_TITLE);

Copilot uses AI. Check for mistakes.

}
} else if (selected === MULTI_FACTOR_AUTH_TYPE.OTP) {
multiFactorAuthStore.setOTPDisableModalVisible(true);
await userProfileAPI.disableMfa({});
Copy link
Preview

Copilot AI Aug 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Passing an empty object to disableMfa() may be incorrect. Verify that this API call doesn't require any parameters or consider making the parameter requirement explicit.

Suggested change
await userProfileAPI.disableMfa({});
await userProfileAPI.disableMfa();

Copilot uses AI. Check for mistakes.

} = route.params as { mfaType: MultiFactorAuthType | undefined };
const state = reactive({
// isLocalLogin: computed<boolean>(() => userStore.state.authType === 'LOCAL'),
Copy link
Preview

Copilot AI Aug 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove commented out code that is no longer needed. If this logic may be needed in the future, consider documenting why it's commented out.

Suggested change
// isLocalLogin: computed<boolean>(() => userStore.state.authType === 'LOCAL'),

Copilot uses AI. Check for mistakes.

if (!oneNumberValidator(value)) return i18n.t('IDENTITY.USER.FORM.ONE_NUMBER_INVALID');
const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/;
if (!passwordRegex.test(value)) {
Copy link
Preview

Copilot AI Aug 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The password validation regex is duplicated in multiple files. Consider extracting this to a shared constant or utility function to ensure consistency and easier maintenance.

Suggested change
if (!passwordRegex.test(value)) {
if (!PASSWORD_REGEX.test(value)) {

Copilot uses AI. Check for mistakes.

import { useProxyValue } from '@/common/composables/proxy-state';
const RE_SEND_CODE_COOLDOWN_TIME = 10000;
Copy link
Preview

Copilot AI Aug 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Magic number for cooldown time should be extracted to a configuration file or constant. Consider making this configurable based on security requirements.

Copilot uses AI. Check for mistakes.

Copy link
Contributor

⚠️ @seungyeoneeee the signed-off-by was not found in the following 2 commits:

  • dba9a0f: chore: merge master into develop after 2.0.dev378 version tagging
  • 3322d8f: feat(mfa): implementation new mfa feature

✅ Why it is required

The Developer Certificate of Origin (DCO) is a lightweight way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. Here is the full text of the DCO.

Contributors sign-off that they adhere to these requirements by adding a Signed-off-by line to commit messages.

This is my commit message

Signed-off-by: Random Developer <[email protected]>

Git even has a -s command line option to append this automatically to your commit message:

$ git commit -s -m 'This is my commit message'

Copy link
Contributor

⚠️ @seungyeoneeee the signed-off-by was not found in the following 2 commits:

  • dba9a0f: chore: merge master into develop after 2.0.dev378 version tagging
  • 3322d8f: feat(mfa): implementation new mfa feature

✅ Why it is required

The Developer Certificate of Origin (DCO) is a lightweight way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. Here is the full text of the DCO.

Contributors sign-off that they adhere to these requirements by adding a Signed-off-by line to commit messages.

This is my commit message

Signed-off-by: Random Developer <[email protected]>

Git even has a -s command line option to append this automatically to your commit message:

$ git commit -s -m 'This is my commit message'

Copy link
Contributor

⚠️ @seungyeoneeee the signed-off-by was not found in the following 2 commits:

  • dba9a0f: chore: merge master into develop after 2.0.dev378 version tagging
  • 3322d8f: feat(mfa): implementation new mfa feature

✅ Why it is required

The Developer Certificate of Origin (DCO) is a lightweight way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. Here is the full text of the DCO.

Contributors sign-off that they adhere to these requirements by adding a Signed-off-by line to commit messages.

This is my commit message

Signed-off-by: Random Developer <[email protected]>

Git even has a -s command line option to append this automatically to your commit message:

$ git commit -s -m 'This is my commit message'

Copy link
Contributor

⚠️ @seungyeoneeee the signed-off-by was not found in the following 2 commits:

  • dba9a0f: chore: merge master into develop after 2.0.dev378 version tagging
  • 3322d8f: feat(mfa): implementation new mfa feature

✅ Why it is required

The Developer Certificate of Origin (DCO) is a lightweight way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. Here is the full text of the DCO.

Contributors sign-off that they adhere to these requirements by adding a Signed-off-by line to commit messages.

This is my commit message

Signed-off-by: Random Developer <[email protected]>

Git even has a -s command line option to append this automatically to your commit message:

$ git commit -s -m 'This is my commit message'

@piggggggggy piggggggggy merged commit b20412e into cloudforet-io:feature-query-integration Aug 18, 2025
6 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants