fix(client): 去 dev 旁路 + 修 macOS keychain -34018 [tsk__bm21nctbhWF]
1. 去 dev 旁路:删除 auth_screen.dart 中 test@pangolin.dev 预填 + devLogin 跳过后端分支,以及 auth_provider.dart 的 devLogin() 方法。 2. 修 keychain -34018(errSecMissingEntitlement): 在 DebugProfile.entitlements / Release.entitlements 中添加 keychain-access-groups($(AppIdentifierPrefix)com.pangolin.pangolinVpn), 使 flutter_secure_storage 的 Data Protection Keychain API 获得正确 entitlement。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -53,13 +53,6 @@ class AuthNotifier extends StateNotifier<AuthState> {
|
||||
await _store.clear();
|
||||
state = const AuthState();
|
||||
}
|
||||
|
||||
/// Dev-only:仅设置内存登录态,不写 keychain。
|
||||
/// 用于 debug 测试账户旁路,规避 flutter_secure_storage 在未签名
|
||||
/// macOS app 上的 keychain entitlement 问题(-34018)。
|
||||
void devLogin(String token) {
|
||||
state = AuthState(accessToken: token);
|
||||
}
|
||||
}
|
||||
|
||||
// ── Providers ────────────────────────────────────────────────────────
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
// auth_screen.dart — 登录 / 注册页(邮箱 + 验证码流程)
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
@@ -41,20 +40,9 @@ class _AuthScreenState extends ConsumerState<AuthScreen> {
|
||||
|
||||
late final AuthApi _api = AuthApi(baseUrl: _kApiUrl);
|
||||
|
||||
// ── Dev-only 测试账户旁路(仅 debug build)─────────────────────
|
||||
// 后端 /v1/auth 未就绪时,用此账户直接进入主界面浏览 UI。
|
||||
// 登录后节点列表回退 kDemoNodes,连接键走 mock 动画。
|
||||
static const _devEmail = 'test@pangolin.dev';
|
||||
static const _devPassword = 'test1234';
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// debug 下预填测试账户,方便直接点登录。
|
||||
if (kDebugMode) {
|
||||
_email.text = _devEmail;
|
||||
_pw.text = _devPassword;
|
||||
}
|
||||
}
|
||||
|
||||
bool get _emailValid => RegExp(r'\S+@\S+\.\S+').hasMatch(_email.text);
|
||||
@@ -97,13 +85,6 @@ class _AuthScreenState extends ConsumerState<AuthScreen> {
|
||||
|
||||
Future<void> _doLogin() async {
|
||||
setState(() { _loading = true; _errorZh = null; });
|
||||
// Dev 旁路:debug build 下用测试账户跳过后端直接登录。
|
||||
// 用 devLogin 只设内存态,不写 keychain(规避 -34018 entitlement 问题)。
|
||||
if (kDebugMode && _email.text.trim() == _devEmail && _pw.text == _devPassword) {
|
||||
ref.read(authProvider.notifier).devLogin('dev-access-token');
|
||||
if (mounted) widget.onDone();
|
||||
return;
|
||||
}
|
||||
try {
|
||||
final tokens = await _api.login(
|
||||
email: _email.text.trim(),
|
||||
|
||||
@@ -10,5 +10,10 @@
|
||||
<true/>
|
||||
<key>com.apple.security.network.server</key>
|
||||
<true/>
|
||||
<!-- flutter_secure_storage: Data Protection Keychain 需要此 entitlement,否则返回 -34018 -->
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)com.pangolin.pangolinVpn</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -6,5 +6,10 @@
|
||||
<false/>
|
||||
<key>com.apple.security.network.client</key>
|
||||
<true/>
|
||||
<!-- flutter_secure_storage: Data Protection Keychain 需要此 entitlement,否则返回 -34018 -->
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)com.pangolin.pangolinVpn</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
Reference in New Issue
Block a user