v1.6.0 #221
@@ -269,7 +269,8 @@
|
|||||||
"passwordResetSuccess": "Password reset successfully! You can now log in with your new password.",
|
"passwordResetSuccess": "Password reset successfully! You can now log in with your new password.",
|
||||||
"failedToInitiatePasswordReset": "Failed to initiate password reset",
|
"failedToInitiatePasswordReset": "Failed to initiate password reset",
|
||||||
"failedToVerifyResetCode": "Failed to verify reset code",
|
"failedToVerifyResetCode": "Failed to verify reset code",
|
||||||
"failedToCompletePasswordReset": "Failed to complete password reset"
|
"failedToCompletePasswordReset": "Failed to complete password reset",
|
||||||
|
"documentation": "Documentation"
|
||||||
},
|
},
|
||||||
"nav": {
|
"nav": {
|
||||||
"home": "Home",
|
"home": "Home",
|
||||||
|
|||||||
@@ -256,7 +256,8 @@
|
|||||||
"passwordResetSuccess": "密码重置成功!您现在可以使用新密码登录。",
|
"passwordResetSuccess": "密码重置成功!您现在可以使用新密码登录。",
|
||||||
"failedToInitiatePasswordReset": "启动密码重置失败",
|
"failedToInitiatePasswordReset": "启动密码重置失败",
|
||||||
"failedToVerifyResetCode": "验证重置代码失败",
|
"failedToVerifyResetCode": "验证重置代码失败",
|
||||||
"failedToCompletePasswordReset": "完成密码重置失败"
|
"failedToCompletePasswordReset": "完成密码重置失败",
|
||||||
|
"documentation": "文档"
|
||||||
},
|
},
|
||||||
"nav": {
|
"nav": {
|
||||||
"home": "首页",
|
"home": "首页",
|
||||||
|
|||||||
@@ -305,9 +305,19 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React.
|
|||||||
</TabsContent>
|
</TabsContent>
|
||||||
|
|
||||||
<TabsContent value="oidc" className="space-y-6">
|
<TabsContent value="oidc" className="space-y-6">
|
||||||
<div className="space-y-4">
|
<div className="space-y-3">
|
||||||
<h3 className="text-lg font-semibold">{t('admin.externalAuthentication')}</h3>
|
<h3 className="text-lg font-semibold">{t('admin.externalAuthentication')}</h3>
|
||||||
<p className="text-sm text-muted-foreground">{t('admin.configureExternalProvider')}</p>
|
<div className="space-y-2">
|
||||||
|
<p className="text-sm text-muted-foreground">{t('admin.configureExternalProvider')}</p>
|
||||||
|
<Button
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
className="h-8 px-3 text-xs"
|
||||||
|
onClick={() => window.open('https://docs.termix.site/oidc', '_blank')}
|
||||||
|
>
|
||||||
|
{t('common.documentation')}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
|
||||||
{oidcError && (
|
{oidcError && (
|
||||||
<Alert variant="destructive">
|
<Alert variant="destructive">
|
||||||
|
|||||||
@@ -985,7 +985,6 @@ export function HostManagerEditor({editingHost, onFormSubmit}: SSHManagerHostEdi
|
|||||||
</FormItem>
|
</FormItem>
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{form.watch('enableTunnel') && (
|
{form.watch('enableTunnel') && (
|
||||||
<>
|
<>
|
||||||
<Alert className="mt-4">
|
<Alert className="mt-4">
|
||||||
@@ -1026,7 +1025,16 @@ export function HostManagerEditor({editingHost, onFormSubmit}: SSHManagerHostEdi
|
|||||||
<div className="mt-2">{t('hosts.editSshConfig')}</div>
|
<div className="mt-2">{t('hosts.editSshConfig')}</div>
|
||||||
</AlertDescription>
|
</AlertDescription>
|
||||||
</Alert>
|
</Alert>
|
||||||
|
<div className="mt-3 flex justify-between">
|
||||||
|
<Button
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
className="h-8 px-3 text-xs"
|
||||||
|
onClick={() => window.open('https://docs.termix.site/tunnels', '_blank')}
|
||||||
|
>
|
||||||
|
{t('common.documentation')}
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
<FormField
|
<FormField
|
||||||
control={form.control}
|
control={form.control}
|
||||||
name="tunnelConnections"
|
name="tunnelConnections"
|
||||||
|
|||||||
@@ -408,8 +408,16 @@ export function TOTPSetup({ isEnabled: initialEnabled, onStatusChange }: TOTPSet
|
|||||||
<Shield className="w-5 h-5" />
|
<Shield className="w-5 h-5" />
|
||||||
{t('auth.twoFactorTitle')}
|
{t('auth.twoFactorTitle')}
|
||||||
</CardTitle>
|
</CardTitle>
|
||||||
<CardDescription>
|
<CardDescription className="space-y-2">
|
||||||
{t('auth.addExtraSecurityLayer')}
|
<p>{t('auth.addExtraSecurityLayer')}.</p>
|
||||||
|
<Button
|
||||||
|
variant="outline"
|
||||||
|
size="sm"
|
||||||
|
className="h-8 px-3 text-xs"
|
||||||
|
onClick={() => window.open('https://docs.termix.site/totp', '_blank')}
|
||||||
|
>
|
||||||
|
{t('common.documentation')}
|
||||||
|
</Button>
|
||||||
</CardDescription>
|
</CardDescription>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="space-y-4">
|
<CardContent className="space-y-4">
|
||||||
|
|||||||
Reference in New Issue
Block a user