diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 8d15c97..94392bd 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -913,23 +913,6 @@ "iflow_oauth_status_error": "Authentication failed:", "iflow_oauth_start_error": "Failed to start iFlow OAuth:", "iflow_oauth_polling_error": "Failed to check authentication status:", - "iflow_cookie_title": "iFlow Cookie Login", - "iflow_cookie_label": "Cookie Value:", - "iflow_cookie_placeholder": "Enter the BXAuth value, starting with BXAuth=", - "iflow_cookie_hint": "Submit an existing cookie to finish login without opening the authorization link; the credential file will be saved automatically.", - "iflow_cookie_key_hint": "Note: Create a key on the platform first.", - "iflow_cookie_button": "Submit Cookie Login", - "iflow_cookie_status_success": "Cookie login succeeded and credentials are saved.", - "iflow_cookie_status_error": "Cookie login failed:", - "iflow_cookie_status_duplicate": "Duplicate config:", - "iflow_cookie_start_error": "Failed to submit cookie login:", - "iflow_cookie_config_duplicate": "A config file already exists (duplicate). Remove the existing file and try again if you want to re-save it.", - "iflow_cookie_required": "Please provide the Cookie value first.", - "iflow_cookie_result_title": "Cookie Login Result", - "iflow_cookie_result_email": "Account", - "iflow_cookie_result_expired": "Expires At", - "iflow_cookie_result_path": "Saved Path", - "iflow_cookie_result_type": "Type", "remote_access_disabled": "This login method is not available for remote access. Please access from localhost." }, "usage_stats": { diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index dce50e1..7f0d34e 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -910,23 +910,6 @@ "iflow_oauth_status_error": "Ошибка аутентификации:", "iflow_oauth_start_error": "Не удалось запустить iFlow OAuth:", "iflow_oauth_polling_error": "Не удалось проверить статус аутентификации:", - "iflow_cookie_title": "Вход iFlow по cookie", - "iflow_cookie_label": "Значение cookie:", - "iflow_cookie_placeholder": "Введите значение BXAuth, начиная с BXAuth=", - "iflow_cookie_hint": "Отправьте существующий cookie, чтобы завершить вход без открытия ссылки авторизации; файл учётных данных будет сохранён автоматически.", - "iflow_cookie_key_hint": "Примечание: сначала создайте ключ на платформе.", - "iflow_cookie_button": "Отправить вход по cookie", - "iflow_cookie_status_success": "Вход по cookie выполнен, учётные данные сохранены.", - "iflow_cookie_status_error": "Ошибка входа по cookie:", - "iflow_cookie_status_duplicate": "Дублирующая конфигурация:", - "iflow_cookie_start_error": "Не удалось отправить вход по cookie:", - "iflow_cookie_config_duplicate": "Такая конфигурация уже существует. Удалите файл и повторите, если хотите перезаписать.", - "iflow_cookie_required": "Сначала укажите значение cookie.", - "iflow_cookie_result_title": "Результат входа по cookie", - "iflow_cookie_result_email": "Аккаунт", - "iflow_cookie_result_expired": "Истекает", - "iflow_cookie_result_path": "Путь сохранения", - "iflow_cookie_result_type": "Тип", "remote_access_disabled": "Этот способ входа недоступен при удалённом доступе. Подключитесь с localhost." }, "usage_stats": { diff --git a/src/i18n/locales/zh-CN.json b/src/i18n/locales/zh-CN.json index c74221b..92ca7a6 100644 --- a/src/i18n/locales/zh-CN.json +++ b/src/i18n/locales/zh-CN.json @@ -913,23 +913,6 @@ "iflow_oauth_status_error": "认证失败:", "iflow_oauth_start_error": "启动 iFlow OAuth 失败:", "iflow_oauth_polling_error": "检查认证状态失败:", - "iflow_cookie_title": "iFlow Cookie 登录", - "iflow_cookie_label": "Cookie 内容:", - "iflow_cookie_placeholder": "填入BXAuth值 以BXAuth=开头", - "iflow_cookie_hint": "直接提交 Cookie 以完成登录(无需打开授权链接),服务端将自动保存凭据。", - "iflow_cookie_key_hint": "提示:需在平台上先创建 Key。", - "iflow_cookie_button": "提交 Cookie 登录", - "iflow_cookie_status_success": "Cookie 登录成功,凭据已保存。", - "iflow_cookie_status_error": "Cookie 登录失败:", - "iflow_cookie_status_duplicate": "配置文件重复:", - "iflow_cookie_start_error": "提交 Cookie 登录失败:", - "iflow_cookie_config_duplicate": "检测到配置文件已存在(重复),如需重新保存请先删除原文件后重试。", - "iflow_cookie_required": "请先填写 Cookie 内容", - "iflow_cookie_result_title": "Cookie 登录结果", - "iflow_cookie_result_email": "账号", - "iflow_cookie_result_expired": "过期时间", - "iflow_cookie_result_path": "保存路径", - "iflow_cookie_result_type": "类型", "remote_access_disabled": "远程访问不支持此登录方式,请从本地 (localhost) 访问" }, "usage_stats": { diff --git a/src/pages/OAuthPage.tsx b/src/pages/OAuthPage.tsx index 783a507..7166733 100644 --- a/src/pages/OAuthPage.tsx +++ b/src/pages/OAuthPage.tsx @@ -4,7 +4,7 @@ import { Card } from '@/components/ui/Card'; import { Button } from '@/components/ui/Button'; import { Input } from '@/components/ui/Input'; import { useNotificationStore, useThemeStore } from '@/stores'; -import { oauthApi, type OAuthProvider, type IFlowCookieAuthResponse } from '@/services/api/oauth'; +import { oauthApi, type OAuthProvider } from '@/services/api/oauth'; import { vertexApi, type VertexImportResponse } from '@/services/api/vertex'; import { copyToClipboard } from '@/utils/clipboard'; import styles from './OAuthPage.module.scss'; @@ -14,7 +14,6 @@ import iconAntigravity from '@/assets/icons/antigravity.svg'; import iconGemini from '@/assets/icons/gemini.svg'; import iconKimiLight from '@/assets/icons/kimi-light.svg'; import iconKimiDark from '@/assets/icons/kimi-dark.svg'; -import iconIflow from '@/assets/icons/iflow.svg'; import iconVertex from '@/assets/icons/vertex.svg'; interface ProviderState { @@ -31,14 +30,6 @@ interface ProviderState { callbackError?: string; } -interface IFlowCookieState { - cookie: string; - loading: boolean; - result?: IFlowCookieAuthResponse; - error?: string; - errorType?: 'error' | 'warning'; -} - interface VertexImportResult { projectId?: string; email?: string; @@ -92,7 +83,6 @@ export function OAuthPage() { const { showNotification } = useNotificationStore(); const resolvedTheme = useThemeStore((state) => state.resolvedTheme); const [states, setStates] = useState>({} as Record); - const [iflowCookie, setIflowCookie] = useState({ cookie: '', loading: false }); const [vertexState, setVertexState] = useState({ fileName: '', location: '', @@ -233,49 +223,6 @@ export function OAuthPage() { } }; - const submitIflowCookie = async () => { - const cookie = iflowCookie.cookie.trim(); - if (!cookie) { - showNotification(t('auth_login.iflow_cookie_required'), 'warning'); - return; - } - setIflowCookie((prev) => ({ - ...prev, - loading: true, - error: undefined, - errorType: undefined, - result: undefined - })); - try { - const res = await oauthApi.iflowCookieAuth(cookie); - if (res.status === 'ok') { - setIflowCookie((prev) => ({ ...prev, loading: false, result: res })); - showNotification(t('auth_login.iflow_cookie_status_success'), 'success'); - } else { - setIflowCookie((prev) => ({ - ...prev, - loading: false, - error: res.error, - errorType: 'error' - })); - showNotification(`${t('auth_login.iflow_cookie_status_error')} ${res.error || ''}`, 'error'); - } - } catch (err: unknown) { - if (getErrorStatus(err) === 409) { - const message = t('auth_login.iflow_cookie_config_duplicate'); - setIflowCookie((prev) => ({ ...prev, loading: false, error: message, errorType: 'warning' })); - showNotification(message, 'warning'); - return; - } - const message = getErrorMessage(err); - setIflowCookie((prev) => ({ ...prev, loading: false, error: message, errorType: 'error' })); - showNotification( - `${t('auth_login.iflow_cookie_start_error')}${message ? ` ${message}` : ''}`, - 'error' - ); - } - }; - const handleVertexFilePick = () => { vertexFileInputRef.current?.click(); }; @@ -540,77 +487,6 @@ export function OAuthPage() { )} - - {/* iFlow Cookie 登录 */} - - - {t('auth_login.iflow_cookie_title')} - - } - extra={ - - } - > -
-
{t('auth_login.iflow_cookie_hint')}
-
- {t('auth_login.iflow_cookie_key_hint')} -
-
- - setIflowCookie((prev) => ({ ...prev, cookie: e.target.value }))} - placeholder={t('auth_login.iflow_cookie_placeholder')} - /> -
- {iflowCookie.error && ( -
- {iflowCookie.errorType === 'warning' - ? t('auth_login.iflow_cookie_status_duplicate') - : t('auth_login.iflow_cookie_status_error')}{' '} - {iflowCookie.error} -
- )} - {iflowCookie.result && iflowCookie.result.status === 'ok' && ( -
-
{t('auth_login.iflow_cookie_result_title')}
-
- {iflowCookie.result.email && ( -
- {t('auth_login.iflow_cookie_result_email')} - {iflowCookie.result.email} -
- )} - {iflowCookie.result.expired && ( -
- {t('auth_login.iflow_cookie_result_expired')} - {iflowCookie.result.expired} -
- )} - {iflowCookie.result.saved_path && ( -
- {t('auth_login.iflow_cookie_result_path')} - {iflowCookie.result.saved_path} -
- )} - {iflowCookie.result.type && ( -
- {t('auth_login.iflow_cookie_result_type')} - {iflowCookie.result.type} -
- )} -
-
- )} -
-
); diff --git a/src/services/api/oauth.ts b/src/services/api/oauth.ts index 76cdd82..e421aa8 100644 --- a/src/services/api/oauth.ts +++ b/src/services/api/oauth.ts @@ -20,15 +20,6 @@ export interface OAuthCallbackResponse { status: 'ok'; } -export interface IFlowCookieAuthResponse { - status: 'ok' | 'error'; - error?: string; - saved_path?: string; - email?: string; - expired?: string; - type?: string; -} - const WEBUI_SUPPORTED: OAuthProvider[] = ['codex', 'anthropic', 'antigravity', 'gemini-cli']; const CALLBACK_PROVIDER_MAP: Partial> = { 'gemini-cli': 'gemini' @@ -59,9 +50,5 @@ export const oauthApi = { provider: callbackProvider, redirect_url: redirectUrl }); - }, - - /** iFlow cookie 认证 */ - iflowCookieAuth: (cookie: string) => - apiClient.post('/iflow-auth-url', { cookie }) + } };