From 1b65b8a2c9177a5252609caf2fba438239ffab3c Mon Sep 17 00:00:00 2001 From: Jared Snider Date: Fri, 30 May 2025 17:32:13 -0400 Subject: [PATCH] PM-20532 - Add first draft of ClaimsPrincipal extension GetSendId for getting send id in send claim protected controller methods. --- .../SendAccessClaimsPrincipalExtensions.cs | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/Core/Auth/UserFeatures/SendAccess/SendAccessClaimsPrincipalExtensions.cs diff --git a/src/Core/Auth/UserFeatures/SendAccess/SendAccessClaimsPrincipalExtensions.cs b/src/Core/Auth/UserFeatures/SendAccess/SendAccessClaimsPrincipalExtensions.cs new file mode 100644 index 0000000000..0bf0777914 --- /dev/null +++ b/src/Core/Auth/UserFeatures/SendAccess/SendAccessClaimsPrincipalExtensions.cs @@ -0,0 +1,23 @@ +using System.Security.Claims; +using Bit.Core.Identity; + +namespace Bit.Core.Auth.UserFeatures.SendAccess; + +// TODO: test this with test file in Tests/Core/Auth/UserFeatures/SendAccess/SendAccessClaimsPrincipalExtensionsTests.cs +public static class SendAccessClaimsPrincipalExtensions +{ + public static Guid GetSendId(this ClaimsPrincipal user) + { + ArgumentNullException.ThrowIfNull(user); + + var sendIdClaim = user.FindFirst(Claims.SendId); + if (sendIdClaim == null) throw new InvalidOperationException("Send ID claim not found."); + + if (!Guid.TryParse(sendIdClaim.Value, out var sendGuid)) + { + throw new InvalidOperationException("Invalid Send ID claim value."); + } + + return sendGuid; + } +}