diff --git a/Wave/Components/Pages/ArticleView.razor b/Wave/Components/Pages/ArticleView.razor index ac991aa..f6818c4 100644 --- a/Wave/Components/Pages/ArticleView.razor +++ b/Wave/Components/Pages/ArticleView.razor @@ -54,7 +54,10 @@
- @Localizer["Edit"] + @if (CanEdit) { + @Localizer["Edit"] + } @if (Article.Status is ArticleStatus.Draft) {
@@ -124,6 +127,8 @@ [CascadingParameter] public HttpContext HttpContext { get; set; } = default!; + private bool CanEdit { get; set; } + private Article GetArticlePublic() { if (Article is null) throw new ApplicationException("Article not found."); if (Article.Status >= ArticleStatus.Published && Article.PublishDate <= DateTimeOffset.UtcNow) { @@ -138,17 +143,21 @@ // The Article is publicly available if (Article.Status >= ArticleStatus.Published && Article.PublishDate <= DateTimeOffset.UtcNow) { + if (principal.IsInRole("Admin")) + CanEdit = true; return Article; } // Admins always get access if (principal.IsInRole("Admin")) { + CanEdit = true; return Article; } // You can only access your own drafts if (Article.Status is ArticleStatus.Draft) { if (Article.Author.Id == principal.FindFirst("Id")!.Value) { + CanEdit = true; return Article; } throw new ApplicationException("Cannot access draft article without being author or admin."); @@ -156,6 +165,7 @@ // InReview Articles can only be accessed by reviewers if (Article.Status is ArticleStatus.InReview) { if (principal.IsInRole("Reviewer")) { + CanEdit = true; return Article; } throw new ApplicationException("Cannot access in-review article without being a reviewer or admin."); diff --git a/Wave/Components/ReaderToggle.razor b/Wave/Components/ReaderToggle.razor index ef977af..3187f33 100644 --- a/Wave/Components/ReaderToggle.razor +++ b/Wave/Components/ReaderToggle.razor @@ -1,4 +1,4 @@ -