feat: add NSFW script generation feature and Grok API configuration

This commit is contained in:
2026-03-13 12:58:28 +08:00
parent 424c3edf0b
commit 0d63d0e6d1
28 changed files with 850 additions and 36 deletions

View File

@@ -63,9 +63,14 @@ export function UserTable({ users, isLoading, onEdit, onDelete }: UserTableProps
</Badge>
</td>
<td className="px-4 py-3">
{(user.is_superuser || user.can_use_local_model) && (
<Badge variant="secondary">{t('user:localModelPermission')}</Badge>
)}
<div className="flex gap-1 flex-wrap">
{(user.is_superuser || user.can_use_local_model) && (
<Badge variant="secondary">{t('user:localModelPermission')}</Badge>
)}
{(user.is_superuser || user.can_use_nsfw) && (
<Badge variant="destructive">{t('user:nsfwPermission')}</Badge>
)}
</div>
</td>
<td className="px-4 py-3">
{new Date(user.created_at).toLocaleString(i18n.language)}
@@ -140,11 +145,17 @@ export function UserTable({ users, isLoading, onEdit, onDelete }: UserTableProps
</div>
<div className="flex justify-between items-center">
<span className="text-muted-foreground">{t('common:actions')}:</span>
{(user.is_superuser || user.can_use_local_model) ? (
<Badge variant="secondary">{t('user:localModelPermission')}</Badge>
) : (
<span className="text-xs text-muted-foreground">{t('user:noPermission')}</span>
)}
<div className="flex gap-1 flex-wrap">
{(user.is_superuser || user.can_use_local_model) && (
<Badge variant="secondary">{t('user:localModelPermission')}</Badge>
)}
{(user.is_superuser || user.can_use_nsfw) && (
<Badge variant="destructive">{t('user:nsfwPermission')}</Badge>
)}
{!user.is_superuser && !user.can_use_local_model && !user.can_use_nsfw && (
<span className="text-xs text-muted-foreground">{t('user:noPermission')}</span>
)}
</div>
</div>
<div className="flex justify-between">
<span className="text-muted-foreground">{t('user:createdAt')}:</span>