Внешние БД: пустой список таблиц = доступ ко всем (allowlist опционален)
Основная отсечка прав — на уровне пользователя внешней БД (GRANT SELECT); allowlist в подключении теперь опциональное дополнение (было обязательным).
This commit is contained in:
@@ -6,7 +6,6 @@ import { Button } from "@/components/ui/button";
|
||||
import { Input } from "@/components/ui/input";
|
||||
import { Label } from "@/components/ui/label";
|
||||
import { Switch } from "@/components/ui/switch";
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from "@/components/ui/dialog";
|
||||
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table";
|
||||
import { useToast } from "@/hooks/use-toast";
|
||||
@@ -139,7 +138,8 @@ export function ExternalDbSettings() {
|
||||
</CardTitle>
|
||||
<CardDescription className="text-xs mt-1">
|
||||
Read-only подключения для отчётов и виджетов. Запросы через шлюз: только SELECT,
|
||||
только таблицы из списка, лимит 5000 строк. Каждый запрос пишется в журнал.
|
||||
лимит 5000 строк. Ограничение по таблицам опционально (пусто = все таблицы).
|
||||
Каждый запрос пишется в журнал.
|
||||
</CardDescription>
|
||||
</div>
|
||||
<Button size="sm" onClick={openCreate} className="gap-1">
|
||||
@@ -175,7 +175,7 @@ export function ExternalDbSettings() {
|
||||
{c.allowedTables.join(", ")}
|
||||
</span>
|
||||
) : (
|
||||
<Badge variant="destructive" className="text-[10px]">шлюз закрыт</Badge>
|
||||
<span className="text-muted-foreground">все таблицы</span>
|
||||
)}
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
@@ -260,14 +260,15 @@ export function ExternalDbSettings() {
|
||||
<Input type="password" value={form.password} onChange={set("password")} autoComplete="new-password" />
|
||||
</div>
|
||||
<div className="grid gap-1.5">
|
||||
<Label className="text-xs">Разрешённые таблицы (через запятую)</Label>
|
||||
<Label className="text-xs">Разрешённые таблицы (через запятую; пусто = все таблицы)</Label>
|
||||
<Input
|
||||
value={form.allowedTables}
|
||||
onChange={set("allowedTables")}
|
||||
placeholder="nds_monthly, nds_input_balance, nds_sync_log, nds_contract_marker, nds_advance_vat_tracker"
|
||||
placeholder="Пусто — доступ ко всем таблицам"
|
||||
/>
|
||||
<p className="text-[11px] text-muted-foreground">
|
||||
Только эти таблицы доступны через read-only шлюз. Пусто = шлюз закрыт.
|
||||
Опционально: ограничьте список, если не хотите давать доступ ко всей схеме.
|
||||
Основную отсечку делайте правами пользователя БД (GRANT SELECT).
|
||||
</p>
|
||||
</div>
|
||||
<div className="flex items-center gap-2">
|
||||
|
||||
Reference in New Issue
Block a user