From 40eaadd88d229fb0a9e7ce43fb18860424ae4317 Mon Sep 17 00:00:00 2001 From: chan Date: Tue, 16 Jun 2026 17:03:20 +0900 Subject: [PATCH] =?UTF-8?q?userfront:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EB=8B=A8=EA=B3=84=EC=97=90=EC=84=9C=20=EC=86=8C?= =?UTF-8?q?=EC=86=8D=20=EC=9C=A0=ED=98=95=20=EC=84=A0=ED=83=9D/=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EB=A0=88=EA=B1=B0=EC=8B=9C=20UI=EB=A5=BC=20?= =?UTF-8?q?=EC=99=84=EC=A0=84=ED=9E=88=20=EC=A0=9C=EA=B1=B0=ED=95=98?= =?UTF-8?q?=EA=B3=A0=20100%=20=EA=B0=9C=EC=9D=B8=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?=EB=8B=A8=EC=9D=BC=ED=99=94=20=EB=B0=8F=20=EA=B8=B0=EC=97=85=20?= =?UTF-8?q?=EB=AC=B8=EC=9D=98=20=EB=B0=B0=EB=84=88=20=EC=A0=81=EC=9A=A9=20?= =?UTF-8?q?(#1183)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/presentation/signup_screen.dart | 211 +++++------------- 1 file changed, 57 insertions(+), 154 deletions(-) diff --git a/userfront/lib/features/auth/presentation/signup_screen.dart b/userfront/lib/features/auth/presentation/signup_screen.dart index e265a268..846087b8 100644 --- a/userfront/lib/features/auth/presentation/signup_screen.dart +++ b/userfront/lib/features/auth/presentation/signup_screen.dart @@ -1740,165 +1740,74 @@ Matters not expressly provided in this Policy are governed by the Company's inte ), ), ), - const SizedBox(height: 18), - _buildProfileFieldGroup( - title: tr('ui.userfront.signup.profile.affiliation_type'), - description: '개인 가입 혹은 기업 연동을 선택합니다.', - isDesktop: isDesktop, - trailing: null, + 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: [ - DropdownButtonFormField( - key: ValueKey(_affiliationType), - initialValue: _affiliationType, - decoration: InputDecoration( - labelText: tr( - 'ui.userfront.signup.profile.affiliation_type', + Row( + children: [ + Icon( + Icons.business, + color: Theme.of(context).colorScheme.primary, + size: 20, ), - border: const OutlineInputBorder(), - ), - items: [ - DropdownMenuItem( - value: 'GENERAL', - child: Text(tr('domain.affiliation.general')), - ), - DropdownMenuItem( - value: 'AFFILIATE', - child: Text(tr('domain.affiliation.affiliate')), + const SizedBox(width: 8), + Expanded( + child: Text( + '기업/가족사 소속이신가요?', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14, + color: _signupInk, + ), + ), ), ], - onChanged: _isAffiliateLocked - ? null - : (val) { - if (val == null) { - return; - } - setState(() { - _affiliationType = val; - if (_affiliationType == 'GENERAL') { - _companyCode = null; - } - }); - }, ), - AnimatedSize( - duration: const Duration(milliseconds: 180), - curve: Curves.easeOut, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - if (_affiliationType == 'AFFILIATE') ...[ - const SizedBox(height: 16), - Container( - padding: const EdgeInsets.all(16), - decoration: BoxDecoration( - color: Theme.of(context) - .colorScheme - .primaryContainer - .withValues(alpha: 0.15), - borderRadius: BorderRadius.circular(12), - 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: 15, - color: Theme.of(context) - .colorScheme - .primary, - ), - ), - ), - ], - ), - const SizedBox(height: 12), - Text( - '기업/가족사 소속 회원은 바로 가입하는 대신 별도 문의를 통해 가입 및 워크스페이스 연동이 진행됩니다.\n\n아래 버튼을 눌러 담당자에게 가입 문의 이메일을 보내거나 baroncs@baroncs.co.kr로 직접 문의해 주시기 바랍니다.', - style: TextStyle( - fontSize: 13, - height: 1.5, - color: _signupInk - .withValues(alpha: 0.8), - ), - ), - const SizedBox(height: 16), - 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: 12), - ), - ), - ], - ), - ), - ], - ], + 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), ), ), ], ), ), - if (_affiliationType == 'GENERAL') ...[ - const SizedBox(height: 18), - _buildProfileFieldGroup( - title: tr( - 'ui.userfront.signup.profile.department_optional', - ), - description: '선택 입력 항목입니다.', - isDesktop: isDesktop, - child: TextFormField( - controller: _deptController, - onChanged: (_) => setState(() {}), - decoration: InputDecoration( - labelText: tr( - 'ui.userfront.signup.profile.department_optional', - ), - border: const OutlineInputBorder(), - ), - ), - ), - ], ], ), ), @@ -2374,13 +2283,7 @@ Matters not expressly provided in this Policy are governed by the Company's inte canGoNext = true; } if (_currentStep == 3) { - final nameOk = _nameController.text.trim().isNotEmpty; - if (_affiliationType == 'GENERAL') { - canGoNext = nameOk; - } else { - // 기업 소속(AFFILIATE)인 경우 직접 가입 대신 문의로 안내하므로 다음 단계 진행을 차단합니다. - canGoNext = false; - } + canGoNext = _nameController.text.trim().isNotEmpty; } return Scaffold(