Skip to content

Commit d8df3de

Browse files
committed
Add granular permission checks to controllers
Replaced generic [Authorize] attribute with [PermissionAuthorize] to enforce action-specific permissions for Products and ProductCategories controllers. This ensures actions like View, Create, Edit, and Delete are secured with distinct permission requirements.
1 parent 7c49a0d commit d8df3de

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

Controllers/ProductCategoriesController.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
using AdminHubApi.Dtos.ProductCategory;
1+
using AdminHubApi.Constants;
2+
using AdminHubApi.Dtos.ProductCategory;
23
using AdminHubApi.Entities;
34
using AdminHubApi.Interfaces;
5+
using AdminHubApi.Security;
46
using Microsoft.AspNetCore.Authorization;
57
using Microsoft.AspNetCore.Mvc;
68

79
namespace AdminHubApi.Controllers;
810

911
[ApiController]
1012
[Route("api/product-categories")]
11-
[Authorize]
13+
[PermissionAuthorize(Permissions.ProductCategories.View)]
1214
public class ProductCategoriesController : ControllerBase
1315
{
1416
private readonly IProductCategoryService _productCategoryService;
@@ -43,6 +45,7 @@ public async Task<ActionResult<ProductCategory>> GetCategory(Guid id)
4345
}
4446

4547
[HttpPost]
48+
[PermissionAuthorize(Permissions.ProductCategories.Create)]
4649
public async Task<ActionResult<ProductCategory>> CreateCategory(CreateProductCategoryDto productCategoryDto)
4750
{
4851
var productCategory = new ProductCategory
@@ -67,6 +70,7 @@ public async Task<ActionResult<ProductCategory>> CreateCategory(CreateProductCat
6770
}
6871

6972
[HttpPut("{id}")]
73+
[PermissionAuthorize(Permissions.ProductCategories.Edit)]
7074
public async Task<IActionResult> UpdateCategory(Guid id, UpdateProductCategoryDto updateProductCategoryDto)
7175
{
7276
var productCategoryResponse = await _productCategoryService.GetByIdAsync(id);
@@ -89,6 +93,7 @@ public async Task<IActionResult> UpdateCategory(Guid id, UpdateProductCategoryDt
8993
}
9094

9195
[HttpDelete("{id}")]
96+
[PermissionAuthorize(Permissions.ProductCategories.Delete)]
9297
public async Task<IActionResult> DeleteCategory(Guid id)
9398
{
9499
var productCategoryResponse = await _productCategoryService.GetByIdAsync(id);

Controllers/ProductsController.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1-
using AdminHubApi.Dtos.Products;
1+
using AdminHubApi.Constants;
2+
using AdminHubApi.Dtos.Products;
23
using AdminHubApi.Entities;
34
using AdminHubApi.Interfaces;
5+
using AdminHubApi.Security;
46
using Microsoft.AspNetCore.Authorization;
57
using Microsoft.AspNetCore.Mvc;
68

79
namespace AdminHubApi.Controllers;
810

911
[ApiController]
1012
[Route("/api/products")]
13+
[PermissionAuthorize(Permissions.Products.View)]
1114
public class ProductsController : ControllerBase
1215
{
1316
private readonly IProductService _productService;
@@ -41,6 +44,7 @@ public async Task<ActionResult<ProductDto>> GetProductById(Guid id)
4144
}
4245

4346
[HttpPost]
47+
[PermissionAuthorize(Permissions.Products.Create)]
4448
public async Task<ActionResult> CreateProduct(CreateProductDto createProductDto)
4549
{
4650
var product = new Product
@@ -70,7 +74,7 @@ public async Task<ActionResult> CreateProduct(CreateProductDto createProductDto)
7074
}
7175

7276
[HttpPut("{id}")]
73-
[Authorize]
77+
[PermissionAuthorize(Permissions.Products.Edit)]
7478
public async Task<IActionResult> UpdateProduct(Guid id, UpdateProductDto updateProductDto)
7579
{
7680
var productResponse = await _productService.GetByIdAsync(id);
@@ -92,7 +96,7 @@ public async Task<IActionResult> UpdateProduct(Guid id, UpdateProductDto updateP
9296
}
9397

9498
[HttpDelete("{id}")]
95-
[Authorize]
99+
[PermissionAuthorize(Permissions.Products.Delete)]
96100
public async Task<IActionResult> DeleteProduct(Guid id)
97101
{
98102
var productResponse = await _productService.GetByIdAsync(id);

0 commit comments

Comments
 (0)