Skip to content

Commit cc0430f

Browse files
committed
feat: enable feature flag for email service
1 parent d8284d7 commit cc0430f

File tree

5 files changed

+35
-8
lines changed

5 files changed

+35
-8
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace OA.Domain.Enum
8+
{
9+
public enum FeatureManagement
10+
{
11+
EnableEmailService
12+
}
13+
}

src/OnionArchitecture/OA.Service/Implementation/AccountService.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
using Microsoft.AspNetCore.Identity;
22
using Microsoft.AspNetCore.WebUtilities;
33
using Microsoft.Extensions.Options;
4+
using Microsoft.FeatureManagement;
45
using Microsoft.IdentityModel.Tokens;
56
using OA.Domain.Auth;
67
using OA.Domain.Common;
8+
using OA.Domain.Enum;
79
using OA.Domain.Settings;
8-
using OA.Persistence.Enum;
910
using OA.Service.Contract;
1011
using OA.Service.Exceptions;
1112
using System;
@@ -27,19 +28,22 @@ public class AccountService : IAccountService
2728
private readonly IEmailService _emailService;
2829
private readonly JWTSettings _jwtSettings;
2930
private readonly IDateTimeService _dateTimeService;
31+
private readonly IFeatureManager _featureManager;
3032
public AccountService(UserManager<ApplicationUser> userManager,
3133
RoleManager<IdentityRole> roleManager,
3234
IOptions<JWTSettings> jwtSettings,
3335
IDateTimeService dateTimeService,
3436
SignInManager<ApplicationUser> signInManager,
35-
IEmailService emailService)
37+
IEmailService emailService,
38+
IFeatureManager featureManager)
3639
{
3740
_userManager = userManager;
3841
_roleManager = roleManager;
3942
_jwtSettings = jwtSettings.Value;
4043
_dateTimeService = dateTimeService;
4144
_signInManager = signInManager;
4245
_emailService = emailService;
46+
_featureManager = featureManager;
4347
}
4448

4549
public async Task<Response<AuthenticationResponse>> AuthenticateAsync(AuthenticationRequest request, string ipAddress)
@@ -94,8 +98,11 @@ public async Task<Response<string>> RegisterAsync(RegisterRequest request, strin
9498
{
9599
await _userManager.AddToRoleAsync(user, Roles.Basic.ToString());
96100
var verificationUri = await SendVerificationEmail(user, origin);
97-
//TODO: Attach Email Service here and configure it via appsettings
98-
await _emailService.SendEmailAsync(new MailRequest() { From = "amit.naik8103@gmail.com", ToEmail = user.Email, Body = $"Please confirm your account by visiting this URL {verificationUri}", Subject = "Confirm Registration" });
101+
102+
if (await _featureManager.IsEnabledAsync(nameof(FeatureManagement.EnableEmailService)))
103+
{
104+
await _emailService.SendEmailAsync(new MailRequest() { From = "amit.naik8103@gmail.com", ToEmail = user.Email, Body = $"Please confirm your account by visiting this URL {verificationUri}", Subject = "Confirm Registration" });
105+
}
99106
return new Response<string>(user.Id, message: $"User Registered. Please confirm your account by visiting this URL {verificationUri}");
100107
}
101108
else

src/OnionArchitecture/OA.Service/OA.Service.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="8.0.1" />
1313
<PackageReference Include="MailKit" Version="2.8.0" />
1414
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.7" />
15+
<PackageReference Include="Microsoft.FeatureManagement.AspNetCore" Version="2.2.0" />
1516
<PackageReference Include="MimeKit" Version="2.9.1" />
1617
<PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="3.1.7" />
1718
</ItemGroup>

src/OnionArchitecture/OA/Startup.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Microsoft.Extensions.Diagnostics.HealthChecks;
99
using Microsoft.Extensions.Hosting;
1010
using Microsoft.Extensions.Logging;
11+
using Microsoft.FeatureManagement;
1112
using OA.Infrastructure.Extension;
1213
using OA.Persistence;
1314
using OA.Service;
@@ -53,7 +54,6 @@ public void ConfigureServices(IServiceCollection services)
5354

5455
services.AddVersion();
5556

56-
//services.AddHealthCheck(Configuration);
5757

5858
services.AddHealthChecks()
5959
.AddDbContextCheck<ApplicationDbContext>(name: "Application DB Context", failureStatus: HealthStatus.Degraded)
@@ -66,8 +66,11 @@ public void ConfigureServices(IServiceCollection services)
6666
setup.AddHealthCheckEndpoint("Basic Health Check", $"http://localhost:44356/healthz");
6767
});
6868

69+
services.AddFeatureManagement();
6970
}
7071

72+
73+
7174
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory log)
7275
{
7376
if (env.IsDevelopment())

src/OnionArchitecture/OA/appsettings.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
{
1313
"Name": "MSSqlServer",
1414
"Args": {
15-
"connectionString": "Data Source=(local)\\sqlexpress;Initial Catalog=OnionDb2;Integrated Security=True",
15+
"connectionString": "Data Source=(local)\\sqlexpress01;Initial Catalog=OnionDb;Integrated Security=True",
1616
"sinkOptionsSection": {
1717
"tableName": "Logs",
1818
"schemaName": "EventLogging",
@@ -28,8 +28,11 @@
2828
},
2929
"AllowedHosts": "*",
3030
"ConnectionStrings": {
31-
"OnionArchConn": "Data Source=(local)\\SQLexpress;Initial Catalog=OnionDb2;Integrated Security=True",
32-
"IdentityConnection": "Data Source=(local)\\SQLexpress;Initial Catalog=OnionDb2;Integrated Security=True"
31+
"OnionArchConn": "Data Source=(local)\\sqlexpress01;Initial Catalog=OnionDb;Integrated Security=True",
32+
"IdentityConnection": "Data Source=(local)\\sqlexpress01;Initial Catalog=OnionDb;Integrated Security=True"
33+
},
34+
"FeatureManagement": {
35+
"EnableEmailService": false
3336
},
3437
"MailSettings": {
3538
"Mail": "amit.naik6226@gmail.com",

0 commit comments

Comments
 (0)