diff --git a/documentation/PROJECT__AE_Access_Control_UX.md b/documentation/PROJECT__AE_Access_Control_UX.md index 7b00b8a1..c5938121 100644 --- a/documentation/PROJECT__AE_Access_Control_UX.md +++ b/documentation/PROJECT__AE_Access_Control_UX.md @@ -1,6 +1,6 @@ # PROJECT: Access Control UX — Session Expired & Access Denied -**Status:** In Progress +**Status:** Complete **Priority:** Medium-High **Created:** 2026-02 **Updated:** 2026-03-11 @@ -231,7 +231,7 @@ Add the dismissible banner to the template (after/near the existing `is_offline` --- -### Step 4: Create `element_access_denied.svelte` ⬅ NEXT +### Step 4: Create `element_access_denied.svelte` ✅ DONE (2026-03-11) **File:** `src/lib/elements/element_access_denied.svelte` @@ -239,7 +239,7 @@ Reusable card for inline access denial. Props per design decision 4c. --- -### Step 5: Fix Event Settings `alert()` ⬅ NEXT +### Step 5: Fix Event Settings `alert()` ✅ DONE (2026-03-11) **File:** `src/routes/events/[event_id]/settings/+page.svelte` @@ -250,7 +250,7 @@ Replace the module-level `if (!$ae_loc.administrator_access)` + `alert()` block --- -### Step 6 (Optional / Low Priority): Swap badge review inline card +### Step 6 (Optional / Low Priority): Swap badge review inline card ✅ DONE (2026-03-11) **File:** `src/routes/events/[event_id]/(badges)/badges/[badge_id]/review/+page.svelte` diff --git a/src/lib/elements/element_access_denied.svelte b/src/lib/elements/element_access_denied.svelte new file mode 100644 index 00000000..861bae6e --- /dev/null +++ b/src/lib/elements/element_access_denied.svelte @@ -0,0 +1,34 @@ + + +
+
+ +

{title}

+
+

{message}

+ {#if action_label && on_action} + + {/if} +
diff --git a/src/routes/events/[event_id]/(badges)/badges/[badge_id]/review/+page.svelte b/src/routes/events/[event_id]/(badges)/badges/[badge_id]/review/+page.svelte index 00d735d5..466e2fc8 100644 --- a/src/routes/events/[event_id]/(badges)/badges/[badge_id]/review/+page.svelte +++ b/src/routes/events/[event_id]/(badges)/badges/[badge_id]/review/+page.svelte @@ -30,6 +30,7 @@ import { ArrowLeft, Check, Link, LoaderCircle, Mail, Printer } from 'lucide-svelte'; import Comp_badge_review_form from '../ae_comp__badge_review_form.svelte'; + import Element_access_denied from '$lib/elements/element_access_denied.svelte'; let event_badge_id = $derived(page.params.badge_id); let event_id = $derived(page.params.event_id); @@ -315,19 +316,11 @@ {:else if passcode_checked && !passcode_valid} -
-
-

Access Denied

-
-

{passcode_error}

- -
+ { passcode_checked = false; passcode_error = ''; entered_passcode = ''; }} + /> {/if} {:else if is_loading_idb || !event_badge_id}