summaryrefslogtreecommitdiff
path: root/CoreWiki/Pages/Create.cshtml.cs
diff options
context:
space:
mode:
authorPaweł Bernaciak <pawelbernaciak@zohomail.eu>2023-12-22 16:02:41 +0100
committerPaweł Bernaciak <pawelbernaciak@zohomail.eu>2023-12-22 16:02:41 +0100
commit1a96616699ab41bf6343bc1acc45a836c3e6caf3 (patch)
treeaff3d8bb8418355d3a8279024afaa13f196a0506 /CoreWiki/Pages/Create.cshtml.cs
parent7fefe217c8462444ecb9806599e70afe2a7102ea (diff)
Backup
Diffstat (limited to 'CoreWiki/Pages/Create.cshtml.cs')
-rw-r--r--CoreWiki/Pages/Create.cshtml.cs14
1 files changed, 11 insertions, 3 deletions
diff --git a/CoreWiki/Pages/Create.cshtml.cs b/CoreWiki/Pages/Create.cshtml.cs
index d89b97b..0bf9327 100644
--- a/CoreWiki/Pages/Create.cshtml.cs
+++ b/CoreWiki/Pages/Create.cshtml.cs
@@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using CoreWiki.Models;
+using CoreWiki.Utils;
using NodaTime;
namespace CoreWiki.Pages
@@ -30,19 +31,26 @@ namespace CoreWiki.Pages
public Article Article { get; set; } = default!;
- // To protect from overposting attacks, see https://aka.ms/RazorPagesCRUD
public async Task<IActionResult> OnPostAsync()
{
- if (!ModelState.IsValid || _context.Articles == null || Article == null)
+ ModelState.Remove("Article.Slug");
+ if (!ModelState.IsValid)
{
return Page();
}
+ Article.Slug = SafeUrl.Create(true, Article.Topic);
Article.Published = _clock.GetCurrentInstant();
+ if (_context.Articles.Any(a => a.Slug == Article.Slug))
+ {
+ ModelState.AddModelError("Article.Topic", "Article already exists");
+ return Page();
+ }
+
_context.Articles.Add(Article);
await _context.SaveChangesAsync();
- return Redirect($"/{Article.Topic}");
+ return Redirect($"/{Article.Slug}");
}
}
}