Skip to content

feat: merge branch 'develop' into feature-query-integration#6133

Merged
piggggggggy merged 26 commits intocloudforet-io:feature-query-integrationfrom
seungyeoneeee:feature-query-integration
Aug 18, 2025
Merged

feat: merge branch 'develop' into feature-query-integration#6133
piggggggggy merged 26 commits intocloudforet-io:feature-query-integrationfrom
seungyeoneeee:feature-query-integration

Conversation

@seungyeoneeee
Copy link
Copy Markdown
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 <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 (cloudforet-io#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>
…6039)

* 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>
Signed-off-by: NaYeong,Kim <nayeongkim@megazone.com>
Signed-off-by: NaYeong,Kim <nayeongkim@megazone.com>
* fix: fix api endpoint blocking by version

Signed-off-by: NaYeong,Kim <nayeongkim@megazone.com>

* chore: removed unnecessary code

Signed-off-by: NaYeong,Kim <nayeongkim@megazone.com>

---------

Signed-off-by: NaYeong,Kim <nayeongkim@megazone.com>
Signed-off-by: admin-cloudforet <admin@cloudforet.io>
…oudforet-io#6046)

* 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>
…udforet-io#6047)

* 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>
* 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>
* fix: fix tag column bug in user page

Signed-off-by: yuda <yuda@megazone.com>

* fix: fix tag column bug in user page

Signed-off-by: yuda <yuda@megazone.com>

---------

Signed-off-by: yuda <yuda@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>
…o#6114)

Signed-off-by: NaYeong,Kim <nayeongkim@megazone.com>
Signed-off-by: Piggy Park (박용태) <samuel.park@megazone.com>
feat(mfa): implementation new mfa feature
Signed-off-by: 이승연 <sylee1274@mz.co.kr>
Signed-off-by: 이승연 <sylee1274@mz.co.kr>
@vercel
Copy link
Copy Markdown

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

@github-actions
Copy link
Copy Markdown
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 <randomdeveloper@example.com>

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'

@github-actions
Copy link
Copy Markdown
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
Copy Markdown

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

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

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

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

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

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

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

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.
Signed-off-by: 이승연 <sylee1274@mz.co.kr>
@github-actions
Copy link
Copy Markdown
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 <randomdeveloper@example.com>

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'

Signed-off-by: 이승연 <sylee1274@mz.co.kr>
@github-actions
Copy link
Copy Markdown
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 <randomdeveloper@example.com>

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'

Signed-off-by: 이승연 <sylee1274@mz.co.kr>
@github-actions
Copy link
Copy Markdown
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 <randomdeveloper@example.com>

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'

Signed-off-by: 이승연 <sylee1274@mz.co.kr>
@github-actions
Copy link
Copy Markdown
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 <randomdeveloper@example.com>

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.

7 participants