From 0725e4f7cf4c6f723264b6d461b91c660d144cb7 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sun, 30 Oct 2022 22:40:03 +0700 Subject: feat: Apiwork --- .../Database/Internal/ForgotPasswordRequest.cs | 23 ++++++++++++++ code/api/src/Data/Database/Internal/Tenant.cs | 11 +++++++ code/api/src/Data/Database/Internal/User.cs | 37 ++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 code/api/src/Data/Database/Internal/ForgotPasswordRequest.cs create mode 100644 code/api/src/Data/Database/Internal/Tenant.cs create mode 100644 code/api/src/Data/Database/Internal/User.cs (limited to 'code/api/src/Data/Database/Internal') diff --git a/code/api/src/Data/Database/Internal/ForgotPasswordRequest.cs b/code/api/src/Data/Database/Internal/ForgotPasswordRequest.cs new file mode 100644 index 0000000..1510a35 --- /dev/null +++ b/code/api/src/Data/Database/Internal/ForgotPasswordRequest.cs @@ -0,0 +1,23 @@ +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/Tenant.cs b/code/api/src/Data/Database/Internal/Tenant.cs new file mode 100644 index 0000000..b185c7a --- /dev/null +++ b/code/api/src/Data/Database/Internal/Tenant.cs @@ -0,0 +1,11 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class Tenant : BaseWithOwner +{ + public string Name { get; set; } + public string Description { get; set; } + public string ContactEmail { get; set; } + public Guid MasterUserId { get; set; } + public string MasterUserPassword { get; set; } + public ICollection Users { get; set; } +} diff --git a/code/api/src/Data/Database/Internal/User.cs b/code/api/src/Data/Database/Internal/User.cs new file mode 100644 index 0000000..9db5d35 --- /dev/null +++ b/code/api/src/Data/Database/Internal/User.cs @@ -0,0 +1,37 @@ +namespace IOL.GreatOffice.Api.Data.Database; + +public class User : Base +{ + public User() { } + + public User(string username) { + Username = username; + } + + public string FirstName { get; set; } + public string LastName { get; set; } + public string Email { get; set; } + public string Username { get; set; } + public string Password { get; set; } + public ICollection Tenants { get; set; } + + public string DisplayName() { + if (FirstName.HasValue() && LastName.HasValue()) return FirstName + " " + LastName; + return FirstName.HasValue() ? FirstName : Email; + } + + public void HashAndSetPassword(string password) { + Password = PasswordHelper.HashPassword(password); + } + + public bool VerifyPassword(string password) { + return PasswordHelper.Verify(password, Password); + } + + public IEnumerable DefaultClaims() { + return new Claim[] { + new(AppClaims.USER_ID, Id.ToString()), + new(AppClaims.NAME, Username), + }; + } +} \ No newline at end of file -- cgit v1.3