Backend/e-suite.API/eSuite.API/Controllers/BlockedIPsController.cs
2026-01-20 21:50:10 +00:00

61 lines
2.2 KiB
C#

using e_suite.API.Common;
using e_suite.Utilities.Pagination;
using eSuite.API.Models;
using eSuite.API.security;
using eSuite.API.Utilities;
using eSuite.Core.Security;
using Microsoft.AspNetCore.Mvc;
namespace eSuite.API.Controllers;
/// <summary>
/// This part of the API is responsible for maintaining blocked IPs within e-suite
/// </summary>
[Route("api/[controller]")]
[ApiController]
public class BlockedIPsController : ESuiteControllerBase
{
private readonly IBlockedIPsManager _blockedIPsManager;
/// <summary>
/// Default constructor used for dependency injection
/// </summary>
public BlockedIPsController(IBlockedIPsManager blockedIPsManager)
{
_blockedIPsManager = blockedIPsManager;
}
/// <summary>
/// Returns a list of all the blocked IP address in the system
/// </summary>
/// <remarks>This returns all the blocked IP address in the system.</remarks>
/// <param name="paging"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[Route("blockedIPs")]
[HttpGet]
[AccessKey(SecurityAccess.ViewBlockedIPAddresses)]
[ProducesResponseType(StatusCodes.Status200OK)]
public async Task<IActionResult> Get([FromQuery] Paging paging, CancellationToken cancellationToken = default!)
{
var result = await _blockedIPsManager.GetBlockedIPs(paging, cancellationToken);
return Ok(result);
}
/// <summary>
/// Unblock an IP address
/// </summary>
/// <param name="blockedIPAddress"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
[Route("delete")]
[HttpDelete]
[AccessKey(SecurityAccess.UnlockIPAddress)]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> Delete([FromBody] BlockedIPAddress blockedIPAddress, CancellationToken cancellationToken)
{
await _blockedIPsManager.UnblockIPAddress(AuditUserDetails, blockedIPAddress.IpAddress, cancellationToken);
return Ok();
}
}