import { useState, useEffect } from 'react' import { fetchRegistrationSettings, updateRegistrationSettingsApi, fetchOAuthSettings, updateOAuthSettingsApi, type RegistrationSettings, type OAuthSettings, } from '@common/services/authApi' // ─── 시스템 설정 패널 ──────────────────────────────────────── function SettingsPanel() { const [settings, setSettings] = useState(null) const [oauthSettings, setOauthSettings] = useState(null) const [oauthDomainInput, setOauthDomainInput] = useState('') const [loading, setLoading] = useState(true) const [saving, setSaving] = useState(false) const [savingOAuth, setSavingOAuth] = useState(false) useEffect(() => { loadSettings() }, []) const loadSettings = async () => { setLoading(true) try { const [regData, oauthData] = await Promise.all([ fetchRegistrationSettings(), fetchOAuthSettings(), ]) setSettings(regData) setOauthSettings(oauthData) setOauthDomainInput(oauthData.autoApproveDomains) } catch (err) { console.error('설정 조회 실패:', err) } finally { setLoading(false) } } const handleToggle = async (key: keyof RegistrationSettings) => { if (!settings) return const newValue = !settings[key] setSaving(true) try { const updated = await updateRegistrationSettingsApi({ [key]: newValue }) setSettings(updated) } catch (err) { console.error('설정 변경 실패:', err) } finally { setSaving(false) } } if (loading) { return
불러오는 중...
} return (

시스템 설정

사용자 등록 및 권한 관련 시스템 설정을 관리합니다

{/* 사용자 등록 설정 */}

사용자 등록 설정

신규 사용자 등록 시 적용되는 정책을 설정합니다

{/* 자동 승인 */}
자동 승인

활성화하면 신규 사용자가 등록 즉시 ACTIVE 상태가 됩니다. 비활성화하면 관리자 승인 전까지 PENDING 상태로 대기합니다.

{/* 기본 역할 자동 할당 */}
기본 역할 자동 할당

활성화하면 신규 사용자에게 기본 역할이 자동으로 할당됩니다. 기본 역할은 권한 관리 탭에서 설정할 수 있습니다.

{/* OAuth 설정 */}

Google OAuth 설정

Google 계정 로그인 시 자동 승인할 이메일 도메인을 설정합니다

자동 승인 도메인

지정된 도메인의 Google 계정은 가입 즉시 ACTIVE 상태가 됩니다. 미지정 도메인은 PENDING 상태로 관리자 승인이 필요합니다. 여러 도메인은 쉼표(,)로 구분합니다.

setOauthDomainInput(e.target.value)} placeholder="gcsc.co.kr, example.com" className="flex-1 px-3 py-2 text-xs bg-bg-2 border border-border rounded-md text-text-1 placeholder-text-3 focus:border-primary-cyan focus:outline-none font-mono" />
{oauthSettings?.autoApproveDomains && (
{oauthSettings.autoApproveDomains.split(',').map(d => d.trim()).filter(Boolean).map(domain => ( @{domain} ))}
)}
{/* 현재 설정 상태 요약 */}

설정 상태 요약

신규 사용자 등록 시{' '} {settings?.autoApprove ? ( 즉시 활성화 ) : ( 관리자 승인 필요 )}
기본 역할 자동 할당{' '} {settings?.defaultRole ? ( 활성 ) : ( 비활성 )}
Google OAuth 자동 승인 도메인{' '} {oauthSettings?.autoApproveDomains ? ( {oauthSettings.autoApproveDomains} ) : ( 미설정 )}
) } export default SettingsPanel