From 6d975599a3e811a88ebca6cf20843391f77f4eed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Holger=20B=C3=B6rchers?= Date: Fri, 21 Aug 2020 22:23:30 +0200 Subject: [PATCH] start working on security group view --- .../DataModels/ModelBuilderExtensions.cs | 3 +- ... 20200821193933_InitialCreate.Designer.cs} | 42 ++++----- ...ial.cs => 20200821193933_InitialCreate.cs} | 10 +-- .../UserServiceDbContextModelSnapshot.cs | 41 ++++----- .../DataModels/Member.cs | 3 - UserService.Infrastructure/DataModels/User.cs | 7 +- UserService.Infrastructure/NodeExtensions.cs | 23 +++++ .../UserService.Infrastructure.csproj | 1 + UserService.Infrastructure/Validators.cs | 4 +- UserService.db | Bin 40960 -> 40960 bytes UserService/Pages/MembersBase.cs | 36 ++++++++ UserService/Pages/SecurityGroups.razor | 80 ++++++++++++++++-- UserService/Pages/SecurityGroups.razor.cs | 42 ++++----- UserService/Pages/Users.razor | 18 +++- UserService/Pages/Users.razor.cs | 43 ++++------ 15 files changed, 243 insertions(+), 110 deletions(-) rename UserService.DatabaseLayer/Migrations/{20200725195658_initial.Designer.cs => 20200821193933_InitialCreate.Designer.cs} (76%) rename UserService.DatabaseLayer/Migrations/{20200725195658_initial.cs => 20200821193933_InitialCreate.cs} (98%) create mode 100644 UserService.Infrastructure/NodeExtensions.cs create mode 100644 UserService/Pages/MembersBase.cs diff --git a/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs b/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs index e2be228..242eebd 100644 --- a/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs +++ b/UserService.DatabaseLayer/DataModels/ModelBuilderExtensions.cs @@ -17,7 +17,7 @@ namespace UserService.DatabaseLayer.DataModels var arizona = new OrganizationUnit{CommonName = "Arizona" , Id = -4, ParentId = -5 }; var france = new OrganizationUnit{CommonName = "France" , Id = -3, ParentId = -2 }; modelBuilder.Entity().HasData(users, groups, germany, usa, arizona, france); - var user = new User { CommonName = "holger", IsActive = true, Id = -7, ParentId = germany.Id }; + var user = new User { CommonName = Environment.UserName, IsActive = true, Id = -7, ParentId = users.Id }; modelBuilder.Entity().HasData(user); var secGroup = new SecurityGroup { CommonName = "Global Admin", Id = -8, ParentId = groups.Id }; modelBuilder.Entity().HasData(secGroup); @@ -39,7 +39,6 @@ namespace UserService.DatabaseLayer.DataModels .HasOne(bc => bc.Member) .WithMany(c => c!.Members) .HasForeignKey(bc => bc.MemberId); - modelBuilder.Entity() .HasMany(c => c.Children) .WithOne(e => e.Parent!) diff --git a/UserService.DatabaseLayer/Migrations/20200725195658_initial.Designer.cs b/UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.Designer.cs similarity index 76% rename from UserService.DatabaseLayer/Migrations/20200725195658_initial.Designer.cs rename to UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.Designer.cs index 56a7dcf..315dc82 100644 --- a/UserService.DatabaseLayer/Migrations/20200725195658_initial.Designer.cs +++ b/UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.Designer.cs @@ -9,16 +9,16 @@ using UserService.DatabaseLayer.DataModels; namespace UserService.DatabaseLayer.Migrations { [DbContext(typeof(UserServiceDbContext))] - [Migration("20200725195658_initial")] - partial class initial + [Migration("20200821193933_InitialCreate")] + partial class InitialCreate { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "3.1.6"); + .HasAnnotation("ProductVersion", "3.1.7"); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Node", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -47,7 +47,7 @@ namespace UserService.DatabaseLayer.Migrations b.HasDiscriminator("Discriminator").HasValue("Node"); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.UserMember", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b => { b.Property("MemberId") .HasColumnType("INTEGER"); @@ -69,9 +69,9 @@ namespace UserService.DatabaseLayer.Migrations }); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Member", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.Member", b => { - b.HasBaseType("UserService.DatabaseLayer.DataModels.Node"); + b.HasBaseType("UserService.Infrastructure.DataModels.Node"); b.Property("EMail") .HasColumnType("TEXT"); @@ -79,9 +79,9 @@ namespace UserService.DatabaseLayer.Migrations b.HasDiscriminator().HasValue("Member"); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.OrganizationUnit", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.OrganizationUnit", b => { - b.HasBaseType("UserService.DatabaseLayer.DataModels.Node"); + b.HasBaseType("UserService.Infrastructure.DataModels.Node"); b.Property("ManagerId") .HasColumnType("INTEGER"); @@ -127,9 +127,9 @@ namespace UserService.DatabaseLayer.Migrations }); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.SecurityGroup", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.SecurityGroup", b => { - b.HasBaseType("UserService.DatabaseLayer.DataModels.Member"); + b.HasBaseType("UserService.Infrastructure.DataModels.Member"); b.HasDiscriminator().HasValue("SecurityGroup"); @@ -142,9 +142,9 @@ namespace UserService.DatabaseLayer.Migrations }); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.User", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.User", b => { - b.HasBaseType("UserService.DatabaseLayer.DataModels.Member"); + b.HasBaseType("UserService.Infrastructure.DataModels.Member"); b.Property("FirstName") .HasColumnType("TEXT"); @@ -162,36 +162,36 @@ namespace UserService.DatabaseLayer.Migrations { Id = -7, CommonName = "holger", - ParentId = -6, + ParentId = -2, IsActive = true }); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Node", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b => { - b.HasOne("UserService.DatabaseLayer.DataModels.Node", "Parent") + b.HasOne("UserService.Infrastructure.DataModels.Node", "Parent") .WithMany("Children") .HasForeignKey("ParentId"); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.UserMember", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b => { - b.HasOne("UserService.DatabaseLayer.DataModels.Member", "Member") + b.HasOne("UserService.Infrastructure.DataModels.Member", "Member") .WithMany("Members") .HasForeignKey("MemberId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("UserService.DatabaseLayer.DataModels.User", "User") + b.HasOne("UserService.Infrastructure.DataModels.User", "User") .WithMany("MemberOf") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.OrganizationUnit", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.OrganizationUnit", b => { - b.HasOne("UserService.DatabaseLayer.DataModels.Member", "Manager") + b.HasOne("UserService.Infrastructure.DataModels.Member", "Manager") .WithMany() .HasForeignKey("ManagerId"); }); diff --git a/UserService.DatabaseLayer/Migrations/20200725195658_initial.cs b/UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.cs similarity index 98% rename from UserService.DatabaseLayer/Migrations/20200725195658_initial.cs rename to UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.cs index bfb6a17..47c7b27 100644 --- a/UserService.DatabaseLayer/Migrations/20200725195658_initial.cs +++ b/UserService.DatabaseLayer/Migrations/20200821193933_InitialCreate.cs @@ -2,7 +2,7 @@ namespace UserService.DatabaseLayer.Migrations { - public partial class initial : Migration + public partial class InitialCreate : Migration { protected override void Up(MigrationBuilder migrationBuilder) { @@ -90,13 +90,13 @@ namespace UserService.DatabaseLayer.Migrations migrationBuilder.InsertData( table: "Node", - columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail" }, - values: new object[] { -8, "Global Admin", null, "SecurityGroup", -1, null }); + columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail", "FirstName", "IsActive", "LastName" }, + values: new object[] { -7, "holger", null, "User", -2, null, null, true, null }); migrationBuilder.InsertData( table: "Node", - columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail", "FirstName", "IsActive", "LastName" }, - values: new object[] { -7, "holger", null, "User", -6, null, null, true, null }); + columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail" }, + values: new object[] { -8, "Global Admin", null, "SecurityGroup", -1, null }); migrationBuilder.InsertData( table: "Node", diff --git a/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs b/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs index c9aa074..6bd5c44 100644 --- a/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs +++ b/UserService.DatabaseLayer/Migrations/UserServiceDbContextModelSnapshot.cs @@ -1,7 +1,8 @@ // - +using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using UserService.DatabaseLayer.DataModels; namespace UserService.DatabaseLayer.Migrations @@ -13,9 +14,9 @@ namespace UserService.DatabaseLayer.Migrations { #pragma warning disable 612, 618 modelBuilder - .HasAnnotation("ProductVersion", "3.1.6"); + .HasAnnotation("ProductVersion", "3.1.7"); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Node", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -44,7 +45,7 @@ namespace UserService.DatabaseLayer.Migrations b.HasDiscriminator("Discriminator").HasValue("Node"); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.UserMember", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b => { b.Property("MemberId") .HasColumnType("INTEGER"); @@ -66,9 +67,9 @@ namespace UserService.DatabaseLayer.Migrations }); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Member", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.Member", b => { - b.HasBaseType("UserService.DatabaseLayer.DataModels.Node"); + b.HasBaseType("UserService.Infrastructure.DataModels.Node"); b.Property("EMail") .HasColumnType("TEXT"); @@ -76,9 +77,9 @@ namespace UserService.DatabaseLayer.Migrations b.HasDiscriminator().HasValue("Member"); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.OrganizationUnit", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.OrganizationUnit", b => { - b.HasBaseType("UserService.DatabaseLayer.DataModels.Node"); + b.HasBaseType("UserService.Infrastructure.DataModels.Node"); b.Property("ManagerId") .HasColumnType("INTEGER"); @@ -124,9 +125,9 @@ namespace UserService.DatabaseLayer.Migrations }); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.SecurityGroup", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.SecurityGroup", b => { - b.HasBaseType("UserService.DatabaseLayer.DataModels.Member"); + b.HasBaseType("UserService.Infrastructure.DataModels.Member"); b.HasDiscriminator().HasValue("SecurityGroup"); @@ -139,9 +140,9 @@ namespace UserService.DatabaseLayer.Migrations }); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.User", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.User", b => { - b.HasBaseType("UserService.DatabaseLayer.DataModels.Member"); + b.HasBaseType("UserService.Infrastructure.DataModels.Member"); b.Property("FirstName") .HasColumnType("TEXT"); @@ -159,36 +160,36 @@ namespace UserService.DatabaseLayer.Migrations { Id = -7, CommonName = "holger", - ParentId = -6, + ParentId = -2, IsActive = true }); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.Node", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b => { - b.HasOne("UserService.DatabaseLayer.DataModels.Node", "Parent") + b.HasOne("UserService.Infrastructure.DataModels.Node", "Parent") .WithMany("Children") .HasForeignKey("ParentId"); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.UserMember", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b => { - b.HasOne("UserService.DatabaseLayer.DataModels.Member", "Member") + b.HasOne("UserService.Infrastructure.DataModels.Member", "Member") .WithMany("Members") .HasForeignKey("MemberId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.HasOne("UserService.DatabaseLayer.DataModels.User", "User") + b.HasOne("UserService.Infrastructure.DataModels.User", "User") .WithMany("MemberOf") .HasForeignKey("UserId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); - modelBuilder.Entity("UserService.DatabaseLayer.DataModels.OrganizationUnit", b => + modelBuilder.Entity("UserService.Infrastructure.DataModels.OrganizationUnit", b => { - b.HasOne("UserService.DatabaseLayer.DataModels.Member", "Manager") + b.HasOne("UserService.Infrastructure.DataModels.Member", "Manager") .WithMany() .HasForeignKey("ManagerId"); }); diff --git a/UserService.Infrastructure/DataModels/Member.cs b/UserService.Infrastructure/DataModels/Member.cs index ee4a4cc..48be61a 100644 --- a/UserService.Infrastructure/DataModels/Member.cs +++ b/UserService.Infrastructure/DataModels/Member.cs @@ -5,9 +5,6 @@ namespace UserService.Infrastructure.DataModels { public abstract class Member : Node { - [EmailAddress] - public string? EMail { get; set; } - public ICollection Members { get; set; } = new List(); } } \ No newline at end of file diff --git a/UserService.Infrastructure/DataModels/User.cs b/UserService.Infrastructure/DataModels/User.cs index a7f458e..29307e0 100644 --- a/UserService.Infrastructure/DataModels/User.cs +++ b/UserService.Infrastructure/DataModels/User.cs @@ -1,4 +1,6 @@ using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; namespace UserService.Infrastructure.DataModels { @@ -7,7 +9,10 @@ namespace UserService.Infrastructure.DataModels public string? FirstName { get; set; } public string? LastName { get; set; } public bool IsActive { get; set; } - + + [EmailAddress] + public string? EMail { get; set; } + public string FullName => $"{FirstName} {LastName}"; public IEnumerable MemberOf { get; set; } = new List(); diff --git a/UserService.Infrastructure/NodeExtensions.cs b/UserService.Infrastructure/NodeExtensions.cs new file mode 100644 index 0000000..db0a73d --- /dev/null +++ b/UserService.Infrastructure/NodeExtensions.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UserService.Infrastructure.DataModels; + +namespace UserService.Infrastructure +{ + public static class NodeExtensions + { + public static void MapFields(this User user, Dictionary values) + { + if (user == null) throw new ArgumentNullException(nameof(user)); + if (values == null) throw new ArgumentNullException(nameof(values)); + var properties = user.GetType().GetProperties(); + foreach (var keyValuePair in values) + { + var propertyInfo = properties.FirstOrDefault(x => x.Name == keyValuePair.Key); + if (propertyInfo == null) continue; + propertyInfo.SetValue(user, keyValuePair.Value); + } + } + } +} \ No newline at end of file diff --git a/UserService.Infrastructure/UserService.Infrastructure.csproj b/UserService.Infrastructure/UserService.Infrastructure.csproj index 551862b..9b7b3a1 100644 --- a/UserService.Infrastructure/UserService.Infrastructure.csproj +++ b/UserService.Infrastructure/UserService.Infrastructure.csproj @@ -3,6 +3,7 @@ netstandard2.0 latest + enable diff --git a/UserService.Infrastructure/Validators.cs b/UserService.Infrastructure/Validators.cs index 5eabcf6..11222cd 100644 --- a/UserService.Infrastructure/Validators.cs +++ b/UserService.Infrastructure/Validators.cs @@ -7,13 +7,13 @@ namespace UserService.Infrastructure { public static class Validators { - public static bool? ValidateEmail(string mailAddress) + public static bool? ValidateEmail(string? mailAddress) { if (string.IsNullOrEmpty(mailAddress)) return null; return new EmailAddressAttribute().IsValid(mailAddress); } - public static bool? ValidateCommonName(string commonName, IReadOnlyList users) + public static bool? ValidateCommonName(string? commonName, IEnumerable users) { if (string.IsNullOrEmpty(commonName)) return false; return users.All(x => x.CommonName != commonName); diff --git a/UserService.db b/UserService.db index adc6bf48576a35c914c5bf477dd3fb9dc74b6429..ca2980f8c942ced04ca1ebd17230eba88d94d3ed 100644 GIT binary patch delta 396 zcmZoTz|?SnX#<-8%Pj`}Tbl(HF7T_XFfzM}8yOfG7+4q?8d@4#8XL!Z=4F;-CgwO7 zr6!i78tWPAnR9Js6u8fCA>Y2Fhj%y(+Gk%ZfD!EZAZ>FN-vuK zK_9#Ds;eM~6$+y+>LQ~ky0D9)u&6E~jHHVqSi0Hlecvs^h!-Ay=lOj-=Xu|m1>MYo zZl1FjIPonUXl7Vnquc3rI=kJSE?;L?r}wOqRMLtR_c&aRt~!Je1Iq}O3-y6_a72dV|ZM|Z27 ztra=<;ch|L%U9-ujYnn8O&7QVZbw+o9;Z~$W3r$|+~8>x%xF?h%NkuqBS$=w zN-NR8bU1=LhDmaeGJA{`gtd2I?FjW|G$j<{PH0j56Vp;!QIn(C!@~wVxSwgIH7BKD zUvFBO1*{G&wCR1WW)kK=z7^$WDNurOz8`_u#mq1*g?$G_Bl1hsqRgJGx zOK8H|9f&3*CGH5Ri2=%N+Hpva$Fwl50#Ol^lK7lb;$bnOjb)Vd)|FLXaGl=AT2PCx zCY{z(v8UCHn2^rNVq!{+$&!{9$7SiCA-RkGjvlX$+SA}6;;YtEQ>)>)*Yj6z?H2xA zU+(tNGrQn5+Rs@KzQ(G-gX(!%6Gx;AYI3TSd*biOwfRSLd4K!W0H-e^C>H83ufTTv zju^Iq8B)VC&y)YPBLr(ScV*aQGcv1dh+#SL7=YG4`0Xn``0c^aDtaz=tBj^KuYqMjm4(5Tb1jCq|B ztDt8QQz3EX7r`>+D`m=*NOA)UHdN|h9t+GfP=@dD6+Z8TkMJIr;3vF<=kN?3!vna7 zb>?9nZeWGe;Km&WE16&+6L=Dt2p9=)1Plc91Xu#P+|s4yZHQ%&nS8EpdR4AjSf?|r F{RZ6cFuVW& diff --git a/UserService/Pages/MembersBase.cs b/UserService/Pages/MembersBase.cs new file mode 100644 index 0000000..fddd685 --- /dev/null +++ b/UserService/Pages/MembersBase.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Blazorise; +using Blazorise.DataGrid; +using Microsoft.AspNetCore.Components; +using UserService.Infrastructure; +using UserService.Infrastructure.DataModels; + +namespace UserService.Pages +{ + public abstract class MembersBase : ComponentBase where T : Member + { + protected IReadOnlyList? OrganizationUnits { get; set; } + + protected IReadOnlyList? Members { get; set; } + + protected string? CustomFilterValue { get; set; } + + protected abstract Task RowInsertingCallback(CancellableRowChange> arg); + + protected abstract Task RowInsertedCallback(SavedRowItem> arg); + protected abstract Task RowDeletingCallback(CancellableRowChange arg); + protected abstract Task RowUpdatingCallback(CancellableRowChange> arg); + protected abstract bool OnCustomFilter(T model); + + protected void ValidateCommonName(ValidatorEventArgs e) + { + if (e == null) throw new ArgumentNullException(nameof(e)); + var commonName = e.Value?.ToString(); + var validationResult = Validators.ValidateCommonName(commonName, Members ?? Enumerable.Empty()); + e.Status = validationResult == false ? ValidationStatus.Error : ValidationStatus.Success; + } + } +} \ No newline at end of file diff --git a/UserService/Pages/SecurityGroups.razor b/UserService/Pages/SecurityGroups.razor index aef421f..e02635f 100644 --- a/UserService/Pages/SecurityGroups.razor +++ b/UserService/Pages/SecurityGroups.razor @@ -4,7 +4,7 @@

Table of all security groups

-@if (Groups is null) +@if (Members is null) {

Loading... @@ -12,10 +12,76 @@ } else { - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Please enter a valid common name! + + + + + + + + @{ + var name = ((SecurityGroup) context ).Parent?.CommonName ?? "-"; + @name + } + + + + + + } \ No newline at end of file diff --git a/UserService/Pages/SecurityGroups.razor.cs b/UserService/Pages/SecurityGroups.razor.cs index c1fcb06..4145a00 100644 --- a/UserService/Pages/SecurityGroups.razor.cs +++ b/UserService/Pages/SecurityGroups.razor.cs @@ -1,47 +1,49 @@ using System.Collections.Generic; using System.Threading.Tasks; +using Blazorise.DataGrid; using Microsoft.AspNetCore.Components; using UserService.DatabaseLayer.Repository; using UserService.Infrastructure.DataModels; namespace UserService.Pages { - public class SecurityGroupsBase : ComponentBase + public class SecurityGroupsBase : MembersBase { [Inject] private ISecurityGroupsRepository SecurityGroupsRepository { get; set; } = null!; [Inject] private IOrganizationUnitsRepository OrganizationUnitsRepository { get; set; } = null!; - protected bool DialogIsOpen { get; set; } - protected SecurityGroup? SecurityGroupToEdit { get; set; } - - protected IReadOnlyList? Groups { get; set; } - protected IReadOnlyList? OrganizationUnits { get; set; } - protected override async Task OnInitializedAsync() { - Groups = await SecurityGroupsRepository.GetAllAsync().ConfigureAwait(false); + Members = await SecurityGroupsRepository.GetAllAsync().ConfigureAwait(false); OrganizationUnits = await OrganizationUnitsRepository.GetAllAsync().ConfigureAwait(false); } - protected void EditSecurityGroup(SecurityGroup securityGroup) + /// + protected override async Task RowInsertingCallback(CancellableRowChange> arg) { - SecurityGroupToEdit = securityGroup; - DialogIsOpen = true; } - protected async Task OkClick() + /// + protected override async Task RowInsertedCallback(SavedRowItem> arg) { - if (!(SecurityGroupToEdit is null)) - { - await SecurityGroupsRepository.UpdateAsync(SecurityGroupToEdit).ConfigureAwait(false); - } - - DialogIsOpen = false; } - protected async Task DeleteSecurityGroup(SecurityGroup securityGroup) + /// + protected override async Task RowDeletingCallback(CancellableRowChange arg) { - await SecurityGroupsRepository.DeleteAsync(securityGroup).ConfigureAwait(false); + + + } + + /// + protected override async Task RowUpdatingCallback(CancellableRowChange> arg) + { + } + + /// + protected override bool OnCustomFilter(SecurityGroup model) + { + return true; } } } \ No newline at end of file diff --git a/UserService/Pages/Users.razor b/UserService/Pages/Users.razor index 33c4612..625b638 100644 --- a/UserService/Pages/Users.razor +++ b/UserService/Pages/Users.razor @@ -4,7 +4,7 @@

List of all users

-@if (Users == null) +@if (Members == null) {

Loading... @@ -14,7 +14,18 @@ else { - +