diff --git a/IntelliTect.Multitool.Tests/ClaimsPrincipalExtensionsTests.cs b/IntelliTect.Multitool.Tests/ClaimsPrincipalExtensionsTests.cs deleted file mode 100644 index a6052db..0000000 --- a/IntelliTect.Multitool.Tests/ClaimsPrincipalExtensionsTests.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Security.Claims; -using System.Security.Principal; -using Xunit; - -namespace IntelliTect.Multitool.Security.Tests; - -public class ClaimsPrincipalExtensionsTests -{ - static readonly string[] roles = ["Foo", "Bar"]; - static readonly string[] singleRole = ["Bar"]; - - [Fact] - public void GetRoles_WhenClaimsPrincipalNull_Should_Throw() - { - ClaimsPrincipal? sut = null; - - Assert.Throws(() => sut!.GetRoles()); - } - - [Fact] - public void GetRoles_WhenClaimsPrincipalHasNoRoles_Should_ReturnEmpty() - { - ClaimsPrincipal sut = new(); - - Assert.Empty(sut.GetRoles()); - } - - [Fact] - public void GetRoles_WhenClaimsPrincipalHasRoles_Should_ReturnNotEmpty() - { - ClaimsPrincipal sut = new GenericPrincipal(new GenericIdentity("Uncle Festus"), roles); - - Assert.Collection(sut.GetRoles(), s => Assert.Equal("Foo", s), t => Assert.Equal("Bar", t)); - } - - [Fact] - public void GetUserId_WhenClaimsPrincipalNull_Should_Throw() - { - ClaimsPrincipal? sut = null; - - Assert.Throws(() => sut!.GetUserId()); - } - - [Fact] - public void GetUserId_WhenClaimsPrincipalHasNoProperty_Should_ReturnNull() - { - ClaimsPrincipal sut = new(); - - Assert.Null(sut.GetUserId()); - } - - [Fact] - public void GetUserId_WhenClaimsPrincipalHasId_Should_ReturnString() - { - ClaimsPrincipal sut = new GenericPrincipal(new GenericIdentity("Taki The Frog"), singleRole); - - Assert.Equal("Taki The Frog", sut.GetUserId()); - } -} \ No newline at end of file diff --git a/IntelliTect.Multitool/Security/ClaimsPrincipalExtensions.cs b/IntelliTect.Multitool/Security/ClaimsPrincipalExtensions.cs deleted file mode 100644 index f9bb265..0000000 --- a/IntelliTect.Multitool/Security/ClaimsPrincipalExtensions.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Security.Claims; - -namespace IntelliTect.Multitool.Security; - -/// -/// Gets information from a -/// -public static class ClaimsPrincipalExtensions -{ - /// - /// Gets the user ID from a . - /// - /// The to find a user ID for. - /// A , or null if the doesn't contain a . - /// principal is null. - public static string? GetUserId(this ClaimsPrincipal principal) - { - if (principal is null) throw new ArgumentNullException(nameof(principal)); - - Claim? claim = principal.FindFirst(ClaimTypes.NameIdentifier); - if (claim is null) - { - claim = principal.FindFirst(ClaimTypes.Name); - return claim?.Value; - } - - return claim.Value; - } - - /// - /// Gets all the roles a belongs to. - /// - /// The to find roles for. - /// An of if found, or an empty set. - /// principal is null. - public static IEnumerable GetRoles(this ClaimsPrincipal principal) - { - if (principal is null) throw new ArgumentNullException(nameof(principal)); - - IEnumerable claims = principal.FindAll(ClaimTypes.Role); - return claims.Select(claim => claim.Value); - } -} \ No newline at end of file diff --git a/README.md b/README.md index 6e5a973..db7032e 100644 --- a/README.md +++ b/README.md @@ -52,12 +52,6 @@ string fullPathToTheFile = Path.Combine(IntelliTect.Multitool.RepositoryPaths.GetDefaultRepoRoot(), "TheFile.txt"); ``` -## Security - -- ClaimsPrincipalExtensions: Extension methods to get a user ID and roles. - - `GetUserId` - - `GetRoles` - ## Extensions - StringExtensions: Extension methods for `System.String`