Skip to content

Commit f3c2bc9

Browse files
committed
WIP Identity
1 parent 9b60440 commit f3c2bc9

25 files changed

+521
-33
lines changed

src/Learn.Server.Data.SqlServer.Database/Learn.Server.Data.SqlServer.Database.sqlproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<Folder Include="Schemas" />
6767
<Folder Include="Scripts" />
6868
<Folder Include="Tables\Identity" />
69+
<Folder Include="Procedures\Identity" />
6970
</ItemGroup>
7071
<ItemGroup>
7172
<Build Include="Tables\CoursePath.sql" />
@@ -86,6 +87,8 @@
8687
<Build Include="Tables\Identity\UserLogin.sql" />
8788
<Build Include="Tables\Identity\UserRole.sql" />
8889
<Build Include="Tables\Identity\UserToken.sql" />
90+
<Build Include="Procedures\Identity\CreateUser.sql" />
91+
<Build Include="Tables\Audit\UserAudit.sql" />
8992
</ItemGroup>
9093
<ItemGroup>
9194
<None Include="Learn.Server.Data.SqlServer.Database.publish.xml">

src/Learn.Server.Data.SqlServer.Database/Procedures/CoursePath/ClearCoursePath.sql

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,27 @@ AS
66
SET NOCOUNT ON
77
SET XACT_ABORT ON
88

9-
DECLARE @AuditKey INT = NEXT VALUE FOR [Audit].[CoursePathAuditSequence];
10-
DECLARE @AuditTypeKey INT = (SELECT [Key] FROM [Audit].[AuditType] WHERE [Name] = 'DELETED');
11-
DECLARE @AuditDate DATETIMEOFFSET = SYSDATETIMEOFFSET();
9+
DECLARE @AuditId INT = NEXT VALUE FOR [Audit].[CoursePathAuditSequence];
10+
DECLARE @AuditTypeId INT = (SELECT [Id] FROM [Audit].[AuditType] WHERE [Name] = 'DELETED');
11+
DECLARE @AuditTimestamp DATETIMEOFFSET = SYSDATETIMEOFFSET();
1212

