Skip to content

Commit 1799ac8

Browse files
authored
Merge pull request #108 from dlmelendez/rel/8.0
Rel/8.0
2 parents 5aa94df + a04fa71 commit 1799ac8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+1289
-204
lines changed

ElCamino.AspNetCore.Identity.AzureTable.sln

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElCamino.AspNetCore.Identit
2121
EndProject
2222
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElCamino.AspNetCore.Identity.AzureTable.Model", "src\ElCamino.AspNetCore.Identity.AzureTable.Model\ElCamino.AspNetCore.Identity.AzureTable.Model.csproj", "{C90FB0E3-5BE2-41E7-9DA3-9083C7700F91}"
2323
EndProject
24-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElCamino.Azure.Data.Tables", "src\ElCamino.Azure.Data.Tables\ElCamino.Azure.Data.Tables.csproj", "{DAF57676-8534-4A62-BC7B-317753F2A275}"
24+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElCamino.Azure.Data.Tables", "src\ElCamino.Azure.Data.Tables\ElCamino.Azure.Data.Tables.csproj", "{DAF57676-8534-4A62-BC7B-317753F2A275}"
25+
EndProject
26+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElCamino.Azure.Data.Tables.Tests", "tests\ElCamino.Azure.Data.Tables.Tests\ElCamino.Azure.Data.Tables.Tests.csproj", "{7A71EC75-781D-42AB-BDF0-C2B6D4EF2B10}"
2527
EndProject
2628
Global
2729
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -66,6 +68,12 @@ Global
6668
{DAF57676-8534-4A62-BC7B-317753F2A275}.Release|Any CPU.Build.0 = Release|Any CPU
6769
{DAF57676-8534-4A62-BC7B-317753F2A275}.Signed|Any CPU.ActiveCfg = Debug|Any CPU
6870
{DAF57676-8534-4A62-BC7B-317753F2A275}.Signed|Any CPU.Build.0 = Debug|Any CPU
71+
{7A71EC75-781D-42AB-BDF0-C2B6D4EF2B10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
72+
{7A71EC75-781D-42AB-BDF0-C2B6D4EF2B10}.Debug|Any CPU.Build.0 = Debug|Any CPU
73+
{7A71EC75-781D-42AB-BDF0-C2B6D4EF2B10}.Release|Any CPU.ActiveCfg = Release|Any CPU
74+
{7A71EC75-781D-42AB-BDF0-C2B6D4EF2B10}.Release|Any CPU.Build.0 = Release|Any CPU
75+
{7A71EC75-781D-42AB-BDF0-C2B6D4EF2B10}.Signed|Any CPU.ActiveCfg = Debug|Any CPU
76+
{7A71EC75-781D-42AB-BDF0-C2B6D4EF2B10}.Signed|Any CPU.Build.0 = Debug|Any CPU
6977
EndGlobalSection
7078
GlobalSection(SolutionProperties) = preSolution
7179
HideSolutionNode = FALSE

src/ElCamino.AspNetCore.Identity.AzureTable.Model/ElCamino.AspNetCore.Identity.AzureTable.Model.csproj

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<Copyright>Copyright © 2023 David Melendez, MIT License</Copyright>
66
<AssemblyTitle>Azure Table Storage Provider for ASP.NET Identity Core Models</AssemblyTitle>
77
<Authors>David Melendez</Authors>
8-
<TargetFrameworks>netstandard2.0;net6.0;net7.0</TargetFrameworks>
8+
<TargetFrameworks>netstandard2.0;net6.0;net8.0</TargetFrameworks>
99
<LangVersion>11.0</LangVersion>
1010
<AssemblyName>ElCamino.AspNetCore.Identity.AzureTable.Model</AssemblyName>
1111
<AssemblyOriginatorKeyFile>../../tools/Key.snk</AssemblyOriginatorKeyFile>
@@ -22,24 +22,25 @@
2222
<RepositoryType>git</RepositoryType>
2323
<RepositoryUrl>https://github.com/dlmelendez/identityazuretable.git</RepositoryUrl>
2424
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
25-
<Version>7.1</Version>
25+
<Version>8.0</Version>
2626
<Nullable>enable</Nullable>
2727
<PackageProjectUrl>https://dlmelendez.github.io/identityazuretable</PackageProjectUrl>
2828
<!--<DebugType>Full</DebugType>-->
2929
<!-- DebugType Full is needed for test code coverage, but .nuget symbols doesn't like it-->
3030
<PackageLicenseExpression>MIT</PackageLicenseExpression>
3131
<IncludeSymbols>true</IncludeSymbols>
3232
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
33+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
3334
</PropertyGroup>
3435

3536
<ItemGroup>
3637
<PackageReference Include="Azure.Data.Tables" Version="12.8.1" />
3738
</ItemGroup>
38-
<ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
39-
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="7.0.13" />
39+
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
40+
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="8.0.0" />
4041
</ItemGroup>
4142

42-
<ItemGroup Condition=" '$(TargetFramework)' != 'net7.0' ">
43+
<ItemGroup Condition=" '$(TargetFramework)' != 'net8.0' ">
4344
<PackageReference Include="Microsoft.Extensions.Identity.Stores" Version="6.0.24" />
4445
</ItemGroup>
4546

src/ElCamino.AspNetCore.Identity.AzureTable.Model/IGenerateKeys.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,27 @@
22

33
namespace ElCamino.AspNetCore.Identity.AzureTable.Model
44
{
5+
/// <summary>
6+
/// Generates keys suitable for table storage
7+
/// </summary>
58
public interface IGenerateKeys
69
{
10+
/// <summary>
11+
/// Accept the keyhelper to generate keys for an entity
12+
/// </summary>
13+
/// <param name="keyHelper"></param>
714
void GenerateKeys(IKeyHelper keyHelper);
815

16+
/// <summary>
17+
/// Returns the rowkey for the entity without setting it
18+
/// </summary>
19+
/// <param name="keyHelper"></param>
20+
/// <returns></returns>
921
string PeekRowKey(IKeyHelper keyHelper);
1022

23+
/// <summary>
24+
/// Key Version for the entity
25+
/// </summary>
1126
double KeyVersion { get; set; }
1227
}
1328
}

src/ElCamino.AspNetCore.Identity.AzureTable.Model/IKeyHelper.cs

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,62 +2,231 @@
22

33
namespace ElCamino.AspNetCore.Identity.AzureTable.Model
44
{
5+
/// <summary>
6+
/// Manages all table storage keys
7+
/// </summary>
58
public interface IKeyHelper
69
{
10+
/// <summary>
11+
/// Key prefix for IdentityUserClaim
12+
/// </summary>
713
string PreFixIdentityUserClaim { get; }
14+
15+
/// <summary>
16+
/// Key prefix for IdentityUserClaimUpperBound
17+
/// </summary>
818
string PreFixIdentityUserClaimUpperBound { get; }
19+
20+
/// <summary>
21+
/// Key prefix for IdentityUserRole
22+
/// </summary>
923
string PreFixIdentityUserRole { get; }
24+
25+
/// <summary>
26+
/// Key prefix for IdentityUserRoleUpperBound
27+
/// </summary>
1028
string PreFixIdentityUserRoleUpperBound { get; }
29+
30+
/// <summary>
31+
/// Key prefix for IdentityUserLogin
32+
/// </summary>
1133
string PreFixIdentityUserLogin { get; }
34+
35+
/// <summary>
36+
/// Key prefix for IdentityUserLoginUpperBound
37+
/// </summary>
1238
string PreFixIdentityUserLoginUpperBound { get; }
39+
40+
/// <summary>
41+
/// Key prefix for IdentityUserEmail
42+
/// </summary>
1343
string PreFixIdentityUserEmail { get; }
44+
45+
/// <summary>
46+
/// Key prefix for IdentityUserToken
47+
/// </summary>
1448
string PreFixIdentityUserToken { get; }
49+
50+
/// <summary>
51+
/// Key prefix for IdentityUserId
52+
/// </summary>
1553
string PreFixIdentityUserId { get; }
54+
55+
/// <summary>
56+
/// Key prefix for IdentityUserIdUpperBound
57+
/// </summary>
1658
string PreFixIdentityUserIdUpperBound { get; }
59+
60+
/// <summary>
61+
/// Key prefix for IdentityUserName
62+
/// </summary>
1763
string PreFixIdentityUserName { get; }
1864

65+
/// <summary>
66+
/// Key Formatter for IdentityUserClaim
67+
/// </summary>
1968
string FormatterIdentityUserClaim { get; }
69+
70+
/// <summary>
71+
/// Key Formatter for IdentityUserRole
72+
/// </summary>
2073
string FormatterIdentityUserRole { get; }
74+
75+
/// <summary>
76+
/// Key Formatter for IdentityUserLogin
77+
/// </summary>
2178
string FormatterIdentityUserLogin { get; }
79+
80+
/// <summary>
81+
/// Key Formatter for IdentityUserEmail
82+
/// </summary>
2283
string FormatterIdentityUserEmail { get; }
84+
85+
/// <summary>
86+
/// Key Formatter for IdentityUserToken
87+
/// </summary>
2388
string FormatterIdentityUserToken { get; }
89+
90+
/// <summary>
91+
/// Key Formatter for IdentityUserId
92+
/// </summary>
2493
string FormatterIdentityUserId { get; }
94+
95+
/// <summary>
96+
/// Key Formatter for IdentityUserName
97+
/// </summary>
2598
string FormatterIdentityUserName { get; }
2699

100+
/// <summary>
101+
/// Key prefix for IdentityRole
102+
/// </summary>
27103
string PreFixIdentityRole { get; }
104+
105+
/// <summary>
106+
/// Key prefix for IdentityRoleUpperBound
107+
/// </summary>
28108
string PreFixIdentityRoleUpperBound { get; }
109+
110+
/// <summary>
111+
/// Key prefix for IdentityRoleClaim
112+
/// </summary>
29113
string PreFixIdentityRoleClaim { get; }
114+
115+
/// <summary>
116+
/// Key Formatter for IdentityRole
117+
/// </summary>
30118
string FormatterIdentityRole { get; }
119+
120+
/// <summary>
121+
/// Key Formatter for IdentityRoleClaim
122+
/// </summary>
31123
string FormatterIdentityRoleClaim { get; }
32124

125+
/// <summary>
126+
/// Generate key for PartitionKeyIndexByLogin
127+
/// </summary>
128+
/// <param name="plainLoginProvider"></param>
129+
/// <param name="plainProviderKey"></param>
130+
/// <returns></returns>
33131
string GeneratePartitionKeyIndexByLogin(string plainLoginProvider, string plainProviderKey);
34132

133+
/// <summary>
134+
/// Generate key for RowKeyUserEmail
135+
/// </summary>
136+
/// <param name="plainEmail"></param>
137+
/// <returns></returns>
35138
string GenerateRowKeyUserEmail(string? plainEmail);
36139

140+
/// <summary>
141+
/// Generate key for UserId
142+
/// </summary>
143+
/// <returns></returns>
37144
string GenerateUserId();
38145

146+
/// <summary>
147+
/// Generate key for RowKeyUserName
148+
/// </summary>
149+
/// <param name="plainUserName"></param>
150+
/// <returns></returns>
39151
string GenerateRowKeyUserName(string? plainUserName);
40152

153+
/// <summary>
154+
/// Generate key for PartitionKeyUserName
155+
/// </summary>
156+
/// <param name="plainUserName"></param>
157+
/// <returns></returns>
41158
string GeneratePartitionKeyUserName(string? plainUserName);
42159

160+
/// <summary>
161+
/// Generate key for RowKeyUserId
162+
/// </summary>
163+
/// <param name="plainUserId"></param>
164+
/// <returns></returns>
43165
string GenerateRowKeyUserId(string? plainUserId);
44166

167+
/// <summary>
168+
/// Generate key for RowKeyIdentityUserRole
169+
/// </summary>
170+
/// <param name="plainRoleName"></param>
171+
/// <returns></returns>
45172
string GenerateRowKeyIdentityUserRole(string? plainRoleName);
46173

174+
/// <summary>
175+
/// Generate key for RowKeyIdentityRole
176+
/// </summary>
177+
/// <param name="plainRoleName"></param>
178+
/// <returns></returns>
47179
string GenerateRowKeyIdentityRole(string? plainRoleName);
48180

181+
/// <summary>
182+
/// Generate key for PartitionKeyIdentityRole
183+
/// </summary>
184+
/// <param name="plainRoleName"></param>
185+
/// <returns></returns>
49186
string GeneratePartitionKeyIdentityRole(string? plainRoleName);
50187

188+
/// <summary>
189+
/// Generate key for RowKeyIdentityUserClaim
190+
/// </summary>
191+
/// <param name="claimType"></param>
192+
/// <param name="claimValue"></param>
193+
/// <returns></returns>
51194
string GenerateRowKeyIdentityUserClaim(string? claimType, string? claimValue);
52195

196+
/// <summary>
197+
/// Generate key for RowKeyIdentityRoleClaim
198+
/// </summary>
199+
/// <param name="claimType"></param>
200+
/// <param name="claimValue"></param>
201+
/// <returns></returns>
53202
string GenerateRowKeyIdentityRoleClaim(string? claimType, string? claimValue);
54203

204+
/// <summary>
205+
/// Generate key for RowKeyIdentityUserToken
206+
/// </summary>
207+
/// <param name="loginProvider"></param>
208+
/// <param name="tokenName"></param>
209+
/// <returns></returns>
55210
string GenerateRowKeyIdentityUserToken(string? loginProvider, string? tokenName);
56211

212+
/// <summary>
213+
/// Generate key for RowKeyIdentityUserLogin
214+
/// </summary>
215+
/// <param name="loginProvider"></param>
216+
/// <param name="providerKey"></param>
217+
/// <returns></returns>
57218
string GenerateRowKeyIdentityUserLogin(string? loginProvider, string? providerKey);
58219

220+
/// <summary>
221+
/// Parse PartitionKey From RowKey for IdentityRole
222+
/// </summary>
223+
/// <param name="rowKey"></param>
224+
/// <returns></returns>
59225
string ParsePartitionKeyIdentityRoleFromRowKey(string rowKey);
60226

227+
/// <summary>
228+
/// Key Version
229+
/// </summary>
61230
double KeyVersion { get; }
62231
}
63232
}

src/ElCamino.AspNetCore.Identity.AzureTable.Model/IdentityConfiguration.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,34 @@
33

44
namespace ElCamino.AspNetCore.Identity.AzureTable.Model
55
{
6+
/// <summary>
7+
/// Table Storage Configuration
8+
/// </summary>
69
public class IdentityConfiguration
710
{
11+
/// <summary>
12+
/// Optional field, prefixes all given table names
13+
/// </summary>
814
public string? TablePrefix { get; set; }
915

16+
/// <summary>
17+
/// Storage connection string
18+
/// </summary>
1019
public string? StorageConnectionString { get; set; }
1120

21+
/// <summary>
22+
/// Optional, default value is AspNetIndex
23+
/// </summary>
1224
public string? IndexTableName { get; set; }
1325

26+
/// <summary>
27+
/// Optional, default value is AspNetUsers
28+
/// </summary>
1429
public string? UserTableName { get; set; }
1530

31+
/// <summary>
32+
/// Optional, default value is AspNetRoles
33+
/// </summary>
1634
public string? RoleTableName { get; set; }
1735

1836
}

0 commit comments

Comments
 (0)