Fix admin route access and backend configuration
- Added /admin redirect to login page in nginx config - Fixed backend server.js route ordering for proper admin handling - Updated authentication middleware and routes - Added user management routes - Configured PostgreSQL integration - Updated environment configuration
This commit is contained in:
93
Controllers/AdminBlogController.cs
Normal file
93
Controllers/AdminBlogController.cs
Normal file
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SkyArtShop.Models;
|
||||
using SkyArtShop.Services;
|
||||
|
||||
namespace SkyArtShop.Controllers;
|
||||
|
||||
[Route("admin/blog")]
|
||||
[Authorize(Roles = "Admin,MasterAdmin")]
|
||||
public class AdminBlogController : Controller
|
||||
{
|
||||
private readonly PostgreSQLService _pgService;
|
||||
|
||||
private readonly SlugService _slugService;
|
||||
|
||||
private readonly string _blogCollection = "BlogPosts";
|
||||
|
||||
public AdminBlogController(PostgreSQLService pgService, SlugService slugService)
|
||||
{
|
||||
_pgService = pgService;
|
||||
_slugService = slugService;
|
||||
}
|
||||
|
||||
[HttpGet("")]
|
||||
public async Task<IActionResult> Index()
|
||||
{
|
||||
return View((await _pgService.GetAllAsync<BlogPost>(_blogCollection)).OrderByDescending((BlogPost p) => p.CreatedAt).ToList());
|
||||
}
|
||||
|
||||
[HttpGet("create")]
|
||||
public IActionResult Create()
|
||||
{
|
||||
return View(new BlogPost());
|
||||
}
|
||||
|
||||
[HttpPost("create")]
|
||||
public async Task<IActionResult> Create(BlogPost post)
|
||||
{
|
||||
if (!base.ModelState.IsValid)
|
||||
{
|
||||
return View(post);
|
||||
}
|
||||
post.CreatedAt = DateTime.UtcNow;
|
||||
post.UpdatedAt = DateTime.UtcNow;
|
||||
post.PublishedDate = DateTime.UtcNow;
|
||||
post.Slug = _slugService.GenerateSlug(post.Title);
|
||||
await _pgService.InsertAsync(_blogCollection, post);
|
||||
base.TempData["SuccessMessage"] = "Blog post created successfully!";
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
[HttpGet("edit/{id}")]
|
||||
public async Task<IActionResult> Edit(string id)
|
||||
{
|
||||
BlogPost blogPost = await _pgService.GetByIdAsync<BlogPost>(_blogCollection, id);
|
||||
if (blogPost == null)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
return View(blogPost);
|
||||
}
|
||||
|
||||
[HttpPost("edit/{id}")]
|
||||
public async Task<IActionResult> Edit(string id, BlogPost post)
|
||||
{
|
||||
if (!base.ModelState.IsValid)
|
||||
{
|
||||
return View(post);
|
||||
}
|
||||
post.Id = id;
|
||||
post.UpdatedAt = DateTime.UtcNow;
|
||||
post.Slug = _slugService.GenerateSlug(post.Title);
|
||||
await _pgService.UpdateAsync(_blogCollection, id, post);
|
||||
base.TempData["SuccessMessage"] = "Blog post updated successfully!";
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
[HttpPost("delete/{id}")]
|
||||
public async Task<IActionResult> Delete(string id)
|
||||
{
|
||||
await _pgService.DeleteAsync<BlogPost>(_blogCollection, id);
|
||||
base.TempData["SuccessMessage"] = "Blog post deleted successfully!";
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
private string GenerateSlug(string text)
|
||||
{
|
||||
return _slugService.GenerateSlug(text);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user