fixed Delete Confirm Page not allowing you to delete your own drafts

This commit is contained in:
Mia Rose Winter 2024-03-27 12:14:53 +01:00
parent b79881f98d
commit 37f84da148
Signed by: miawinter
GPG key ID: 4B6F6A83178F595E

View file

@ -1,8 +1,7 @@
@page "/article/{id:guid}/delete" @page "/article/{id:guid}/delete"
@using Microsoft.EntityFrameworkCore @using Microsoft.EntityFrameworkCore
@using Wave.Data @using Wave.Data
@using Wave.Utilities
@attribute [Authorize(Policy = "ArticleDeletePermissions")]
@inject IDbContextFactory<ApplicationDbContext> ContextFactory @inject IDbContextFactory<ApplicationDbContext> ContextFactory
@inject NavigationManager Navigation @inject NavigationManager Navigation
@ -36,6 +35,8 @@
@code { @code {
[CascadingParameter(Name = "TitlePostfix")] [CascadingParameter(Name = "TitlePostfix")]
private string TitlePostfix { get; set; } = default!; private string TitlePostfix { get; set; } = default!;
[CascadingParameter]
public HttpContext HttpContext { get; set; } = default!;
[Parameter] [Parameter]
public Guid Id { get; set; } public Guid Id { get; set; }
@ -45,15 +46,16 @@
protected override async Task OnInitializedAsync() { protected override async Task OnInitializedAsync() {
await using var context = await ContextFactory.CreateDbContextAsync(); await using var context = await ContextFactory.CreateDbContextAsync();
Article = await context.Set<Article>().IgnoreQueryFilters() var article = await context.Set<Article>().IgnoreQueryFilters()
.Where(a => !a.IsDeleted).FirstOrDefaultAsync(a => a.Id == Id); .Where(a => !a.IsDeleted).FirstOrDefaultAsync(a => a.Id == Id);
if (article.AllowedToDelete(HttpContext.User)) Article = article;
} }
private async Task Delete() { private async Task Delete() {
if (Article is null) return; if (Article.AllowedToDelete(HttpContext.User)) return;
var context = await ContextFactory.CreateDbContextAsync(); var context = await ContextFactory.CreateDbContextAsync();
Article.IsDeleted = true; Article!.IsDeleted = true;
context.Entry(Article).State = EntityState.Modified; context.Entry(Article).State = EntityState.Modified;
await context.SaveChangesAsync(); await context.SaveChangesAsync();