Skip to content

Commit af3f456

Browse files
committed
feat: 638
Merged PR 202: IP CIDR API Related work items: #638
1 parent 37a8118 commit af3f456

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System.Net;
2+
3+
namespace PortaleFatture.BE.Infrastructure.Common.SEND.ApiKeys.Extensions;
4+
5+
public static class ApiKeysExtensions
6+
{
7+
public static bool VerifyIp(this string? ipAddress)
8+
{
9+
if (string.IsNullOrWhiteSpace(ipAddress))
10+
return false;
11+
12+
if (ipAddress.Contains('/'))
13+
{
14+
try
15+
{
16+
var network = IPNetwork.Parse(ipAddress); // CIDR format
17+
return true;
18+
}
19+
catch
20+
{
21+
return false;
22+
}
23+
}
24+
else
25+
{
26+
return IPAddress.TryParse(ipAddress, out _); // Regular IP
27+
}
28+
}
29+
}

src/Infrastructure/PortaleFatture.BE.Infrastructure/PortaleFatture.BE.Infrastructure.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
<PackageReference Include="Google.Apis.Auth" Version="1.68.0" />
3131
<PackageReference Include="Google.Apis.Gmail.v1" Version="1.68.0.3427" />
3232
<PackageReference Include="Haukcode.WkHtmlToPdfDotNet" Version="1.5.93" />
33+
<PackageReference Include="IPNetwork2" Version="3.1.764" />
3334
<PackageReference Include="MailKit" Version="4.8.0" />
3435
<PackageReference Include="MediatR" Version="12.4.1" />
3536
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.8" />

src/Presentation/PortaleFatture.BE.Api/Modules/SEND/APIKey/ApiKeyModule.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
using PortaleFatture.BE.Api.Infrastructure;
88
using PortaleFatture.BE.Api.Modules.SEND.APIKey.Payload.Request;
99
using PortaleFatture.BE.Core.Auth;
10+
using PortaleFatture.BE.Core.Exceptions;
1011
using PortaleFatture.BE.Core.Resources;
1112
using PortaleFatture.BE.Infrastructure.Common.Identity;
1213
using PortaleFatture.BE.Infrastructure.Common.SEND.ApiKeys.Commands;
1314
using PortaleFatture.BE.Infrastructure.Common.SEND.ApiKeys.Dto;
15+
using PortaleFatture.BE.Infrastructure.Common.SEND.ApiKeys.Extensions;
1416
using PortaleFatture.BE.Infrastructure.Common.SEND.ApiKeys.Queries;
1517
using static Microsoft.AspNetCore.Http.TypedResults;
1618

@@ -58,14 +60,17 @@ private async Task<Results<Ok<bool>, BadRequest>> PostApiKeysIps(
5860
var authInfo = context.GetAuthInfo();
5961

6062

63+
if (!req.IpAddress.VerifyIp())
64+
throw new ValidationException($"L'indirizzo IP '{req.IpAddress}' non è valido.");
65+
6166
var result = await handler.Send(new CreateIpsCommand(authInfo)
6267
{
63-
IpAddress = req.IpAddress
68+
IpAddress = req.IpAddress
6469
});
6570

6671
if (!result.HasValue || result <= 0)
6772
return BadRequest();
68-
return Ok(result > 0);
73+
return Ok(result > 0);
6974
}
7075

7176
[Authorize(Roles = $"{Ruolo.ADMIN}", Policy = Module.SelfCarePolicy)]

0 commit comments

Comments
 (0)