From 59984fc8be53dfe5b17d45edbe86d16ed92c92aa Mon Sep 17 00:00:00 2001 From: Artem Savchenko Date: Fri, 6 Mar 2026 16:25:30 +0700 Subject: [PATCH 1/2] Make issues read-only for guests Signed-off-by: Artem Savchenko --- .../components/issues/edit/EditIssue.svelte | 38 +++++++++++++------ plugins/tracker-resources/src/utils.ts | 29 +++++++++++++- 2 files changed, 55 insertions(+), 12 deletions(-) diff --git a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte index bd3dd4333bc..bf7de0a5db4 100644 --- a/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte +++ b/plugins/tracker-resources/src/components/issues/edit/EditIssue.svelte @@ -47,6 +47,7 @@ import { createEventDispatcher, onDestroy } from 'svelte' import { generateIssueShortLink, getIssueIdByIdentifier } from '../../../issues' + import { canEditIssue } from '../../../utils' import tracker from '../../../plugin' import IssueStatusActivity from '../IssueStatusActivity.svelte' import ControlPanel from './ControlPanel.svelte' @@ -72,6 +73,18 @@ let descriptionBox: AttachmentStyleBoxCollabEditor let showAllMixins: boolean + let effectiveReadonly = true + $: if (issue !== undefined) { + const currentIssue = issue + void canEditIssue(currentIssue).then((canEdit) => { + if (issue === currentIssue) { + effectiveReadonly = readonly || !canEdit + } + }) + } else { + effectiveReadonly = readonly + } + const inboxClient = InboxNotificationsClientImpl.getClient() let issueId: Ref | undefined @@ -198,7 +211,7 @@ {#if saved} - {#if !readonly} + {#if !effectiveReadonly}