Skip to content

Commit 6e8063f

Browse files
authored
Extract registrations (#309)
* extract Registrations * libs: upgrade System.Data.SqlClient to 4.8.6
1 parent 7bf832a commit 6e8063f

File tree

171 files changed

+3501
-383
lines changed

Some content is hidden

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

171 files changed

+3501
-383
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ As can be found on the website of the author of this model ([Simon Brown](https:
305305

306306
#### 3.0.2 C2 Container
307307

308-
![](http://www.plantuml.com/plantuml/png/5OrDgiCm30RtxnIl1uW5fQkk0Zr8SIoHcDXIq0-XFNtZpVTjXfdPFAj7Rt-togK5KcZxtzmFUm9eFjDQVOibZBG8Ex6d8XtsLR-VXNReWj6oJbrOseLEvnX4X9xDIG6b6BmUKExl8SYLITCnYZCnNly3)
308+
![](http://www.plantuml.com/plantuml/png/dPDBZvim4CVlV0etfqJg1bNggQTbasWtLRAbUQZgAJ8mJInX6_dH2bNxtMi3DG-PYfG3DkFv_yQUFtwK2WkbQHwy8opDTGRefbGXFuMXmB-MLw9kEj4IHCgP0gQMAQTXaMDcDGzIPJb9mjN7XzY6pljTIB5K84peikAquCng2iiFZgLPePSdhbc6HJbFFxn7its9zW2AiAj4TS9iWNu7o3mhKn4J1c8k2snIZt4qCyC1SAe-7-tq-Rn5FxX0wWO85qLEKgm8PxD5fQzUhXej_zQ92Z8e7CLRLzK-RkTpNENQTJCiNpSdioQW5dZIQKFSyqpdOAiq0IVVaKHWGK1wzJYZX16fH7KEHubwuOaiQrgKfY3RtPnD2DMnYP02bzICBIAk0rFr0gvktotaq8rE8ttLe64EFstj9osDPbFDaVcmX2r352WNPKVi9kudoB322PPs3-jcsXe_BBbE1dvQISTJP6csjanlGB4jxCSCRAqmGrEdmrfVBQZlwcIACzOoMbkd0_hEMihGrt7KMr2_tuBW07bzkt51wgDKRhwSJh4HsDLgeUz3azXDw7TuDCtrRfpKD6OyeNTmNzPmizsVDjP9JkGDP1r5YgCGIPt8L9344VodkP_J7lV_6SD-t4_mDkm-ZBUltijvL5o0aGjGWXZSFplQZuuJ_Bri8sDAVmURxt7LUDTwmN6z1LmEViJu5GXsqVSlvzFbs_RqSjbjdZUlw_aYU0IMQPh_0G00)
309309

310310
#### 3.0.3 C3 Component (high-level)
311311

@@ -330,7 +330,8 @@ As can be found on the website of the author of this model ([Simon Brown](https:
330330
2. Authenticate and authorize request (using User Access module)
331331
3. Delegate work to specific module sending Command or Query
332332
4. Return response
333-
- **User Access** - responsible for user authentication, authorization and registration
333+
- **User Access** - responsible for user authentication and authorization
334+
- **Registrations** - responsible for user registration
334335
- **Meetings** - implements Meetings Bounded Context: creating meeting groups, meetings
335336
- **Administration** - implements Administration Bounded Context: implements administrative tasks like meeting group proposal verification
336337
- **Payments** - implements Payments Bounded Context: implements all functionalities associated with payments

build/_build.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<ItemGroup>
1515
<PackageReference Include="Dapper" Version="2.1.24" />
1616
<PackageReference Include="Nuke.Common" Version="7.0.6" />
17-
<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
17+
<PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
1818
</ItemGroup>
1919

2020
</Project>

docs/C4/c3_components.puml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ System_Boundary(c1, "My Meetings System") {
1010
Component(administrationModule, "Administration", ".NET Libraries")
1111
Component(userAccessModule, "User Access", ".NET Libraries")
1212
Component(paymentsModule, "Payments", ".NET Libraries")
13+
Component(registrationsModule, "Registrations", ".NET Libraries")
1314
ComponentQueue(eventsBus, "Events Bus", "In memory")
1415

1516
Boundary(database, "Database") {
1617
ComponentDb(meetingsModuleData, "Meetings data", "schema")
1718
ComponentDb(administrationData, "Administration data", "schema")
1819
ComponentDb(userAccessData, "User Access data", "schema")
1920
ComponentDb(paymentsData, "Payments data", "schema")
21+
ComponentDb(registrationsData, "Registrations data", "schema")
2022
}
2123
}
2224
}
@@ -26,15 +28,20 @@ Rel(api, meetingsModule, "Uses")
2628
Rel(api, administrationModule, "Uses")
2729
Rel(api, userAccessModule, "Uses")
2830
Rel(api, paymentsModule, "Uses")
31+
Rel(api, registrationsModule, "Uses")
2932
Rel(meetingsModule, eventsBus, "Publishes event to / subscribes")
3033
Rel(administrationModule, eventsBus, "Publishes event to / subscribes")
3134
Rel(userAccessModule, eventsBus, "Publishes event to / subscribes")
3235
Rel(paymentsModule, eventsBus, "Publishes event to / subscribes")
36+
Rel(registrationsModule, eventsBus, "Publishes event to / subscribes")
3337

3438
Rel(meetingsModule, meetingsModuleData, "Store / retrieve")
3539
Rel(administrationModule, administrationData, "Store / retrieve")
3640
Rel(userAccessModule, userAccessData, "Store / retrieve")
3741
Rel(paymentsModule, paymentsData, "Store / retrieve")
42+
Rel(registrationsModule, registrationsData, "Store / retrieve")
43+
44+
Rel_R(registrationsModule, userAccessModule, "Uses")
3845

3946
LAYOUT_WITH_LEGEND()
4047

0 Bytes
Loading

docs/Project/MyMeetings.vpp

105 KB
Binary file not shown.

src/API/CompanyName.MyMeetings.API/CompanyName.MyMeetings.API.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
66
<DockerfileContext>..\..</DockerfileContext>
77
</PropertyGroup>
8+
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
9+
<DocumentationFile>bin\Debug\CompanyName.MyMeetings.API.xml</DocumentationFile>
10+
</PropertyGroup>
811
<ItemGroup>
912
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
1013
</ItemGroup>

src/API/CompanyName.MyMeetings.API/Modules/UserAccess/UserRegistrationsController.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
using CompanyName.MyMeetings.API.Configuration.Authorization;
2+
using CompanyName.MyMeetings.Modules.Registrations.Application.Contracts;
3+
using CompanyName.MyMeetings.Modules.Registrations.Application.UserRegistrations.ConfirmUserRegistration;
4+
using CompanyName.MyMeetings.Modules.Registrations.Application.UserRegistrations.RegisterNewUser;
25
using CompanyName.MyMeetings.Modules.UserAccess.Application.Contracts;
3-
using CompanyName.MyMeetings.Modules.UserAccess.Application.UserRegistrations.ConfirmUserRegistration;
4-
using CompanyName.MyMeetings.Modules.UserAccess.Application.UserRegistrations.RegisterNewUser;
56
using Microsoft.AspNetCore.Authorization;
67
using Microsoft.AspNetCore.Mvc;
78

@@ -11,11 +12,11 @@ namespace CompanyName.MyMeetings.API.Modules.UserAccess
1112
[ApiController]
1213
public class UserRegistrationsController : ControllerBase
1314
{
14-
private readonly IUserAccessModule _userAccessModule;
15+
private readonly IRegistrationsModule _registrationsModule;
1516

16-
public UserRegistrationsController(IUserAccessModule userAccessModule)
17+
public UserRegistrationsController(IRegistrationsModule registrationsModule)
1718
{
18-
_userAccessModule = userAccessModule;
19+
_registrationsModule = registrationsModule;
1920
}
2021

2122
[NoPermissionRequired]
@@ -24,7 +25,7 @@ public UserRegistrationsController(IUserAccessModule userAccessModule)
2425
[ProducesResponseType(StatusCodes.Status200OK)]
2526
public async Task<IActionResult> RegisterNewUser(RegisterNewUserRequest request)
2627
{
27-
await _userAccessModule.ExecuteCommandAsync(new RegisterNewUserCommand(
28+
await _registrationsModule.ExecuteCommandAsync(new RegisterNewUserCommand(
2829
request.Login,
2930
request.Password,
3031
request.Email,
@@ -41,7 +42,7 @@ await _userAccessModule.ExecuteCommandAsync(new RegisterNewUserCommand(
4142
[ProducesResponseType(StatusCodes.Status200OK)]
4243
public async Task<IActionResult> ConfirmRegistration(Guid userRegistrationId)
4344
{
44-
await _userAccessModule.ExecuteCommandAsync(new ConfirmUserRegistrationCommand(userRegistrationId));
45+
await _registrationsModule.ExecuteCommandAsync(new ConfirmUserRegistrationCommand(userRegistrationId));
4546

4647
return Ok();
4748
}

src/API/CompanyName.MyMeetings.API/Startup.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using CompanyName.MyMeetings.Modules.Administration.Infrastructure.Configuration;
1515
using CompanyName.MyMeetings.Modules.Meetings.Infrastructure.Configuration;
1616
using CompanyName.MyMeetings.Modules.Payments.Infrastructure.Configuration;
17+
using CompanyName.MyMeetings.Modules.Registrations.Infrastructure.Configuration;
1718
using CompanyName.MyMeetings.Modules.UserAccess.Infrastructure.Configuration;
1819
using CompanyName.MyMeetings.Modules.UserAccess.Infrastructure.Configuration.Identity;
1920
using Hellang.Middleware.ProblemDetails;
@@ -172,6 +173,15 @@ private void InitializeModules(ILifetimeScope container)
172173
_logger,
173174
emailsConfiguration,
174175
null);
176+
177+
RegistrationsStartup.Initialize(
178+
_configuration[MeetingsConnectionString],
179+
executionContextAccessor,
180+
_logger,
181+
emailsConfiguration,
182+
_configuration["Security:TextEncryptionKey"],
183+
null,
184+
null);
175185
}
176186
}
177187
}

src/BuildingBlocks/Infrastructure/StronglyTypedIdValueConverterSelector.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace CompanyName.MyMeetings.BuildingBlocks.Infrastructure
66
{
77
/// <summary>
8-
/// Based on https://andrewlock.net/strongly-typed-ids-in-ef-core-using-strongly-typed-entity-ids-to-avoid-primitive-obsession-part-4/
8+
/// Based on https://andrewlock.net/strongly-typed-ids-in-ef-core-using-strongly-typed-entity-ids-to-avoid-primitive-obsession-part-4/.
99
/// </summary>
1010
public class StronglyTypedIdValueConverterSelector : ValueConverterSelector
1111
{

src/CompanyName.MyMeetings.sln

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,24 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "RequestExamples", "RequestE
136136
EndProject
137137
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CompanyName.MyMeetings.SUT", "Tests\SUT\CompanyName.MyMeetings.SUT.csproj", "{1853847F-9988-43A1-B3E1-DDBE4B2F3365}"
138138
EndProject
139+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Registrations", "Registrations", "{8F0598A5-2F0C-4FA6-82F6-938F1830ADB7}"
140+
EndProject
141+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompanyName.MyMeetings.Modules.Registrations.Application", "Modules\Registrations\Application\CompanyName.MyMeetings.Modules.Registrations.Application.csproj", "{3D5E4893-E48A-4553-B036-724A8F809656}"
142+
EndProject
143+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompanyName.MyMeetings.Modules.Registrations.Domain", "Modules\Registrations\Domain\CompanyName.MyMeetings.Modules.Registrations.Domain.csproj", "{98CE491C-8A52-4FC9-87BD-36FE63CB37E6}"
144+
EndProject
145+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompanyName.MyMeetings.Modules.Registrations.Infrastructure", "Modules\Registrations\Infrastructure\CompanyName.MyMeetings.Modules.Registrations.Infrastructure.csproj", "{5F24D649-5684-458E-8C67-CCEC85E271A0}"
146+
EndProject
147+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{646E463D-F0E2-4BA4-9B5E-434ABE26EC07}"
148+
EndProject
149+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompanyName.MyMeetings.Modules.Registrations.ArchTests", "Modules\Registrations\Tests\ArchTests\CompanyName.MyMeetings.Modules.Registrations.ArchTests.csproj", "{96639493-5D2D-4F61-B399-600673D6912D}"
150+
EndProject
151+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompanyNames.MyMeetings.Modules.Registrations.IntegrationTests", "Modules\Registrations\Tests\IntegrationTests\CompanyNames.MyMeetings.Modules.Registrations.IntegrationTests.csproj", "{9AB969B5-4215-4ACF-8D48-EC0A6F35BC46}"
152+
EndProject
153+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompanyName.MyMeetings.Modules.Registrations.Domain.UnitTests", "Modules\Registrations\Tests\UnitTests\CompanyName.MyMeetings.Modules.Registrations.Domain.UnitTests.csproj", "{0535D1F2-FA8B-4093-9987-7533F8D07605}"
154+
EndProject
155+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CompanyName.MyMeetings.Modules.Registrations.IntegrationEvents", "Modules\Registrations\IntegrationEvents\CompanyName.MyMeetings.Modules.Registrations.IntegrationEvents.csproj", "{2E71D2B2-516D-4B0D-8DE6-B9F3105B9C95}"
156+
EndProject
139157
Global
140158
GlobalSection(SolutionConfigurationPlatforms) = preSolution
141159
Debug|Any CPU = Debug|Any CPU
@@ -385,6 +403,48 @@ Global
385403
{1853847F-9988-43A1-B3E1-DDBE4B2F3365}.Production|Any CPU.Build.0 = Debug|Any CPU
386404
{1853847F-9988-43A1-B3E1-DDBE4B2F3365}.Release|Any CPU.ActiveCfg = Release|Any CPU
387405
{1853847F-9988-43A1-B3E1-DDBE4B2F3365}.Release|Any CPU.Build.0 = Release|Any CPU
406+
{3D5E4893-E48A-4553-B036-724A8F809656}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
407+
{3D5E4893-E48A-4553-B036-724A8F809656}.Debug|Any CPU.Build.0 = Debug|Any CPU
408+
{3D5E4893-E48A-4553-B036-724A8F809656}.Production|Any CPU.ActiveCfg = Production|Any CPU
409+
{3D5E4893-E48A-4553-B036-724A8F809656}.Production|Any CPU.Build.0 = Production|Any CPU
410+
{3D5E4893-E48A-4553-B036-724A8F809656}.Release|Any CPU.ActiveCfg = Release|Any CPU
411+
{3D5E4893-E48A-4553-B036-724A8F809656}.Release|Any CPU.Build.0 = Release|Any CPU
412+
{98CE491C-8A52-4FC9-87BD-36FE63CB37E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
413+
{98CE491C-8A52-4FC9-87BD-36FE63CB37E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
414+
{98CE491C-8A52-4FC9-87BD-36FE63CB37E6}.Production|Any CPU.ActiveCfg = Production|Any CPU
415+
{98CE491C-8A52-4FC9-87BD-36FE63CB37E6}.Production|Any CPU.Build.0 = Production|Any CPU
416+
{98CE491C-8A52-4FC9-87BD-36FE63CB37E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
417+
{98CE491C-8A52-4FC9-87BD-36FE63CB37E6}.Release|Any CPU.Build.0 = Release|Any CPU
418+
{5F24D649-5684-458E-8C67-CCEC85E271A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
419+
{5F24D649-5684-458E-8C67-CCEC85E271A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
420+
{5F24D649-5684-458E-8C67-CCEC85E271A0}.Production|Any CPU.ActiveCfg = Production|Any CPU
421+
{5F24D649-5684-458E-8C67-CCEC85E271A0}.Production|Any CPU.Build.0 = Production|Any CPU
422+
{5F24D649-5684-458E-8C67-CCEC85E271A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
423+
{5F24D649-5684-458E-8C67-CCEC85E271A0}.Release|Any CPU.Build.0 = Release|Any CPU
424+
{96639493-5D2D-4F61-B399-600673D6912D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
425+
{96639493-5D2D-4F61-B399-600673D6912D}.Debug|Any CPU.Build.0 = Debug|Any CPU
426+
{96639493-5D2D-4F61-B399-600673D6912D}.Production|Any CPU.ActiveCfg = Production|Any CPU
427+
{96639493-5D2D-4F61-B399-600673D6912D}.Production|Any CPU.Build.0 = Production|Any CPU
428+
{96639493-5D2D-4F61-B399-600673D6912D}.Release|Any CPU.ActiveCfg = Release|Any CPU
429+
{96639493-5D2D-4F61-B399-600673D6912D}.Release|Any CPU.Build.0 = Release|Any CPU
430+
{9AB969B5-4215-4ACF-8D48-EC0A6F35BC46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
431+
{9AB969B5-4215-4ACF-8D48-EC0A6F35BC46}.Debug|Any CPU.Build.0 = Debug|Any CPU
432+
{9AB969B5-4215-4ACF-8D48-EC0A6F35BC46}.Production|Any CPU.ActiveCfg = Production|Any CPU
433+
{9AB969B5-4215-4ACF-8D48-EC0A6F35BC46}.Production|Any CPU.Build.0 = Production|Any CPU
434+
{9AB969B5-4215-4ACF-8D48-EC0A6F35BC46}.Release|Any CPU.ActiveCfg = Release|Any CPU
435+
{9AB969B5-4215-4ACF-8D48-EC0A6F35BC46}.Release|Any CPU.Build.0 = Release|Any CPU
436+
{0535D1F2-FA8B-4093-9987-7533F8D07605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
437+
{0535D1F2-FA8B-4093-9987-7533F8D07605}.Debug|Any CPU.Build.0 = Debug|Any CPU
438+
{0535D1F2-FA8B-4093-9987-7533F8D07605}.Production|Any CPU.ActiveCfg = Production|Any CPU
439+
{0535D1F2-FA8B-4093-9987-7533F8D07605}.Production|Any CPU.Build.0 = Production|Any CPU
440+
{0535D1F2-FA8B-4093-9987-7533F8D07605}.Release|Any CPU.ActiveCfg = Release|Any CPU
441+
{0535D1F2-FA8B-4093-9987-7533F8D07605}.Release|Any CPU.Build.0 = Release|Any CPU
442+
{2E71D2B2-516D-4B0D-8DE6-B9F3105B9C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
443+
{2E71D2B2-516D-4B0D-8DE6-B9F3105B9C95}.Debug|Any CPU.Build.0 = Debug|Any CPU
444+
{2E71D2B2-516D-4B0D-8DE6-B9F3105B9C95}.Production|Any CPU.ActiveCfg = Production|Any CPU
445+
{2E71D2B2-516D-4B0D-8DE6-B9F3105B9C95}.Production|Any CPU.Build.0 = Production|Any CPU
446+
{2E71D2B2-516D-4B0D-8DE6-B9F3105B9C95}.Release|Any CPU.ActiveCfg = Release|Any CPU
447+
{2E71D2B2-516D-4B0D-8DE6-B9F3105B9C95}.Release|Any CPU.Build.0 = Release|Any CPU
388448
EndGlobalSection
389449
GlobalSection(SolutionProperties) = preSolution
390450
HideSolutionNode = FALSE
@@ -440,6 +500,15 @@ Global
440500
{165E76B9-DB0C-49B7-B3DC-52DFBEA55A79} = {C733D087-7051-4E35-BCDB-081252A108E5}
441501
{00B904C6-D29A-4F26-B7AD-116C701DB73F} = {BC9DDFD1-FB81-4996-812A-68BEBCA33A97}
442502
{1853847F-9988-43A1-B3E1-DDBE4B2F3365} = {8B08A9EE-CE27-4CC3-ACB3-3BD9628E5479}
503+
{8F0598A5-2F0C-4FA6-82F6-938F1830ADB7} = {BCE1EE3C-ADB1-48CC-9FD1-C7324D886964}
504+
{3D5E4893-E48A-4553-B036-724A8F809656} = {8F0598A5-2F0C-4FA6-82F6-938F1830ADB7}
505+
{98CE491C-8A52-4FC9-87BD-36FE63CB37E6} = {8F0598A5-2F0C-4FA6-82F6-938F1830ADB7}
506+
{5F24D649-5684-458E-8C67-CCEC85E271A0} = {8F0598A5-2F0C-4FA6-82F6-938F1830ADB7}
507+
{646E463D-F0E2-4BA4-9B5E-434ABE26EC07} = {8F0598A5-2F0C-4FA6-82F6-938F1830ADB7}
508+
{96639493-5D2D-4F61-B399-600673D6912D} = {646E463D-F0E2-4BA4-9B5E-434ABE26EC07}
509+
{9AB969B5-4215-4ACF-8D48-EC0A6F35BC46} = {646E463D-F0E2-4BA4-9B5E-434ABE26EC07}
510+
{0535D1F2-FA8B-4093-9987-7533F8D07605} = {646E463D-F0E2-4BA4-9B5E-434ABE26EC07}
511+
{2E71D2B2-516D-4B0D-8DE6-B9F3105B9C95} = {8F0598A5-2F0C-4FA6-82F6-938F1830ADB7}
443512
EndGlobalSection
444513
GlobalSection(ExtensibilityGlobals) = postSolution
445514
SolutionGuid = {6B94C21A-AA6D-4D82-963E-C69C0353B938}

0 commit comments

Comments
 (0)