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; }