From 4fe45ac64286038ab2910418de57b13b70d45b02 Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Thu, 25 Jun 2026 23:53:16 +0100 Subject: [PATCH] fix(dashboard): course menu icons, delete scroll, and settings tags auth (#691) * fix(dashboard): course menu icons, delete scroll, and settings tags auth Remove inconsistent dropdown icons, scroll to settings sections for delete and related actions when already on the settings page, and skip org tag group fetches for non-admin users to avoid ORG_TEAM_NOT_AUTHORIZED errors. * fix(api): allow org members to fetch organization tags Use orgMemberMiddleware for GET /organization/tags instead of restricting reads to admins. Revert the dashboard settings workaround that skipped tag group fetches for non-admin users. --------- --- apps/api/src/routes/organization/tags.ts | 3 +- .../course-context-menu-content.svelte | 41 ++++++++++++++----- .../lib/features/course/pages/settings.svelte | 11 +++++ 3 files changed, 43 insertions(+), 12 deletions(-) diff --git a/apps/api/src/routes/organization/tags.ts b/apps/api/src/routes/organization/tags.ts index 9477c5fc..b39c3b1d 100644 --- a/apps/api/src/routes/organization/tags.ts +++ b/apps/api/src/routes/organization/tags.ts @@ -23,6 +23,7 @@ import { authMiddleware } from '@api/middlewares/auth'; import { authOrAutomationKeyMiddleware } from '@api/middlewares/auth-or-automation-key'; import { handleError } from '@api/utils/errors'; import { orgAdminMiddleware } from '@api/middlewares/org-admin'; +import { orgMemberMiddleware } from '@api/middlewares/org-member'; import { orgAdminOrAutomationKeyMiddleware } from '@api/middlewares/org-admin-or-automation-key'; import { assertMcpAutomationUsageAllowed, recordMcpAutomationUsage } from '@api/services/organization/automation-usage'; import { zValidator } from '@hono/zod-validator'; @@ -44,7 +45,7 @@ export const tagsRouter = new Hono() return handleError(c, error, 'Failed to fetch public tags'); } }) - .get('/', authMiddleware, orgAdminMiddleware, async (c) => { + .get('/', authMiddleware, orgMemberMiddleware, async (c) => { try { const orgId = c.req.header('cio-org-id')!; const groups = await getOrganizationTagGroups(orgId); diff --git a/apps/dashboard/src/lib/features/course/components/course-context-menu-content.svelte b/apps/dashboard/src/lib/features/course/components/course-context-menu-content.svelte index dfd90821..415e52e0 100644 --- a/apps/dashboard/src/lib/features/course/components/course-context-menu-content.svelte +++ b/apps/dashboard/src/lib/features/course/components/course-context-menu-content.svelte @@ -1,8 +1,6 @@