Moved from int id to guid
This commit is contained in:
parent
05efdf51de
commit
31ef9bf45b
@ -10,32 +10,32 @@ namespace UserService.DatabaseLayer.DataModels
|
||||
public static void Seed(this ModelBuilder modelBuilder)
|
||||
{
|
||||
if (modelBuilder == null) throw new ArgumentNullException(nameof(modelBuilder));
|
||||
var groups = new OrganizationUnit { CommonName = "Groups", Id = -1 };
|
||||
var users = new OrganizationUnit { CommonName = "Users", Id = -2 };
|
||||
var germany = new OrganizationUnit{CommonName = "Germany", Id = -6, ParentId = -2};
|
||||
var usa = new OrganizationUnit{CommonName = "USA", Id = -5, ParentId = -2};
|
||||
var arizona = new OrganizationUnit{CommonName = "Arizona" , Id = -4, ParentId = -5 };
|
||||
var france = new OrganizationUnit{CommonName = "France" , Id = -3, ParentId = -2 };
|
||||
var groups = new OrganizationUnit { CommonName = "Groups", Id = Guid.NewGuid() };
|
||||
var users = new OrganizationUnit { CommonName = "Users", Id = Guid.NewGuid() };
|
||||
var germany = new OrganizationUnit { CommonName = "Germany", Id = Guid.NewGuid(), ParentId = users.Id };
|
||||
var usa = new OrganizationUnit { CommonName = "USA", Id = Guid.NewGuid(), ParentId = users.Id };
|
||||
var arizona = new OrganizationUnit { CommonName = "Arizona", Id = Guid.NewGuid(), ParentId = usa.Id };
|
||||
var france = new OrganizationUnit { CommonName = "France", Id = Guid.NewGuid(), ParentId = users.Id };
|
||||
modelBuilder.Entity<OrganizationUnit>().HasData(users, groups, germany, usa, arizona, france);
|
||||
var user = new User { CommonName = Environment.UserName, IsActive = true, Id = -7, ParentId = users.Id };
|
||||
var user = new User { CommonName = Environment.UserName, IsActive = true, Id = Guid.NewGuid(), ParentId = users.Id };
|
||||
modelBuilder.Entity<User>().HasData(user);
|
||||
var secGroup = new SecurityGroup { CommonName = "Global Admin", Id = -8, ParentId = groups.Id };
|
||||
var secGroup = new SecurityGroup { CommonName = "Global Admin", Id = Guid.NewGuid(), ParentId = groups.Id };
|
||||
modelBuilder.Entity<SecurityGroup>().HasData(secGroup);
|
||||
|
||||
modelBuilder.Entity<UserMember>()
|
||||
.HasData(new UserMember { MemberId = secGroup.Id, UserId = user.Id });
|
||||
modelBuilder.Entity<MembersMember>()
|
||||
.HasData(new MembersMember { MemberId = secGroup.Id, AttachedMemberId = user.Id });
|
||||
}
|
||||
|
||||
public static void CreateRelations(this ModelBuilder modelBuilder)
|
||||
{
|
||||
if (modelBuilder == null) throw new ArgumentNullException(nameof(modelBuilder));
|
||||
modelBuilder.Entity<UserMember>()
|
||||
.HasKey(bc => new { bc.MemberId, bc.UserId });
|
||||
modelBuilder.Entity<UserMember>()
|
||||
.HasOne(bc => bc.User)
|
||||
modelBuilder.Entity<MembersMember>()
|
||||
.HasKey(bc => new { bc.MemberId, AttachedMemberId = bc.AttachedMemberId });
|
||||
modelBuilder.Entity<MembersMember>()
|
||||
.HasOne(bc => bc.AttachedMember)
|
||||
.WithMany(b => b!.MemberOf)
|
||||
.HasForeignKey(bc => bc.UserId);
|
||||
modelBuilder.Entity<UserMember>()
|
||||
.HasForeignKey(bc => bc.AttachedMemberId);
|
||||
modelBuilder.Entity<MembersMember>()
|
||||
.HasOne(bc => bc.Member)
|
||||
.WithMany(c => c!.Members)
|
||||
.HasForeignKey(bc => bc.MemberId);
|
||||
@ -64,13 +64,13 @@ namespace UserService.DatabaseLayer.DataModels
|
||||
|
||||
public static class SecurityGroupExtensions
|
||||
{
|
||||
public static IEnumerable<User> GetUsers(this SecurityGroup securityGroup)
|
||||
public static IEnumerable<Member> GetAttachedMembers(this SecurityGroup securityGroup)
|
||||
{
|
||||
if (securityGroup == null) throw new ArgumentNullException(nameof(securityGroup));
|
||||
foreach (var userMember in securityGroup.Members)
|
||||
{
|
||||
if (userMember.User is null) continue;
|
||||
yield return userMember.User;
|
||||
if (userMember.AttachedMember is null) continue;
|
||||
yield return userMember.AttachedMember;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,7 @@ namespace UserService.DatabaseLayer.DataModels
|
||||
{
|
||||
public DbSet<User> Users { get; set; } = null!;
|
||||
public DbSet<SecurityGroup> SecurityGroups { get; set; } = null!;
|
||||
public DbSet<UserMember> UserMembers { get; set; } = null!;
|
||||
public DbSet<MembersMember> UserMembers { get; set; } = null!;
|
||||
public DbSet<OrganizationUnit> OrganizationUnits { get; set; } = null!;
|
||||
|
||||
protected override void OnConfiguring(DbContextOptionsBuilder options)
|
||||
|
@ -9,7 +9,7 @@ using UserService.DatabaseLayer.DataModels;
|
||||
namespace UserService.DatabaseLayer.Migrations
|
||||
{
|
||||
[DbContext(typeof(UserServiceDbContext))]
|
||||
[Migration("20200821193933_InitialCreate")]
|
||||
[Migration("20200906191545_InitialCreate")]
|
||||
partial class InitialCreate
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
@ -18,11 +18,33 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "3.1.7");
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.MembersMember", b =>
|
||||
{
|
||||
b.Property<Guid>("MemberId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<Guid>("AttachedMemberId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("MemberId", "AttachedMemberId");
|
||||
|
||||
b.HasIndex("AttachedMemberId");
|
||||
|
||||
b.ToTable("UserMembers");
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
MemberId = new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"),
|
||||
AttachedMemberId = new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269")
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("CommonName")
|
||||
.IsRequired()
|
||||
@ -35,8 +57,8 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("ParentId")
|
||||
.HasColumnType("INTEGER");
|
||||
b.Property<Guid?>("ParentId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
@ -47,35 +69,10 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
b.HasDiscriminator<string>("Discriminator").HasValue("Node");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b =>
|
||||
{
|
||||
b.Property<int>("MemberId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("UserId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("MemberId", "UserId");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("UserMembers");
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
MemberId = -8,
|
||||
UserId = -7
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.Member", b =>
|
||||
{
|
||||
b.HasBaseType("UserService.Infrastructure.DataModels.Node");
|
||||
|
||||
b.Property<string>("EMail")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasDiscriminator().HasValue("Member");
|
||||
});
|
||||
|
||||
@ -83,8 +80,8 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
{
|
||||
b.HasBaseType("UserService.Infrastructure.DataModels.Node");
|
||||
|
||||
b.Property<int?>("ManagerId")
|
||||
.HasColumnType("INTEGER");
|
||||
b.Property<Guid?>("ManagerId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasIndex("ManagerId");
|
||||
|
||||
@ -93,37 +90,37 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Id = -2,
|
||||
Id = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"),
|
||||
CommonName = "Users"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -1,
|
||||
Id = new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913"),
|
||||
CommonName = "Groups"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -6,
|
||||
Id = new Guid("c743fff4-9bdf-45a4-b4c9-391f6fc46433"),
|
||||
CommonName = "Germany",
|
||||
ParentId = -2
|
||||
ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551")
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -5,
|
||||
Id = new Guid("cecbf557-59cc-475c-b136-02da39aa4911"),
|
||||
CommonName = "USA",
|
||||
ParentId = -2
|
||||
ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551")
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -4,
|
||||
Id = new Guid("89e1d70e-da3d-4cc9-81f1-a2fa76a6d33b"),
|
||||
CommonName = "Arizona",
|
||||
ParentId = -5
|
||||
ParentId = new Guid("cecbf557-59cc-475c-b136-02da39aa4911")
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -3,
|
||||
Id = new Guid("97ad8c82-c5ea-4de1-a474-bf25418a9533"),
|
||||
CommonName = "France",
|
||||
ParentId = -2
|
||||
ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551")
|
||||
});
|
||||
});
|
||||
|
||||
@ -136,9 +133,9 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Id = -8,
|
||||
Id = new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"),
|
||||
CommonName = "Global Admin",
|
||||
ParentId = -1
|
||||
ParentId = new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913")
|
||||
});
|
||||
});
|
||||
|
||||
@ -146,6 +143,9 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
{
|
||||
b.HasBaseType("UserService.Infrastructure.DataModels.Member");
|
||||
|
||||
b.Property<string>("EMail")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("FirstName")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@ -160,13 +160,28 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Id = -7,
|
||||
Id = new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269"),
|
||||
CommonName = "holger",
|
||||
ParentId = -2,
|
||||
ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"),
|
||||
IsActive = true
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.MembersMember", b =>
|
||||
{
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Member", "AttachedMember")
|
||||
.WithMany("MemberOf")
|
||||
.HasForeignKey("AttachedMemberId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Member", "Member")
|
||||
.WithMany("Members")
|
||||
.HasForeignKey("MemberId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b =>
|
||||
{
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Node", "Parent")
|
||||
@ -174,21 +189,6 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
.HasForeignKey("ParentId");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b =>
|
||||
{
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Member", "Member")
|
||||
.WithMany("Members")
|
||||
.HasForeignKey("MemberId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("UserService.Infrastructure.DataModels.User", "User")
|
||||
.WithMany("MemberOf")
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.OrganizationUnit", b =>
|
||||
{
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Member", "Manager")
|
@ -1,4 +1,5 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace UserService.DatabaseLayer.Migrations
|
||||
{
|
||||
@ -10,17 +11,16 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
name: "Node",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(nullable: false)
|
||||
.Annotation("Sqlite:Autoincrement", true),
|
||||
Id = table.Column<Guid>(nullable: false),
|
||||
CommonName = table.Column<string>(nullable: false),
|
||||
Description = table.Column<string>(nullable: true),
|
||||
ParentId = table.Column<int>(nullable: true),
|
||||
ParentId = table.Column<Guid>(nullable: true),
|
||||
Discriminator = table.Column<string>(nullable: false),
|
||||
EMail = table.Column<string>(nullable: true),
|
||||
FirstName = table.Column<string>(nullable: true),
|
||||
LastName = table.Column<string>(nullable: true),
|
||||
IsActive = table.Column<bool>(nullable: true),
|
||||
ManagerId = table.Column<int>(nullable: true)
|
||||
EMail = table.Column<string>(nullable: true),
|
||||
ManagerId = table.Column<Guid>(nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
@ -43,21 +43,21 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
name: "UserMembers",
|
||||
columns: table => new
|
||||
{
|
||||
MemberId = table.Column<int>(nullable: false),
|
||||
UserId = table.Column<int>(nullable: false)
|
||||
MemberId = table.Column<Guid>(nullable: false),
|
||||
AttachedMemberId = table.Column<Guid>(nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_UserMembers", x => new { x.MemberId, x.UserId });
|
||||
table.PrimaryKey("PK_UserMembers", x => new { x.MemberId, x.AttachedMemberId });
|
||||
table.ForeignKey(
|
||||
name: "FK_UserMembers_Node_MemberId",
|
||||
column: x => x.MemberId,
|
||||
name: "FK_UserMembers_Node_AttachedMemberId",
|
||||
column: x => x.AttachedMemberId,
|
||||
principalTable: "Node",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_UserMembers_Node_UserId",
|
||||
column: x => x.UserId,
|
||||
name: "FK_UserMembers_Node_MemberId",
|
||||
column: x => x.MemberId,
|
||||
principalTable: "Node",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
@ -66,47 +66,47 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
migrationBuilder.InsertData(
|
||||
table: "Node",
|
||||
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
|
||||
values: new object[] { -2, "Users", null, "OrganizationUnit", null, null });
|
||||
values: new object[] { new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), "Users", null, "OrganizationUnit", null, null });
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "Node",
|
||||
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
|
||||
values: new object[] { -1, "Groups", null, "OrganizationUnit", null, null });
|
||||
values: new object[] { new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913"), "Groups", null, "OrganizationUnit", null, null });
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "Node",
|
||||
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
|
||||
values: new object[] { -6, "Germany", null, "OrganizationUnit", -2, null });
|
||||
values: new object[] { new Guid("c743fff4-9bdf-45a4-b4c9-391f6fc46433"), "Germany", null, "OrganizationUnit", new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), null });
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "Node",
|
||||
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
|
||||
values: new object[] { -5, "USA", null, "OrganizationUnit", -2, null });
|
||||
values: new object[] { new Guid("cecbf557-59cc-475c-b136-02da39aa4911"), "USA", null, "OrganizationUnit", new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), null });
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "Node",
|
||||
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
|
||||
values: new object[] { -3, "France", null, "OrganizationUnit", -2, null });
|
||||
values: new object[] { new Guid("97ad8c82-c5ea-4de1-a474-bf25418a9533"), "France", null, "OrganizationUnit", new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), null });
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "Node",
|
||||
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "EMail", "FirstName", "IsActive", "LastName" },
|
||||
values: new object[] { -7, "holger", null, "User", -2, null, null, true, null });
|
||||
values: new object[] { new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269"), "holger", null, "User", new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"), null, null, true, null });
|
||||
|
||||
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" },
|
||||
values: new object[] { new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"), "Global Admin", null, "SecurityGroup", new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913") });
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "Node",
|
||||
columns: new[] { "Id", "CommonName", "Description", "Discriminator", "ParentId", "ManagerId" },
|
||||
values: new object[] { -4, "Arizona", null, "OrganizationUnit", -5, null });
|
||||
values: new object[] { new Guid("89e1d70e-da3d-4cc9-81f1-a2fa76a6d33b"), "Arizona", null, "OrganizationUnit", new Guid("cecbf557-59cc-475c-b136-02da39aa4911"), null });
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "UserMembers",
|
||||
columns: new[] { "MemberId", "UserId" },
|
||||
values: new object[] { -8, -7 });
|
||||
columns: new[] { "MemberId", "AttachedMemberId" },
|
||||
values: new object[] { new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"), new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269") });
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_Node_ParentId",
|
||||
@ -119,9 +119,9 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
column: "ManagerId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_UserMembers_UserId",
|
||||
name: "IX_UserMembers_AttachedMemberId",
|
||||
table: "UserMembers",
|
||||
column: "UserId");
|
||||
column: "AttachedMemberId");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
@ -16,11 +16,33 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "3.1.7");
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.MembersMember", b =>
|
||||
{
|
||||
b.Property<Guid>("MemberId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<Guid>("AttachedMemberId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("MemberId", "AttachedMemberId");
|
||||
|
||||
b.HasIndex("AttachedMemberId");
|
||||
|
||||
b.ToTable("UserMembers");
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
MemberId = new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"),
|
||||
AttachedMemberId = new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269")
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
b.Property<Guid>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("CommonName")
|
||||
.IsRequired()
|
||||
@ -33,8 +55,8 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("ParentId")
|
||||
.HasColumnType("INTEGER");
|
||||
b.Property<Guid?>("ParentId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
@ -45,35 +67,10 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
b.HasDiscriminator<string>("Discriminator").HasValue("Node");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b =>
|
||||
{
|
||||
b.Property<int>("MemberId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("UserId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("MemberId", "UserId");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("UserMembers");
|
||||
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
MemberId = -8,
|
||||
UserId = -7
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.Member", b =>
|
||||
{
|
||||
b.HasBaseType("UserService.Infrastructure.DataModels.Node");
|
||||
|
||||
b.Property<string>("EMail")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasDiscriminator().HasValue("Member");
|
||||
});
|
||||
|
||||
@ -81,8 +78,8 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
{
|
||||
b.HasBaseType("UserService.Infrastructure.DataModels.Node");
|
||||
|
||||
b.Property<int?>("ManagerId")
|
||||
.HasColumnType("INTEGER");
|
||||
b.Property<Guid?>("ManagerId")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasIndex("ManagerId");
|
||||
|
||||
@ -91,37 +88,37 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Id = -2,
|
||||
Id = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"),
|
||||
CommonName = "Users"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -1,
|
||||
Id = new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913"),
|
||||
CommonName = "Groups"
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -6,
|
||||
Id = new Guid("c743fff4-9bdf-45a4-b4c9-391f6fc46433"),
|
||||
CommonName = "Germany",
|
||||
ParentId = -2
|
||||
ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551")
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -5,
|
||||
Id = new Guid("cecbf557-59cc-475c-b136-02da39aa4911"),
|
||||
CommonName = "USA",
|
||||
ParentId = -2
|
||||
ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551")
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -4,
|
||||
Id = new Guid("89e1d70e-da3d-4cc9-81f1-a2fa76a6d33b"),
|
||||
CommonName = "Arizona",
|
||||
ParentId = -5
|
||||
ParentId = new Guid("cecbf557-59cc-475c-b136-02da39aa4911")
|
||||
},
|
||||
new
|
||||
{
|
||||
Id = -3,
|
||||
Id = new Guid("97ad8c82-c5ea-4de1-a474-bf25418a9533"),
|
||||
CommonName = "France",
|
||||
ParentId = -2
|
||||
ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551")
|
||||
});
|
||||
});
|
||||
|
||||
@ -134,9 +131,9 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Id = -8,
|
||||
Id = new Guid("a830a548-8b92-4a95-aa8e-c71ae814c6a3"),
|
||||
CommonName = "Global Admin",
|
||||
ParentId = -1
|
||||
ParentId = new Guid("c94f4749-b7c7-418d-8c10-bc4253c4b913")
|
||||
});
|
||||
});
|
||||
|
||||
@ -144,6 +141,9 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
{
|
||||
b.HasBaseType("UserService.Infrastructure.DataModels.Member");
|
||||
|
||||
b.Property<string>("EMail")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("FirstName")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@ -158,13 +158,28 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
b.HasData(
|
||||
new
|
||||
{
|
||||
Id = -7,
|
||||
Id = new Guid("fd9f5d95-0898-47d4-8d25-6956077ba269"),
|
||||
CommonName = "holger",
|
||||
ParentId = -2,
|
||||
ParentId = new Guid("c2366c9c-e79a-45c8-933c-40d0301b2551"),
|
||||
IsActive = true
|
||||
});
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.MembersMember", b =>
|
||||
{
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Member", "AttachedMember")
|
||||
.WithMany("MemberOf")
|
||||
.HasForeignKey("AttachedMemberId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Member", "Member")
|
||||
.WithMany("Members")
|
||||
.HasForeignKey("MemberId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.Node", b =>
|
||||
{
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Node", "Parent")
|
||||
@ -172,21 +187,6 @@ namespace UserService.DatabaseLayer.Migrations
|
||||
.HasForeignKey("ParentId");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.UserMember", b =>
|
||||
{
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Member", "Member")
|
||||
.WithMany("Members")
|
||||
.HasForeignKey("MemberId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("UserService.Infrastructure.DataModels.User", "User")
|
||||
.WithMany("MemberOf")
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("UserService.Infrastructure.DataModels.OrganizationUnit", b =>
|
||||
{
|
||||
b.HasOne("UserService.Infrastructure.DataModels.Member", "Manager")
|
||||
|
@ -4,6 +4,8 @@ namespace UserService.Infrastructure.DataModels
|
||||
{
|
||||
public abstract class Member : Node
|
||||
{
|
||||
public ICollection<UserMember> Members { get; set; } = new List<UserMember>();
|
||||
public ICollection<MembersMember> Members { get; set; } = new List<MembersMember>();
|
||||
|
||||
public ICollection<MembersMember> MemberOf { get; set; } = null!;
|
||||
}
|
||||
}
|
13
UserService.Infrastructure/DataModels/MembersMember.cs
Normal file
13
UserService.Infrastructure/DataModels/MembersMember.cs
Normal file
@ -0,0 +1,13 @@
|
||||
using System;
|
||||
namespace UserService.Infrastructure.DataModels
|
||||
{
|
||||
public class MembersMember
|
||||
{
|
||||
public Guid MemberId { get; set; }
|
||||
public Member? Member { get; set; }
|
||||
|
||||
public Guid AttachedMemberId { get; set; }
|
||||
|
||||
public Member? AttachedMember { get; set; }
|
||||
}
|
||||
}
|
@ -7,12 +7,12 @@ namespace UserService.Infrastructure.DataModels
|
||||
{
|
||||
public abstract class Node : ICloneable
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public Guid Id { get; set; }
|
||||
[Required] public string CommonName { get; set; } = null!;
|
||||
public string? Description { get; set; }
|
||||
public ICollection<Node> Children { get; set; } = new List<Node>();
|
||||
public Node? Parent { get; set; } //Parent
|
||||
public int? ParentId { get; set; }
|
||||
public Guid? ParentId { get; set; }
|
||||
|
||||
public override string ToString() => CommonName;
|
||||
|
||||
|
@ -14,7 +14,5 @@ namespace UserService.Infrastructure.DataModels
|
||||
public string? EMail { get; set; }
|
||||
|
||||
public string FullName => $"{FirstName} {LastName}";
|
||||
|
||||
public IEnumerable<UserMember> MemberOf { get; set; } = new List<UserMember>();
|
||||
}
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
namespace UserService.Infrastructure.DataModels
|
||||
{
|
||||
public class UserMember
|
||||
{
|
||||
public int MemberId { get; set; }
|
||||
public Member? Member { get; set; }
|
||||
|
||||
public int UserId { get; set; }
|
||||
|
||||
public User? User { get; set; }
|
||||
}
|
||||
}
|
@ -26,7 +26,7 @@ namespace UserService.Test
|
||||
var mo = await db.UserMembers.ToListAsync().ConfigureAwait(false);
|
||||
|
||||
var securityGroupsOfUser = user.GetSecurityGroups();
|
||||
var usersOfSecurityGroup = secGroup.GetUsers();
|
||||
var usersOfSecurityGroup = secGroup.GetAttachedMembers();
|
||||
//var testGroup = new SecurityGroup {CommonName = "Test", Parent = ous.Last()};
|
||||
//await db.SecurityGroups.AddAsync(testGroup);
|
||||
//var testgroup = await db.SecurityGroups.FindAsync(1);
|
||||
|
BIN
UserService.db
BIN
UserService.db
Binary file not shown.
@ -74,10 +74,10 @@ else
|
||||
}
|
||||
</DisplayTemplate>
|
||||
<EditTemplate>
|
||||
<Select TValue="int?" SelectedValue="@((int?)(context.CellValue))" SelectedValueChanged="@(v => context.CellValue = v)" >
|
||||
<Select TValue="Guid?" SelectedValue="@((Guid?)(context.CellValue))" SelectedValueChanged="@(v => context.CellValue = v)" >
|
||||
@foreach (var item in OrganizationUnits ?? Enumerable.Empty<OrganizationUnit>())
|
||||
{
|
||||
<SelectItem TValue="int" Value="@(item.Id)">@item.CommonName</SelectItem>
|
||||
<SelectItem TValue="Guid" Value="@(item.Id)">@item.CommonName</SelectItem>
|
||||
}
|
||||
</Select>
|
||||
</EditTemplate>
|
||||
@ -128,25 +128,29 @@ else
|
||||
<TableHeaderCell></TableHeaderCell>
|
||||
</TableRow>
|
||||
</TableHeader>
|
||||
<TableBody>
|
||||
<TableRow>
|
||||
<TableRowHeader>1</TableRowHeader>
|
||||
<TableRowCell>Mark</TableRowCell>
|
||||
<TableRowCell>
|
||||
<Button Color="Color.Danger">Delete</Button>
|
||||
</TableRowCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableRowHeader>2</TableRowHeader>
|
||||
<TableRowCell>Jacob</TableRowCell>
|
||||
<TableRowCell><Button>Delete</Button></TableRowCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableRowHeader>3</TableRowHeader>
|
||||
<TableRowCell>Larry</TableRowCell>
|
||||
<TableRowCell><Button>Delete</Button></TableRowCell>
|
||||
</TableRow>
|
||||
</TableBody>
|
||||
<TableBody>
|
||||
@foreach (var member in SelectedSecurityGroup?.Members ?? Enumerable.Empty<MembersMember>())
|
||||
{
|
||||
<TableRow>
|
||||
<TableRowHeader>@member.MemberId</TableRowHeader>
|
||||
<TableRowCell>Mark</TableRowCell>
|
||||
<TableRowCell>
|
||||
<Button Color="Color.Danger">Delete</Button>
|
||||
</TableRowCell>
|
||||
</TableRow>
|
||||
}
|
||||
|
||||
<TableRow>
|
||||
<TableRowHeader>2</TableRowHeader>
|
||||
<TableRowCell>Jacob</TableRowCell>
|
||||
<TableRowCell><Button>Delete</Button></TableRowCell>
|
||||
</TableRow>
|
||||
<TableRow>
|
||||
<TableRowHeader>3</TableRowHeader>
|
||||
<TableRowCell>Larry</TableRowCell>
|
||||
<TableRowCell><Button>Delete</Button></TableRowCell>
|
||||
</TableRow>
|
||||
</TableBody>
|
||||
</Table>
|
||||
</Column>
|
||||
</Row>
|
||||
|
@ -15,7 +15,7 @@ namespace UserService.Pages
|
||||
[Inject] private ISecurityGroupsRepository SecurityGroupsRepository { get; set; } = null!;
|
||||
|
||||
[Inject] private IUsersRepository UsersRepository { get; set; } = null!;
|
||||
|
||||
|
||||
[Inject] private IOrganizationUnitsRepository OrganizationUnitsRepository { get; set; } = null!;
|
||||
|
||||
// reference to the modal component
|
||||
@ -57,7 +57,7 @@ namespace UserService.Pages
|
||||
var securityGroup = arg.Item;
|
||||
securityGroup.MapFields(arg.Values);
|
||||
securityGroup.Parent =
|
||||
OrganizationUnits?.FirstOrDefault(x => x.Id == (int?) arg.Values[nameof(Node.ParentId)]);
|
||||
OrganizationUnits?.FirstOrDefault(x => x.Id == (Guid?)arg.Values[nameof(Node.ParentId)]);
|
||||
var result = await SecurityGroupsRepository.UpdateAsync(securityGroup).ConfigureAwait(false);
|
||||
arg.Cancel = !result;
|
||||
}
|
||||
@ -89,14 +89,14 @@ namespace UserService.Pages
|
||||
}
|
||||
|
||||
|
||||
protected async Task AddToListAsync()
|
||||
{
|
||||
//SelectedSecurityGroup.Members.Add(new UserMember());
|
||||
}
|
||||
protected async Task AddToListAsync()
|
||||
{
|
||||
//SelectedSecurityGroup.Members.Add(new UserMember());
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected void OnButtonClicked(SecurityGroup securityGroup)
|
||||
protected void OnButtonClicked(SecurityGroup securityGroup)
|
||||
{
|
||||
SelectedSecurityGroup = securityGroup;
|
||||
ModalRef.Show();
|
||||
|
@ -90,10 +90,10 @@ else
|
||||
}
|
||||
</DisplayTemplate>
|
||||
<EditTemplate>
|
||||
<Select TValue="int?" SelectedValue="@((int?)(context.CellValue))" SelectedValueChanged="@(v => context.CellValue = v)" >
|
||||
<Select TValue="Guid?" SelectedValue="@((Guid?)(context.CellValue))" SelectedValueChanged="@(v => context.CellValue = v)" >
|
||||
@foreach (var item in OrganizationUnits ?? Enumerable.Empty<OrganizationUnit>())
|
||||
{
|
||||
<SelectItem TValue="int" Value="@(item.Id)">@item.CommonName</SelectItem>
|
||||
<SelectItem TValue="Guid" Value="@(item.Id)">@item.CommonName</SelectItem>
|
||||
}
|
||||
</Select>
|
||||
</EditTemplate>
|
||||
|
@ -71,7 +71,7 @@ namespace UserService.Pages
|
||||
if (arg == null) throw new ArgumentNullException(nameof(arg));
|
||||
var user = arg.Item;
|
||||
user.MapFields(arg.Values);
|
||||
user.Parent = OrganizationUnits?.FirstOrDefault(x => x.Id == (int?)arg.Values[nameof(Node.ParentId)]);
|
||||
user.Parent = OrganizationUnits?.FirstOrDefault(x => x.Id == (Guid?)arg.Values[nameof(Node.ParentId)]);
|
||||
var result = await UsersRepository.UpdateAsync(user).ConfigureAwait(false);
|
||||
arg.Cancel = !result;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user