From 3de28410ae71b9fd2f64545d6c62e52e296b0501 Mon Sep 17 00:00:00 2001 From: chan Date: Mon, 27 Apr 2026 11:56:49 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4(Userfront)=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20?= =?UTF-8?q?=EB=B7=B0=EC=97=90=EC=84=9C=20=EC=9D=B8=EC=A6=9D=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=EC=B0=BD=20=EC=82=AC=EB=9D=BC=EC=A7=80=EB=8A=94=20?= =?UTF-8?q?=EB=B0=98=EC=9D=91=ED=98=95=20=EB=A0=88=EC=9D=B4=EC=95=84?= =?UTF-8?q?=EC=9B=83=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/ory/oathkeeper/rules.active.json | 2 +- .../auth/presentation/signup_screen.dart | 155 ++++++++++++------ 2 files changed, 109 insertions(+), 48 deletions(-) diff --git a/docker/ory/oathkeeper/rules.active.json b/docker/ory/oathkeeper/rules.active.json index 4a0735da..fd6bfb2d 100755 --- a/docker/ory/oathkeeper/rules.active.json +++ b/docker/ory/oathkeeper/rules.active.json @@ -156,4 +156,4 @@ "authorizer": { "handler": "allow" }, "mutators": [{ "handler": "noop" }] } -] \ No newline at end of file +] diff --git a/userfront/lib/features/auth/presentation/signup_screen.dart b/userfront/lib/features/auth/presentation/signup_screen.dart index af3c9813..98374339 100644 --- a/userfront/lib/features/auth/presentation/signup_screen.dart +++ b/userfront/lib/features/auth/presentation/signup_screen.dart @@ -22,9 +22,9 @@ class _SignupScreenState extends State { static const _signupMuted = Color(0xFF6B7280); static const _signupDone = Color(0xFF0F766E); static const _signupDoneSurface = Color(0xFFECFDF5); - static const _agreementDesktopBreakpoint = 960.0; + static const _agreementDesktopBreakpoint = 1024.0; static const _agreementCardMaxWidth = 880.0; - static const _stepIndicatorDesktopBreakpoint = 720.0; + static const _stepIndicatorDesktopBreakpoint = 1024.0; static const _stepIndicatorMaxWidth = 880.0; final _formKey = GlobalKey(); @@ -1254,43 +1254,84 @@ class _SignupScreenState extends State { ], ), SizedBox(height: isDesktop ? 20 : 16), - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: ConstrainedBox( - constraints: const BoxConstraints(minHeight: 56), - child: TextFormField( - controller: controller, - onChanged: onChanged, - decoration: InputDecoration( - labelText: label, - border: const OutlineInputBorder(), - errorText: errorText, - hintText: hintText, + isDesktop + ? Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: ConstrainedBox( + constraints: const BoxConstraints(minHeight: 56), + child: TextFormField( + controller: controller, + onChanged: onChanged, + decoration: InputDecoration( + labelText: label, + border: const OutlineInputBorder(), + errorText: errorText, + hintText: hintText, + ), + readOnly: readOnly, + keyboardType: keyboardType, + ), + ), ), - readOnly: readOnly, - keyboardType: keyboardType, - ), + const SizedBox(width: 10), + SizedBox( + height: 52, + width: 108, + child: FilledButton( + onPressed: buttonEnabled ? onRequestCode : null, + style: FilledButton.styleFrom( + backgroundColor: _signupInk, + foregroundColor: Colors.white, + disabledBackgroundColor: const Color(0xFFE5E7EB), + disabledForegroundColor: const Color(0xFF9CA3AF), + ), + child: Text( + buttonLabel, + style: const TextStyle(fontSize: 13, fontWeight: FontWeight.bold), + ), + ), + ), + ], + ) + : Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + ConstrainedBox( + constraints: const BoxConstraints(minHeight: 56), + child: TextFormField( + controller: controller, + onChanged: onChanged, + decoration: InputDecoration( + labelText: label, + border: const OutlineInputBorder(), + errorText: errorText, + hintText: hintText, + ), + readOnly: readOnly, + keyboardType: keyboardType, + ), + ), + const SizedBox(height: 10), + SizedBox( + height: 52, + child: FilledButton( + onPressed: buttonEnabled ? onRequestCode : null, + style: FilledButton.styleFrom( + backgroundColor: _signupInk, + foregroundColor: Colors.white, + disabledBackgroundColor: const Color(0xFFE5E7EB), + disabledForegroundColor: const Color(0xFF9CA3AF), + ), + child: Text( + buttonLabel, + style: const TextStyle(fontSize: 13, fontWeight: FontWeight.bold), + ), + ), + ), + ], ), - ), - const SizedBox(width: 10), - SizedBox( - height: 52, - width: isDesktop ? 108 : null, - child: FilledButton( - onPressed: buttonEnabled ? onRequestCode : null, - style: FilledButton.styleFrom( - backgroundColor: _signupInk, - foregroundColor: Colors.white, - disabledBackgroundColor: const Color(0xFFE5E7EB), - disabledForegroundColor: const Color(0xFF9CA3AF), - ), - child: Text(buttonLabel), - ), - ), - ], - ), AnimatedSize( duration: const Duration(milliseconds: 180), curve: Curves.easeOut, @@ -1299,11 +1340,36 @@ class _SignupScreenState extends State { children: [ if (verificationVisible) ...[ const SizedBox(height: 12), - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: ConstrainedBox( + isDesktop + ? Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: ConstrainedBox( + constraints: const BoxConstraints(minHeight: 56), + child: TextFormField( + controller: verificationController, + decoration: InputDecoration( + labelText: tr( + 'ui.userfront.signup.auth.code_label', + ), + suffixText: verificationCountdown, + border: const OutlineInputBorder(), + ), + keyboardType: TextInputType.number, + inputFormatters: [ + FilteringTextInputFormatter.digitsOnly, + LengthLimitingTextInputFormatter(6), + ], + onChanged: onVerificationChanged, + ), + ), + ), + const SizedBox(width: 10), + const SizedBox(width: 108), + ], + ) + : ConstrainedBox( constraints: const BoxConstraints(minHeight: 56), child: TextFormField( controller: verificationController, @@ -1322,11 +1388,6 @@ class _SignupScreenState extends State { onChanged: onVerificationChanged, ), ), - ), - const SizedBox(width: 10), - SizedBox(width: isDesktop ? 108 : 0), - ], - ), ], if (verified) ...[ const SizedBox(height: 12),