source: ChapterX.API/Controllers/AdminsController.cs

main
Last change on this file was b373fea, checked in by kikisrbinoska <srbinoskakristina07@…>, 12 days ago

Fixes for authentication and auhtorization\

  • Property mode set to 100644
File size: 2.3 KB
Line 
1using ChapterX.Application.Admin.Commands;
2using ChapterX.Application.Admin.Queries;
3using MediatR;
4using Microsoft.AspNetCore.Authorization;
5using Microsoft.AspNetCore.Mvc;
6using Microsoft.Extensions.Logging;
7
8namespace ChapterX.API.Controllers
9{
10 [Route("api/[controller]")]
11 [ApiController]
12 public class AdminsController : ControllerBase
13 {
14 private readonly IMediator _mediator;
15 private readonly ILogger<AdminsController> _logger;
16
17 public AdminsController(IMediator mediator, ILogger<AdminsController> logger)
18 {
19 _mediator = mediator;
20 _logger = logger;
21 }
22
23 [HttpGet]
24 [AllowAnonymous]
25 public async Task<ActionResult> GetAll()
26 {
27 _logger.LogInformation("Fetching all admins");
28 var response = await _mediator.Send(new GetAllRequest());
29 return Ok(response);
30 }
31
32 [HttpGet("{id:int}")]
33 [AllowAnonymous]
34 public async Task<ActionResult> GetById(int id)
35 {
36 _logger.LogInformation("Fetching admin with ID: {AdminId}", id);
37 var response = await _mediator.Send(new GetRequest(id));
38 return Ok(response);
39 }
40
41 [HttpPost]
42 [Authorize(Roles = "Admin")]
43 public async Task<ActionResult> Add([FromBody] AddRequest request)
44 {
45 _logger.LogInformation("Adding a new admin for UserId: {UserId}", request.UserId);
46 var response = await _mediator.Send(request);
47 return Ok(response);
48 }
49
50 [HttpPut("{id:int}")]
51 [Authorize(Roles = "Admin")]
52 public async Task<ActionResult> Update(int id, [FromBody] UpdateRequest request)
53 {
54 _logger.LogInformation("Updating admin with ID: {AdminId}", id);
55 if (id != request.Id)
56 {
57 return BadRequest("Route ID and body ID must match.");
58 }
59
60 var response = await _mediator.Send(request);
61 return Ok(response);
62 }
63
64 [HttpDelete("{id:int}")]
65 [Authorize(Roles = "Admin")]
66 public async Task<ActionResult> Delete(int id)
67 {
68 _logger.LogInformation("Deleting admin with ID: {AdminId}", id);
69 var response = await _mediator.Send(new DeleteRequest(id));
70 return Ok(response);
71 }
72 }
73}
74
Note: See TracBrowser for help on using the repository browser.