From 04a2b73805fc1213df42ef9af4cdcf27ff7c86db Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Mon, 14 Nov 2022 11:04:36 +0700 Subject: refactor: Password reset service - Use FulfillPasswordResetRequestResult to indicate fulfillment result - Rename db names forgot_password_requests > password_reset_requests --- .../Database/Internal/ForgotPasswordRequest.cs | 23 ---------------------- .../Data/Database/Internal/PasswordResetRequest.cs | 23 ++++++++++++++++++++++ code/api/src/Data/Database/MainAppDatabase.cs | 4 ++-- .../Enums/FulfillPasswordResetRequestResult.cs | 8 ++++++++ .../ForgotPasswordRequestNotFoundException.cs | 21 -------------------- .../src/Data/Exceptions/UserNotFoundException.cs | 19 ------------------ 6 files changed, 33 insertions(+), 65 deletions(-) delete mode 100644 code/api/src/Data/Database/Internal/ForgotPasswordRequest.cs create mode 100644 code/api/src/Data/Database/Internal/PasswordResetRequest.cs create mode 100644 code/api/src/Data/Enums/FulfillPasswordResetRequestResult.cs delete mode 100644 code/api/src/Data/Exceptions/ForgotPasswordRequestNotFoundException.cs delete mode 100644 code/api/src/Data/Exceptions/UserNotFoundException.cs (limited to 'code/api/src/Data') diff --git a/code/api/src/Data/Database/Internal/ForgotPasswordRequest.cs b/code/api/src/Data/Database/Internal/ForgotPasswordRequest.cs deleted file mode 100644 index 1510a35..0000000 --- a/code/api/src/Data/Database/Internal/ForgotPasswordRequest.cs +++ /dev/null @@ -1,23 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Database; - -public class ForgotPasswordRequest -{ - public ForgotPasswordRequest() { } - - public ForgotPasswordRequest(User user) { - CreatedAt = AppDateTime.UtcNow; - Id = Guid.NewGuid(); - User = user; - } - - public Guid Id { get; set; } - public Guid UserId { get; set; } - public User User { get; set; } - public DateTime CreatedAt { get; set; } - - [NotMapped] - public DateTime ExpirationDate => CreatedAt.AddMinutes(15); - - [NotMapped] - public bool IsExpired => DateTime.Compare(ExpirationDate, AppDateTime.UtcNow) < 0; -} diff --git a/code/api/src/Data/Database/Internal/PasswordResetRequest.cs b/code/api/src/Data/Database/Internal/PasswordResetRequest.cs new file mode 100644 index 0000000..ee73fd2 --- /dev/null +++ b/code/api/src/Data/Database/Internal/PasswordResetRequest.cs @@ -0,0 +1,23 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class PasswordResetRequest +{ + public PasswordResetRequest() { } + + public PasswordResetRequest(User user) { + CreatedAt = AppDateTime.UtcNow; + Id = Guid.NewGuid(); + User = user; + } + + public Guid Id { get; set; } + public Guid UserId { get; set; } + public User User { get; set; } + public DateTime CreatedAt { get; set; } + + [NotMapped] + public DateTime ExpirationDate => CreatedAt.AddMinutes(15); + + [NotMapped] + public bool IsExpired => DateTime.Compare(ExpirationDate, AppDateTime.UtcNow) < 0; +} diff --git a/code/api/src/Data/Database/MainAppDatabase.cs b/code/api/src/Data/Database/MainAppDatabase.cs index 41d62a7..fe3ed58 100644 --- a/code/api/src/Data/Database/MainAppDatabase.cs +++ b/code/api/src/Data/Database/MainAppDatabase.cs @@ -6,7 +6,7 @@ public class MainAppDatabase : DbContext, IDataProtectionKeyContext { public MainAppDatabase(DbContextOptions options) : base(options) { } public DbSet Users { get; set; } - public DbSet ForgotPasswordRequests { get; set; } + public DbSet PasswordResetRequests { get; set; } public DbSet AccessTokens { get; set; } public DbSet Tenants { get; set; } public DbSet DataProtectionKeys { get; set; } @@ -27,7 +27,7 @@ public class MainAppDatabase : DbContext, IDataProtectionKeyContext e.HasMany(n => n.Tenants); e.ToTable("users"); }); - modelBuilder.Entity(e => { + modelBuilder.Entity(e => { e.HasOne(c => c.User); e.ToTable("forgot_password_requests"); }); diff --git a/code/api/src/Data/Enums/FulfillPasswordResetRequestResult.cs b/code/api/src/Data/Enums/FulfillPasswordResetRequestResult.cs new file mode 100644 index 0000000..2a84c48 --- /dev/null +++ b/code/api/src/Data/Enums/FulfillPasswordResetRequestResult.cs @@ -0,0 +1,8 @@ +namespace IOL.GreatOffice.Api.Data.Enums; + +public enum FulfillPasswordResetRequestResult +{ + REQUEST_NOT_FOUND, + USER_NOT_FOUND, + FULFILLED +} \ No newline at end of file diff --git a/code/api/src/Data/Exceptions/ForgotPasswordRequestNotFoundException.cs b/code/api/src/Data/Exceptions/ForgotPasswordRequestNotFoundException.cs deleted file mode 100644 index 02474b4..0000000 --- a/code/api/src/Data/Exceptions/ForgotPasswordRequestNotFoundException.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Exceptions; - -[Serializable] -public class ForgotPasswordRequestNotFoundException : Exception -{ - // - // For guidelines regarding the creation of new exception types, see - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp - // and - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp - // - - public ForgotPasswordRequestNotFoundException() { } - public ForgotPasswordRequestNotFoundException(string message) : base(message) { } - public ForgotPasswordRequestNotFoundException(string message, Exception inner) : base(message, inner) { } - - protected ForgotPasswordRequestNotFoundException( - SerializationInfo info, - StreamingContext context - ) : base(info, context) { } -} diff --git a/code/api/src/Data/Exceptions/UserNotFoundException.cs b/code/api/src/Data/Exceptions/UserNotFoundException.cs deleted file mode 100644 index 06b57a9..0000000 --- a/code/api/src/Data/Exceptions/UserNotFoundException.cs +++ /dev/null @@ -1,19 +0,0 @@ -namespace IOL.GreatOffice.Api.Data.Exceptions; - -[Serializable] -public class UserNotFoundException : Exception -{ - // For guidelines regarding the creation of new exception types, see - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconerrorraisinghandlingguidelines.asp - // and - // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncscol/html/csharp07192001.asp - - public UserNotFoundException() { } - public UserNotFoundException(string message) : base(message) { } - public UserNotFoundException(string message, Exception inner) : base(message, inner) { } - - protected UserNotFoundException( - SerializationInfo info, - StreamingContext context - ) : base(info, context) { } -} -- cgit v1.3