Skip to content

Commit 0ae7575

Browse files
authored
Merge pull request #39 from Dapplesoft-AD/mashrafe
Finally Merged with Dev branch and resolved all conflicts.
2 parents 88796a5 + ab06a0a commit 0ae7575

File tree

91 files changed

+1502
-63
lines changed

Some content is hidden

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

91 files changed

+1502
-63
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,3 +403,4 @@ FodyWeavers.xsd
403403
appsettings.Development.json
404404
appsettings.*.json
405405
!appsettings.json
406+
/AuthServer.sln

AuthServer.sln

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Microsoft Visual Studio Solution File, Format Version 12.00
2-
# Visual Studio Version 17
3-
VisualStudioVersion = 17.5.2.0
2+
# Visual Studio Version 18
3+
VisualStudioVersion = 18.3.11206.111 d18.3
44
MinimumVisualStudioVersion = 10.0.40219.1
55
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
66
EndProject

Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<PackageVersion Include="Scrutor" Version="6.1.0" />
1111
<PackageVersion Include="FluentValidation.DependencyInjectionExtensions" Version="12.0.0" />
1212
<PackageVersion Include="Microsoft.EntityFrameworkCore" Version="9.0.11" />
13-
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.9" />
13+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="9.0.11" />
1414
<PackageVersion Include="Serilog" Version="4.3.0" />
1515
<!-- Infrastructure -->
1616
<PackageVersion Include="AspNetCore.HealthChecks.NpgSql" Version="9.0.0" />

dotnet

Whitespace-only changes.

loggerConfig.ReadFrom.Configuration(context.Configuration))

Whitespace-only changes.
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,34 @@
11
using Domain.Applications;
22
using Domain.Customers;
3+
using Domain.EmailVerification;
4+
using Domain.PasswordResets;
35
using Domain.Permissions;
46
using Domain.RolePermissions;
57
using Domain.Roles;
68
using Domain.Todos;
9+
using Domain.Token;
10+
using Domain.UserLoginHistories;
11+
using Domain.UserProfiles;
712
using Domain.Users;
813
using Microsoft.EntityFrameworkCore;
14+
using Microsoft.EntityFrameworkCore.ChangeTracking;
915

1016
namespace Application.Abstractions.Data;
1117

1218
public interface IApplicationDbContext
1319
{
1420
DbSet<User> Users { get; }
21+
DbSet<EmailVerifications> EmailVerifications { get; }
22+
DbSet<PasswordReset> PasswordReset { get; }
23+
DbSet<Tokens> Tokens { get; }
1524
DbSet<TodoItem> TodoItems { get; }
1625
DbSet<Customer> Customers { get; }
1726
DbSet<Permission> Permissions { get; }
1827
DbSet<Applicationapply> Applications { get; } // ← ADD THIS
1928
DbSet<RolePermission> RolePermissions { get; }
2029
DbSet<Role> Roles { get; }
30+
DbSet<UserLoginHistory> UserLoginHistory { get; }
31+
DbSet<UserProfile> UserProfile { get; }
32+
EntityEntry Entry(object entity);
2133
Task<int> SaveChangesAsync(CancellationToken cancellationToken = default);
2234
}

src/Application/Customers/Create/CreateCustomerCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace Application.Customers.Create;
99

10-
public sealed class CreateCustomerCommand: ICommand<Guid>
10+
public sealed class CreateCustomerCommand : ICommand<Guid>
1111
{
1212
public string Name { get; set; }
1313
public string Email { get; set; }

src/Application/Customers/Create/CreateCustomerValidator.cs renamed to src/Application/Customers/Create/CreateCustomerCommandValidator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace Application.Customers.Create;
99

10-
public class CreateCustomerValidator: AbstractValidator<CreateCustomerCommand>
10+
public class CreateCustomerValidator : AbstractValidator<CreateCustomerCommand>
1111
{
1212
public CreateCustomerValidator()
1313
{
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using Application.Abstractions.Messaging;
2+
3+
namespace Application.EmailVerification.Create;
4+
5+
public sealed class CreateEmailVerificationCommand : ICommand<Guid>
6+
{
7+
public Guid UserId { get; set; }
8+
public string Token { get; set; }
9+
public DateTime ExpiresAt { get; set; }
10+
public DateTime VerifiedAt { get; set; }
11+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
using Application.Abstractions.Authentication;
2+
using Application.Abstractions.Data;
3+
using Application.Abstractions.Messaging;
4+
using Domain.EmailVerification;
5+
using Domain.Users;
6+
using Microsoft.EntityFrameworkCore;
7+
using SharedKernel;
8+
9+
namespace Application.EmailVerification.Create;
10+
11+
internal sealed class CreateEmailVerificationCommandHandler(
12+
IApplicationDbContext context,
13+
IDateTimeProvider dateTimeProvider,
14+
IUserContext userContext)
15+
: ICommandHandler<CreateEmailVerificationCommand, Guid>
16+
{
17+
public async Task<Result<Guid>> Handle(CreateEmailVerificationCommand command, CancellationToken cancellationToken)
18+
{
19+
if (userContext.UserId != command.UserId)
20+
{
21+
return Result.Failure<Guid>(UserErrors.Unauthorized());
22+
}
23+
24+
User? user = await context.Users.AsNoTracking()
25+
.SingleOrDefaultAsync(u => u.Id == command.UserId, cancellationToken);
26+
27+
if (user is null)
28+
{
29+
return Result.Failure<Guid>(UserErrors.NotFound(command.UserId));
30+
}
31+
32+
var emailVerifications = new EmailVerifications
33+
{
34+
UserId = command.UserId,
35+
Token = command.Token,
36+
ExpiresAt = command.ExpiresAt == default
37+
? dateTimeProvider.UtcNow
38+
: command.ExpiresAt,
39+
VerifiedAt = command.VerifiedAt == default
40+
? dateTimeProvider.UtcNow
41+
: command.VerifiedAt
42+
};
43+
44+
emailVerifications.Raise(new EmailVerificationCreatedDomainEvent(emailVerifications.EvId));
45+
46+
context.EmailVerifications.Add(emailVerifications);
47+
48+
await context.SaveChangesAsync(cancellationToken);
49+
50+
return emailVerifications.EvId;
51+
}
52+
}

0 commit comments

Comments
 (0)