1313
DELETE [dbo].[CoursePath]
1414
OUTPUT
15-
@AuditKey,
16-
@AuditTypeKey,
17-
@AuditDate,
15+
@AuditId,
16+
@AuditTypeId,
17+
@AuditTimestamp,
18+
1819
[deleted].[Key],
1920
[deleted].[Name],
2021
[deleted].[Slug],
2122
[deleted].[Version]
2223
INTO
2324
[Audit].[CoursePath]
2425
(
25-
[AuditKey],
26-
[AuditTypeKey],
27-
[AuditDate],
26+
[AuditId],
27+
[AuditTypeId],
28+
[AuditTimestamp],
29+
2830
[Key],
2931
[Name],
3032
[Slug],
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
CREATE PROCEDURE [Identity].[CreateUser]
2+
@UserName NVARCHAR(255),
3+
@NormalizedUserName NVARCHAR(255),
4+
@Email NVARCHAR(255),
5+
@NormalizedEmail NVARCHAR(255),
6+
@EmailConfirmed BIT,
7+
@PasswordHash NVARCHAR(255),
8+
@PhoneNumber NVARCHAR(255),
9+
@PhoneNumberConfirmed BIT,
10+
@TwoFactorEnabled BIT,
11+
@LockoutEnd DATETIMEOFFSET,
12+
@LockoutEnabled BIT,
13+
@AccessFailedCount INT
14+
AS
15+
16+
SET NOCOUNT ON;
17+
SET XACT_ABORT ON;
18+
19+
DECLARE @Id INT = NEXT VALUE FOR [Identity].[UserSequence];
20+
DECLARE @SecurityStamp UNIQUEIDENTIFIER = NEWID();
21+
DECLARE @ConcurrencyStamp UNIQUEIDENTIFIER = NEWID();
22+
23+
DECLARE @AuditId INT = NEXT VALUE FOR [Audit].[UserAuditSequence];
24+
DECLARE @AuditTypeId INT = (SELECT [Id] FROM [Audit].[AuditType] WHERE [Name] = 'INSERTED');
25+
DECLARE @AuditTimestamp DATETIMEOFFSET = SYSDATETIMEOFFSET();
26+
27+
INSERT [Identity].[User]
28+
(
29+
[Id],
30+
[UserName],
31+
[NormalizedUserName],
32+
[Email],
33+
[NormalizedEmail],
34+
[EmailConfirmed],
35+
[PasswordHash],
36+
[SecurityStamp],
37+
[ConcurrencyStamp],
38+
[PhoneNumber],
39+
[PhoneNumberConfirmed],
40+
[TwoFactorEnabled],
41+
[LockoutEnd],
42+
[LockoutEnabled],
43+
[AccessFailedCount]
44+
)
45+
46+
OUTPUT
47+
48+
@AuditId,
49+
@AuditTypeId,
50+
@AuditTimestamp,
51+
52+
[inserted].[Id],
53+
[inserted].[UserName],
54+
[inserted].[NormalizedUserName],
55+
[inserted].[Email],
56+
[inserted].[NormalizedEmail],
57+
[inserted].[EmailConfirmed],
58+
[inserted].[PasswordHash],
59+
[inserted].[SecurityStamp],
60+
[inserted].[ConcurrencyStamp],
61+
[inserted].[PhoneNumber],
62+
[inserted].[PhoneNumberConfirmed],
63+
[inserted].[TwoFactorEnabled],
64+
[inserted].[LockoutEnd],
65+
[inserted].[LockoutEnabled],
66+
[inserted].[AccessFailedCount]
67+
68+
INTO [Audit].[UserAudit]
69+
(
70+
[AuditId],
71+
[AuditTypeId],
72+
[AuditTimestamp],
73+
74+
[Id],
75+
[UserName],
76+
[NormalizedUserName],
77+
[Email],
78+
[NormalizedEmail],
79+
[EmailConfirmed],
80+
[PasswordHash],
81+
[SecurityStamp],
82+
[ConcurrencyStamp],
83+
[PhoneNumber],
84+
[PhoneNumberConfirmed],
85+
[TwoFactorEnabled],
86+
[LockoutEnd],
87+
[LockoutEnabled],
88+
[AccessFailedCount]
89+
)
90+
91+
OUTPUT
92+
93+
[inserted].[Id],
94+
[inserted].[UserName],
95+
[inserted].[NormalizedUserName],
96+
[inserted].[Email],
97+
[inserted].[NormalizedEmail],
98+
[inserted].[EmailConfirmed],
99+
[inserted].[PasswordHash],
100+
[inserted].[SecurityStamp],
101+
[inserted].[ConcurrencyStamp],
102+
[inserted].[PhoneNumber],
103+
[inserted].[PhoneNumberConfirmed],
104+
[inserted].[TwoFactorEnabled],
105+
[inserted].[LockoutEnd],
106+
[inserted].[LockoutEnabled],
107+
[inserted].[AccessFailedCount]
108+
109+
VALUES
110+
(
111+
@Id,
112+
@UserName,
113+
@NormalizedUserName,
114+
@Email,
115+
@NormalizedEmail,
116+
@EmailConfirmed,
117+
@PasswordHash,
118+
@SecurityStamp,
119+
@ConcurrencyStamp,
120+
@PhoneNumber,
121+
@PhoneNumberConfirmed,
122+
@TwoFactorEnabled,
123+
@LockoutEnd,
124+
@LockoutEnabled,
125+
@AccessFailedCount
126+
)
127+
128+
RETURN 0;
129+
GO

src/Learn.Server.Data.SqlServer.Database/Tables/Audit/AuditType.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
CREATE TABLE [Audit].[AuditType]
22
(
3-
[Key] INT NOT NULL,
3+
[Id] INT NOT NULL,
44
[Name] NVARCHAR(100) NOT NULL,
55

66
CONSTRAINT [PK_AuditType] PRIMARY KEY CLUSTERED
77
(
8-
[Key]
8+
[Id]
99
),
1010

1111
CONSTRAINT [UK_AuditType_Name] UNIQUE

src/Learn.Server.Data.SqlServer.Database/Tables/Audit/CoursePath.sql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
CREATE TABLE [Audit].[CoursePath]
22
(
3-
[AuditKey] INT NOT NULL,
4-
[AuditTypeKey] INT NOT NULL,
5-
[AuditDate] DATETIMEOFFSET NOT NULL,
3+
[AuditId] INT NOT NULL,
4+
[AuditTypeId] INT NOT NULL,
5+
[AuditTimestamp] DATETIMEOFFSET NOT NULL,
66

77
[Key] UNIQUEIDENTIFIER NOT NULL,
88
[Name] NVARCHAR(1000) NOT NULL,
@@ -11,24 +11,24 @@
1111

1212
CONSTRAINT [PK_Audit_CoursePath] PRIMARY KEY CLUSTERED
1313
(
14-
[AuditKey]
14+
[AuditId]
1515
),
1616

1717
CONSTRAINT [FK_AuditType] FOREIGN KEY
1818
(
19-
[AuditTypeKey]
19+
[AuditTypeId]
2020
)
2121
REFERENCES [Audit].[AuditType]
2222
(
23-
[Key]
23+
[Id]
2424
)
2525
)
2626
GO
2727

2828
CREATE UNIQUE NONCLUSTERED INDEX [NCI_Audit_CoursePath]
2929
ON [Audit].[CoursePath]
3030
(
31-
[AuditKey]
31+
[AuditId]
3232
)
3333
GO
3434

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
CREATE TABLE [Audit].[UserAudit]
2+
(
3+
[AuditId] INT NOT NULL,
4+
[AuditTypeId] INT NOT NULL,
5+
[AuditTimestamp] DATETIMEOFFSET NOT NULL,
6+
7+
[Id] INT NOT NULL,
8+
[UserName] NVARCHAR(255) NOT NULL,
9+
[NormalizedUserName] NVARCHAR(255) NOT NULL,
10+
[Email] NVARCHAR(255) NOT NULL,
11+
[NormalizedEmail] NVARCHAR(255) NOT NULL,
12+
[EmailConfirmed] BIT NOT NULL,
13+
[PasswordHash] NVARCHAR(255) NOT NULL,
14+
[SecurityStamp] UNIQUEIDENTIFIER NOT NULL,
15+
[ConcurrencyStamp] UNIQUEIDENTIFIER NOT NULL,
16+
[PhoneNumber] NVARCHAR(255) NOT NULL,
17+
[PhoneNumberConfirmed] BIT NOT NULL,
18+
[TwoFactorEnabled] BIT NOT NULL,
19+
[LockoutEnd] DATETIMEOFFSET NOT NULL,
20+
[LockoutEnabled] BIT NOT NULL,
21+
[AccessFailedCount] INT NOT NULL,
22+
23+
CONSTRAINT [PK_UserAudit] PRIMARY KEY CLUSTERED
24+
(
25+
[AuditId]
26+
),
27+
28+
CONSTRAINT [FK_UserAudit_AuditType] FOREIGN KEY
29+
(
30+
[AuditTypeId]
31+
)
32+
REFERENCES [Audit].[AuditType]
33+
(
34+
[Id]
35+
)
36+
)
37+
GO
38+
39+
CREATE SEQUENCE [Audit].[UserAuditSequence]
40+
AS INT
41+
START WITH 1
42+
INCREMENT BY 1
43+
GO
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
CREATE TABLE [Identity].[Role]
22
(
3-
[Id] NVARCHAR(255) NOT NULL,
3+
[Id] INT NOT NULL,
44
[Name] NVARCHAR(255) NOT NULL,
55
[NormalizedName] NVARCHAR(255) NOT NULL,
6-
[ConcurrencyStamp] NVARCHAR(255) NOT NULL,
6+
[ConcurrencyStamp] UNIQUEIDENTIFIER NOT NULL,
77

88
CONSTRAINT [PK_Role] PRIMARY KEY CLUSTERED
99
(
1010
[Id]
1111
)
1212
)
13-
GO
13+
GO
14+
15+
CREATE SEQUENCE [Identity].[RoleSequence]
16+
AS INT
17+
START WITH 1
18+
INCREMENT BY 1
19+
GO

src/Learn.Server.Data.SqlServer.Database/Tables/Identity/RoleClaim.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CREATE TABLE [Identity].[RoleClaim]
22
(
33
[Id] INT NOT NULL,
4-
[RoleId] NVARCHAR(255) NOT NULL,
4+
[RoleId] INT NOT NULL,
55
[ClaimType] NVARCHAR(255) NOT NULL,
66
[ClaimValue] NVARCHAR(255) NOT NULL,
77

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
CREATE TABLE [Identity].[User]
22
(
3-
[Id] NVARCHAR(255) NOT NULL,
3+
[Id] INT NOT NULL,
44
[UserName] NVARCHAR(255) NOT NULL,
55
[NormalizedUserName] NVARCHAR(255) NOT NULL,
66
[Email] NVARCHAR(255) NOT NULL,
77
[NormalizedEmail] NVARCHAR(255) NOT NULL,
88
[EmailConfirmed] BIT NOT NULL,
99
[PasswordHash] NVARCHAR(255) NOT NULL,
10-
[SecurityStamp] NVARCHAR(255) NOT NULL,
11-
[ConcurrencyStamp] NVARCHAR(255) NOT NULL,
10+
[SecurityStamp] UNIQUEIDENTIFIER NOT NULL,
11+
[ConcurrencyStamp] UNIQUEIDENTIFIER NOT NULL,
1212
[PhoneNumber] NVARCHAR(255) NOT NULL,
1313
[PhoneNumberConfirmed] BIT NOT NULL,
1414
[TwoFactorEnabled] BIT NOT NULL,
@@ -19,6 +19,22 @@
1919
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
2020
(
2121
[Id]
22+
),
23+
24+
CONSTRAINT [UK_User_NormalizedUserName] UNIQUE
25+
(
26+
[NormalizedUserName]
27+
),
28+
29+
CONSTRAINT [UK_User_NormalizedEmail] UNIQUE
30+
(
31+
[NormalizedEmail]
2232
)
2333
)
24-
GO
34+
GO
35+
36+
CREATE SEQUENCE [Identity].[UserSequence]
37+
AS INT
38+
START WITH 1
39+
INCREMENT BY 1
40+
GO

src/Learn.Server.Data.SqlServer.Database/Tables/Identity/UserClaim.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CREATE TABLE [Identity].[UserClaim]
22
(
33
[Id] INT NOT NULL,
4-
[UserId] NVARCHAR(255) NOT NULL,
4+
[UserId] INT NOT NULL,
55
[ClaimType] NVARCHAR(255) NOT NULL,
66
[ClaimValue] NVARCHAR(255) NOT NULL,
77

0 commit comments

Comments
 (0)