diff --git a/Oqtane.Client/Modules/Admin/Users/Add.razor b/Oqtane.Client/Modules/Admin/Users/Add.razor
index 587eb406..6ce94d0a 100644
--- a/Oqtane.Client/Modules/Admin/Users/Add.razor
+++ b/Oqtane.Client/Modules/Admin/Users/Add.razor
@@ -100,8 +100,10 @@
user.Username = username;
user.Password = password;
user.Email = email;
- user.DisplayName = displayname;
+ user.DisplayName = string.IsNullOrWhiteSpace(user.DisplayName) ? user.Username : user.DisplayName;
+
user = await UserService.AddUserAsync(user);
+
if (user != null)
{
await SettingService.UpdateUserSettingsAsync(settings, user.UserId);
diff --git a/Oqtane.Client/Modules/Admin/Users/Edit.razor b/Oqtane.Client/Modules/Admin/Users/Edit.razor
index 9c232a7f..974bc6dd 100644
--- a/Oqtane.Client/Modules/Admin/Users/Edit.razor
+++ b/Oqtane.Client/Modules/Admin/Users/Edit.razor
@@ -62,9 +62,23 @@
}
+
+
+
+ |
+
+
+ |
+
Cancel
+
+
+
}
@code {
@@ -78,6 +92,13 @@
List profiles;
Dictionary settings;
string category = "";
+ string createdby;
+ DateTime createdon;
+ string modifiedby;
+ DateTime modifiedon;
+ string deletedby;
+ DateTime? deletedon;
+ string isdeleted;
protected override async Task OnInitializedAsync()
{
@@ -93,6 +114,13 @@
email = user.Email;
displayname = user.DisplayName;
settings = await SettingService.GetUserSettingsAsync(user.UserId);
+ createdby = user.CreatedBy;
+ createdon = user.CreatedOn;
+ modifiedby = user.ModifiedBy;
+ modifiedon = user.ModifiedOn;
+ deletedby = user.DeletedBy;
+ deletedon = user.DeletedOn;
+ isdeleted = user.IsDeleted.ToString();
}
}
catch (Exception ex)
@@ -115,7 +143,9 @@
user.Username = username;
user.Password = password;
user.Email = email;
- user.DisplayName = displayname;
+ user.DisplayName = string.IsNullOrWhiteSpace(user.DisplayName) ? user.Username : user.DisplayName;
+ user.IsDeleted = (isdeleted == null ? true : Boolean.Parse(isdeleted));
+
user = await UserService.UpdateUserAsync(user);
await SettingService.UpdateUserSettingsAsync(settings, user.UserId);
diff --git a/Oqtane.Server/Scripts/00.00.00.sql b/Oqtane.Server/Scripts/00.00.00.sql
index 569101db..d50dce0a 100644
--- a/Oqtane.Server/Scripts/00.00.00.sql
+++ b/Oqtane.Server/Scripts/00.00.00.sql
@@ -94,6 +94,9 @@ CREATE TABLE [dbo].[User](
[CreatedOn] [datetime] NOT NULL,
[ModifiedBy] [nvarchar](256) NOT NULL,
[ModifiedOn] [datetime] NOT NULL,
+ [DeletedBy] [nvarchar](256) NULL,
+ [DeletedOn] [datetime] NULL,
+ [IsDeleted][bit] NOT NULL
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
[UserId] ASC
diff --git a/Oqtane.Shared/Models/User.cs b/Oqtane.Shared/Models/User.cs
index 001c4472..bec8f3e2 100644
--- a/Oqtane.Shared/Models/User.cs
+++ b/Oqtane.Shared/Models/User.cs
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema;
namespace Oqtane.Models
{
- public class User : IAuditable
+ public class User : IAuditable, IDeletable
{
public int UserId { get; set; }
public string Username { get; set; }
@@ -19,6 +19,9 @@ namespace Oqtane.Models
public DateTime CreatedOn { get; set; }
public string ModifiedBy { get; set; }
public DateTime ModifiedOn { get; set; }
+ public string DeletedBy { get; set; }
+ public DateTime? DeletedOn { get; set; }
+ public bool IsDeleted { get; set; }
[NotMapped]
public string Password { get; set; }