diff --git a/src/ui/Admin/AdminSettings.tsx b/src/ui/Admin/AdminSettings.tsx index 8a7fe744..bece9c0a 100644 --- a/src/ui/Admin/AdminSettings.tsx +++ b/src/ui/Admin/AdminSettings.tsx @@ -26,7 +26,6 @@ import { removeAdminStatus, deleteUser } from "@/ui/main-axios.ts"; -import {useTranslation} from "react-i18next"; function getCookie(name: string) { return document.cookie.split('; ').reduce((r, v) => { @@ -41,7 +40,6 @@ interface AdminSettingsProps { export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React.ReactElement { const {state: sidebarState} = useSidebar(); - const {t} = useTranslation(); const [allowRegistration, setAllowRegistration] = React.useState(true); const [regLoading, setRegLoading] = React.useState(false); @@ -137,7 +135,7 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React. await updateOIDCConfig(oidcConfig); setOidcSuccess("OIDC configuration updated successfully!"); } catch (err: any) { - setOidcError(err?.response?.data?.error || t('interface.failedToUpdateOidcConfig')); + setOidcError(err?.response?.data?.error || "Failed to update OIDC configuration"); } finally { setOidcLoading(false); } @@ -160,7 +158,7 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React. setNewAdminUsername(""); fetchUsers(); } catch (err: any) { - setMakeAdminError(err?.response?.data?.error || t('interface.failedToMakeUserAdmin')); + setMakeAdminError(err?.response?.data?.error || "Failed to make user admin"); } finally { setMakeAdminLoading(false); } @@ -202,7 +200,7 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React. className="bg-[#18181b] text-white rounded-lg border-2 border-[#303032] overflow-hidden">
-

{t('admin.title')}

+

Admin Settings

@@ -211,98 +209,99 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React. - {t('common.settings')} + General - {t('admin.oidcSettings')} + OIDC - {t('admin.users')} + Users - {t('nav.admin')} + Admins
-

{t('admin.userManagement')}

+

User Registration

-

{t('admin.externalAuthentication')}

-

{t('admin.configureExternalProvider')}

+

External Authentication (OIDC)

+

Configure external identity provider for + OIDC/OAuth2 authentication.

{oidcError && ( - {t('common.error')} + Error {oidcError} )}
- + handleOIDCConfigChange('client_id', e.target.value)} - placeholder={t('placeholders.clientId')} required/> + placeholder="your-client-id" required/>
- + handleOIDCConfigChange('client_secret', e.target.value)} - placeholder={t('placeholders.clientSecret')} required/> + placeholder="your-client-secret" required/>
- + handleOIDCConfigChange('authorization_url', e.target.value)} - placeholder={t('placeholders.authUrl')} + placeholder="https://your-provider.com/application/o/authorize/" required/>
- + handleOIDCConfigChange('issuer_url', e.target.value)} - placeholder={t('placeholders.redirectUrl')} required/> + placeholder="https://your-provider.com/application/o/termix/" required/>
- + handleOIDCConfigChange('token_url', e.target.value)} - placeholder={t('placeholders.tokenUrl')} required/> + placeholder="https://your-provider.com/application/o/token/" required/>
- + handleOIDCConfigChange('identifier_path', e.target.value)} - placeholder={t('placeholders.userIdField')} required/> + placeholder="sub" required/>
- + handleOIDCConfigChange('name_path', e.target.value)} - placeholder={t('placeholders.usernameField')} required/> + placeholder="name" required/>
- + handleOIDCConfigChange('scopes', (e.target as HTMLInputElement).value)} - placeholder={t('placeholders.scopes')} required/> + placeholder="openid email profile" required/>
+ disabled={oidcLoading}>{oidcLoading ? "Saving..." : "Save Configuration"} + })}>Reset
{oidcSuccess && ( - {t('admin.success')} + Success {oidcSuccess} )} @@ -328,20 +327,20 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React.
-

{t('admin.userManagement')}

+

User Management

+ size="sm">{usersLoading ? "Loading..." : "Refresh"}
{usersLoading ? ( -
{t('admin.loadingUsers')}
+
Loading users...
) : (
- {t('admin.username')} - {t('admin.type')} - {t('admin.actions')} + Username + Type + Actions @@ -351,11 +350,11 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React. {user.username} {user.is_admin && ( {t('admin.adminBadge')} + className="ml-2 inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-muted/50 text-muted-foreground border border-border">Admin )} {user.is_oidc ? t('admin.external') : t('admin.local')} + className="px-4">{user.is_oidc ? "External" : "Local"} + disabled={makeAdminLoading || !newAdminUsername.trim()}>{makeAdminLoading ? "Adding..." : "Make Admin"} {makeAdminError && ( - {t('common.error')} + Error {makeAdminError} )} {makeAdminSuccess && ( - {t('admin.success')} + Success {makeAdminSuccess} )} @@ -405,14 +404,14 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React.
-

{t('admin.currentAdmins')}

+

Current Admins

- {t('admin.username')} - {t('admin.type')} - {t('admin.actions')} + Username + Type + Actions @@ -424,13 +423,13 @@ export function AdminSettings({isTopbarOpen = true}: AdminSettingsProps): React. className="ml-2 inline-flex items-center px-2 py-1 rounded-full text-xs font-medium bg-muted/50 text-muted-foreground border border-border">Admin {admin.is_oidc ? t('admin.external') : t('admin.local')} + className="px-4">{admin.is_oidc ? "External" : "Local"}