플랫폼을 선택하세요.
+ 플랫폼을 선택하세요.
) : (
<>
@@ -661,7 +785,7 @@ function ModalShell({ title, icon, children, footer, panelClassName = 'max-h-[82
)
}
-function ProfileModal({ initial, userName, userEmail, createdAt, lastLoginAt, primaryAffiliation, currentLicense, accessToken, avatarObjectUrl, avatarMissing, onAvatarMissingChange, onAvatarUpdated, onClose }: {
+function ProfileModal({ initial, userName, userEmail, createdAt, lastLoginAt, primaryAffiliation, currentLicense, accessToken, loginMethod, avatarObjectUrl, avatarMissing, onAvatarMissingChange, onAvatarUpdated, onClose }: {
initial: string
userName: string
userEmail: string
@@ -671,6 +795,7 @@ function ProfileModal({ initial, userName, userEmail, createdAt, lastLoginAt, pr
primaryAffiliation?: SidebarProps['primaryAffiliation']
currentLicense?: SidebarProps['currentLicense']
accessToken: string
+ loginMethod?: 'GOOGLE' | 'PASSWORD'
avatarObjectUrl: string | null
avatarMissing: boolean
onAvatarMissingChange: (missing: boolean) => void
@@ -698,6 +823,7 @@ function ProfileModal({ initial, userName, userEmail, createdAt, lastLoginAt, pr
const licensePeriod = currentLicense
? `${formatDate(currentLicense.startsAt)} ~ ${currentLicense.expiresAt ? formatDate(currentLicense.expiresAt) : '무기한'}`
: '-'
+ const isGoogleLogin = loginMethod === 'GOOGLE'
const resetPasswordForm = (): void => {
setCurrentPassword('')
@@ -916,8 +1042,10 @@ function ProfileModal({ initial, userName, userEmail, createdAt, lastLoginAt, pr
}
title="비밀번호 변경"
- description="현재 비밀번호 확인 후 새 비밀번호 설정."
+ description={isGoogleLogin ? 'Google 로그인 계정은 비밀번호를 변경할 수 없습니다.' : '현재 비밀번호 확인 후 새 비밀번호 설정.'}
+ disabled={isGoogleLogin}
onClick={() => {
+ if (isGoogleLogin) return
resetPasswordForm()
setPasswordMode(true)
}}
@@ -1116,9 +1244,9 @@ function ProfileRow({ label, value }: { label: string; value: string }): React.J
)
}
-function SecurityAction({ icon, title, description, status, onClick }: { icon: React.ReactNode; title: string; description: string; status?: string; onClick?: () => void }): React.JSX.Element {
+function SecurityAction({ icon, title, description, status, disabled = false, onClick }: { icon: React.ReactNode; title: string; description: string; status?: string; disabled?: boolean; onClick?: () => void }): React.JSX.Element {
return (
-