mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-09 00:56:37 +08:00
fix(frontend): keep browser API on same-origin rewrites in dev
Document that NEXT_PUBLIC_WAVELET_BACKEND_URL must stay unset for local next dev so axios hits /api/* and Next rewrites proxy to the backend.
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
import { useEffect, useState } from 'react';
|
||||
import { toast } from 'sonner';
|
||||
import { useTranslations } from 'next-intl';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import {
|
||||
Dialog,
|
||||
@@ -39,6 +40,7 @@ export function AuthSourceModal({
|
||||
onClose: () => void;
|
||||
onChanged: () => Promise<void>;
|
||||
}) {
|
||||
const t = useTranslations('settings.authSourceModal');
|
||||
const [form, setForm] = useState<AuthSourceRequest>(emptyForm);
|
||||
const [saving, setSaving] = useState(false);
|
||||
|
||||
@@ -74,10 +76,12 @@ export function AuthSourceModal({
|
||||
await services.adminAuthSource.createAuthSource(form);
|
||||
}
|
||||
await onChanged();
|
||||
toast.success('认证源已保存');
|
||||
toast.success(t('authSourceSaved'));
|
||||
onClose();
|
||||
} catch (error) {
|
||||
toast.error(error instanceof Error ? error.message : '保存认证源失败');
|
||||
toast.error(
|
||||
error instanceof Error ? error.message : t('saveAuthSourceFailed'),
|
||||
);
|
||||
} finally {
|
||||
setSaving(false);
|
||||
}
|
||||
@@ -87,17 +91,17 @@ export function AuthSourceModal({
|
||||
<Dialog open={isOpen} onOpenChange={(open) => !open && onClose()}>
|
||||
<DialogContent className='max-w-xl'>
|
||||
<DialogHeader>
|
||||
<DialogTitle>{source ? '编辑认证源' : '新增认证源'}</DialogTitle>
|
||||
<DialogTitle>
|
||||
{source ? t('editAuthSource') : t('addAuthSource')}
|
||||
</DialogTitle>
|
||||
<DialogDescription>
|
||||
{source
|
||||
? '修改系统自定义的 OIDC 认证源参数。'
|
||||
: '配置新的自定义 OIDC 认证源。'}
|
||||
{source ? t('editAuthSourceDesc') : t('addAuthSourceDesc')}
|
||||
</DialogDescription>
|
||||
</DialogHeader>
|
||||
|
||||
<div className='grid gap-4 md:grid-cols-2 pt-2'>
|
||||
<div className='space-y-2'>
|
||||
<Label>标识符 (英文名称)</Label>
|
||||
<Label>{t('identifier')}</Label>
|
||||
<Input
|
||||
value={form.name}
|
||||
disabled={!!source}
|
||||
@@ -108,7 +112,7 @@ export function AuthSourceModal({
|
||||
/>
|
||||
</div>
|
||||
<div className='space-y-2'>
|
||||
<Label>展示名称</Label>
|
||||
<Label>{t('displayName')}</Label>
|
||||
<Input
|
||||
value={form.display_name}
|
||||
onChange={(e) =>
|
||||
@@ -133,11 +137,11 @@ export function AuthSourceModal({
|
||||
onChange={(e) =>
|
||||
setForm((prev) => ({ ...prev, client_secret: e.target.value }))
|
||||
}
|
||||
placeholder={source ? '留空则保留原值' : ''}
|
||||
placeholder={source ? t('keepOriginalIfEmpty') : ''}
|
||||
/>
|
||||
</div>
|
||||
<div className='space-y-2 md:col-span-2'>
|
||||
<Label>Discovery URL (OIDC 发行方 URL)</Label>
|
||||
<Label>{t('discoveryURL')}</Label>
|
||||
<Input
|
||||
value={form.openid_discovery_url}
|
||||
onChange={(e) =>
|
||||
@@ -159,7 +163,7 @@ export function AuthSourceModal({
|
||||
/>
|
||||
</div>
|
||||
<div className='space-y-2'>
|
||||
<Label>图标 URL (可选)</Label>
|
||||
<Label>{t('iconURL')}</Label>
|
||||
<Input
|
||||
value={form.icon_url}
|
||||
onChange={(e) =>
|
||||
@@ -170,9 +174,9 @@ export function AuthSourceModal({
|
||||
</div>
|
||||
<div className='flex items-center justify-between rounded-xl border border-dashed p-3 md:col-span-2 bg-muted/10'>
|
||||
<div>
|
||||
<div className='font-medium text-sm'>启用认证源</div>
|
||||
<div className='font-medium text-sm'>{t('enableAuthSource')}</div>
|
||||
<div className='text-xs text-muted-foreground'>
|
||||
启用后会立即显示在登录页和账号绑定中。
|
||||
{t('enableAuthSourceDesc')}
|
||||
</div>
|
||||
</div>
|
||||
<Switch
|
||||
@@ -184,7 +188,7 @@ export function AuthSourceModal({
|
||||
</div>
|
||||
<div className='md:col-span-2 flex justify-end gap-2 pt-2 border-t mt-2'>
|
||||
<Button variant='outline' type='button' onClick={onClose}>
|
||||
取消
|
||||
{t('cancel')}
|
||||
</Button>
|
||||
<Button
|
||||
type='button'
|
||||
@@ -192,7 +196,7 @@ export function AuthSourceModal({
|
||||
disabled={saving}
|
||||
variant='secondary'
|
||||
>
|
||||
{saving ? '保存中...' : '保存'}
|
||||
{saving ? t('saving') : t('save')}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user