Harden request validation and admin UX cues
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import { KeyRound, Save, Wrench } from '@lucide/vue'
|
||||
import { KeyRound, LockKeyhole, Save, Wrench } from '@lucide/vue'
|
||||
import { computed, onBeforeUnmount, onMounted } from 'vue'
|
||||
import { onBeforeRouteLeave } from 'vue-router'
|
||||
|
||||
@@ -65,6 +65,14 @@ onBeforeUnmount(() => window.removeEventListener('beforeunload', handleBeforeUnl
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<p
|
||||
v-if="!canManageOperationalSettings"
|
||||
class="flex items-start gap-3 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm font-semibold leading-6 text-slate-700"
|
||||
>
|
||||
<LockKeyhole class="mt-0.5 h-4 w-4 shrink-0 text-slate-500" />
|
||||
Demo-Schutz und Wartungsmodus sind sichtbar, aber nur Owner oder Creator dürfen diese Einstellungen speichern.
|
||||
</p>
|
||||
|
||||
<section class="grid gap-6 xl:grid-cols-2">
|
||||
<div class="space-y-4">
|
||||
<div class="flex items-center gap-2 px-1 text-sm font-semibold text-violet-700">
|
||||
|
||||
@@ -208,6 +208,9 @@ function statToneClass(tone: string) {
|
||||
|
||||
<!-- Flag list -->
|
||||
<div class="flex-1 divide-y divide-violet-50 overflow-y-auto xl:max-h-[640px]">
|
||||
<div class="border-b border-amber-100 bg-amber-50/70 px-5 py-3 text-xs font-semibold leading-5 text-amber-800">
|
||||
Bulk-Aktionen greifen nur für offene Low-Severity-Hinweise. Medium- und High-Fälle bleiben absichtlich Einzelentscheidungen.
|
||||
</div>
|
||||
<button
|
||||
v-for="flag in filteredRiskFlags"
|
||||
:key="flag.id"
|
||||
@@ -336,6 +339,9 @@ function statToneClass(tone: string) {
|
||||
class="mb-3 h-10 w-full rounded-xl border border-amber-200 bg-white px-3 text-sm outline-none transition focus:border-amber-400 focus:ring-4 focus:ring-amber-100/60"
|
||||
placeholder="Bulk-Notiz eingeben (mind. 3 Zeichen)"
|
||||
/>
|
||||
<p class="mb-3 text-xs font-semibold text-amber-800">
|
||||
Die Auswahl bleibt auf offene Low-Hinweise beschränkt. Höhere Severity wird bewusst nicht in Bulk verarbeitet.
|
||||
</p>
|
||||
<div class="flex gap-2">
|
||||
<Button
|
||||
size="sm"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script setup lang="ts">
|
||||
import { Save, Settings } from '@lucide/vue'
|
||||
import { LockKeyhole, Save, Settings } from '@lucide/vue'
|
||||
import { computed, onBeforeUnmount, onMounted } from 'vue'
|
||||
import { onBeforeRouteLeave } from 'vue-router'
|
||||
|
||||
@@ -87,6 +87,14 @@ onBeforeUnmount(() => window.removeEventListener('beforeunload', handleBeforeUnl
|
||||
</Button>
|
||||
</div>
|
||||
|
||||
<p
|
||||
v-if="!canManageOperationalSettings"
|
||||
class="flex items-start gap-3 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm font-semibold leading-6 text-slate-700"
|
||||
>
|
||||
<LockKeyhole class="mt-0.5 h-4 w-4 shrink-0 text-slate-500" />
|
||||
Die Seite bleibt für Admins sichtbar, aber Demo-, OAuth- und Session-Betriebseinstellungen dürfen nur Owner oder Creator speichern.
|
||||
</p>
|
||||
|
||||
<AdminSettingsOverviewBoard
|
||||
:checks="checks"
|
||||
:gates="gates"
|
||||
|
||||
Reference in New Issue
Block a user