1
0
forked from baron/baron-sso

userfront: 소속 선택 단계 진입 시 검증된 이메일 도메인을 자동 판정하여 가족사인 경우 연동 문의 카드를 강제 노출하고 가입 차단 구현 (#1183)

This commit is contained in:
2026-06-16 17:13:45 +09:00
parent 40eaadd88d
commit 2cd2ce4c02

View File

@@ -1712,7 +1712,97 @@ Matters not expressly provided in this Policy are governed by the Company's inte
horizontal: isDesktop ? 32 : 20,
vertical: isDesktop ? 32 : 24,
),
child: _affiliationType == 'AFFILIATE'
? Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(
'가족사 임직원 가입 안내',
style: TextStyle(
fontSize: isDesktop ? 28 : 20,
fontWeight: FontWeight.w700,
height: 1.25,
color: _signupInk,
),
),
const SizedBox(height: 16),
Container(
padding: const EdgeInsets.all(20),
decoration: BoxDecoration(
color: Theme.of(context)
.colorScheme
.primaryContainer
.withValues(alpha: 0.12),
borderRadius: BorderRadius.circular(16),
border: Border.all(
color: Theme.of(context)
.colorScheme
.primary
.withValues(alpha: 0.25),
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Row(
children: [
Icon(
Icons.business,
color: Theme.of(context).colorScheme.primary,
size: 24,
),
const SizedBox(width: 10),
Expanded(
child: Text(
'기업 및 가족사 임직원 대상자입니다.',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 16,
color: Theme.of(context).colorScheme.primary,
),
),
),
],
),
const SizedBox(height: 14),
Text(
'귀하의 이메일 도메인은 기업/가족사 임직원 대상자입니다. 온라인 직접 가입 대신 별도의 조인 문의를 통해 가입 및 워크스페이스 연동이 진행됩니다.\n\n아래 버튼을 눌러 담당자에게 가입 연동 문의 메일을 발송하시거나 사내 시스템 관리자에게 문의해 주시기 바랍니다.',
style: TextStyle(
fontSize: 13,
height: 1.55,
color: _signupInk.withValues(alpha: 0.8),
),
),
const SizedBox(height: 20),
FilledButton.icon(
onPressed: () async {
final Uri emailUri = Uri(
scheme: 'mailto',
path: 'baroncs@baroncs.co.kr',
query: Uri.encodeFull(
'subject=[Baron SSO] 기업 소속 가입 및 연동 문의',
),
);
if (await canLaunchUrl(emailUri)) {
await launchUrl(emailUri);
}
},
icon: const Icon(Icons.mail_outline, size: 18),
label: const Text('기업 소속 문의하기'),
style: FilledButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
padding: const EdgeInsets.symmetric(
vertical: 14),
),
),
],
),
),
],
)
: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(
@@ -1740,74 +1830,6 @@ Matters not expressly provided in this Policy are governed by the Company's inte
),
),
),
const SizedBox(height: 24),
Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: _signupSurface,
borderRadius: BorderRadius.circular(12),
border: Border.all(
color: _signupBorder,
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Row(
children: [
Icon(
Icons.business,
color: Theme.of(context).colorScheme.primary,
size: 20,
),
const SizedBox(width: 8),
Expanded(
child: Text(
'기업/가족사 소속이신가요?',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 14,
color: _signupInk,
),
),
),
],
),
const SizedBox(height: 8),
Text(
'기업 및 가족사 임직원은 온라인 즉시 가입 대신 별도 연동 문의를 통해 워크스페이스 계정이 발급됩니다.\n\n아래 버튼을 눌러 담당자에게 문의 메일을 발송해 주시기 바랍니다.',
style: TextStyle(
fontSize: 12,
height: 1.45,
color: _signupInk.withValues(alpha: 0.7),
),
),
const SizedBox(height: 12),
OutlinedButton.icon(
onPressed: () async {
final Uri emailUri = Uri(
scheme: 'mailto',
path: 'baroncs@baroncs.co.kr',
query: Uri.encodeFull(
'subject=[Baron SSO] 기업 소속 가입 및 연동 문의',
),
);
if (await canLaunchUrl(emailUri)) {
await launchUrl(emailUri);
}
},
icon: const Icon(Icons.mail_outline, size: 16),
label: const Text('기업 소속 문의하기'),
style: OutlinedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
padding: const EdgeInsets.symmetric(vertical: 10),
),
),
],
),
),
],
),
),
@@ -2283,7 +2305,7 @@ Matters not expressly provided in this Policy are governed by the Company's inte
canGoNext = true;
}
if (_currentStep == 3) {
canGoNext = _nameController.text.trim().isNotEmpty;
canGoNext = _affiliationType == 'GENERAL' && _nameController.text.trim().isNotEmpty;
}
return Scaffold(