diff --git a/src/Services/Masa.Auth.Service.Admin/Application/Subjects/QueryHandler.cs b/src/Services/Masa.Auth.Service.Admin/Application/Subjects/QueryHandler.cs index 3937b189d..3b5104d79 100644 --- a/src/Services/Masa.Auth.Service.Admin/Application/Subjects/QueryHandler.cs +++ b/src/Services/Masa.Auth.Service.Admin/Application/Subjects/QueryHandler.cs @@ -422,12 +422,13 @@ public async Task GetThirdPartyUserAsync(ThirdPartyUserQuery query) .Include(tpu => tpu.User.Roles) .FirstOrDefaultAsync(tpu => tpu.ThridPartyIdentity == query.ThridPartyIdentity); var userModel = tpUser?.User?.Adapt(); - + if (tpUser != null && tpUser.User != null && userModel != null) { var staff = tpUser.User.Staff; userModel.StaffId = (staff == null || !staff.Enabled) ? Guid.Empty : staff.Id; userModel.CurrentTeamId = staff?.CurrentTeamId; + userModel.ClaimData = tpUser.ClaimData; } query.Result = userModel; diff --git a/src/Services/Masa.Auth.Service.Admin/Domain/Subjects/Aggregates/PasswordType.cs b/src/Services/Masa.Auth.Service.Admin/Domain/Subjects/Aggregates/PasswordType.cs new file mode 100644 index 000000000..a2d33b036 --- /dev/null +++ b/src/Services/Masa.Auth.Service.Admin/Domain/Subjects/Aggregates/PasswordType.cs @@ -0,0 +1,72 @@ +// Copyright (c) MASA Stack All rights reserved. +// Licensed under the Apache License. See LICENSE.txt in the project root for license information. + +using Microsoft.AspNetCore.Identity; + +namespace Masa.Auth.Service.Admin.Domain.Subjects.Aggregates; + +public class PasswordType : Enumeration +{ + public static PasswordType Default = new PasswordType(); + + public static PasswordType MD5 = new MD5PasswordType(); + + public static PasswordType HashPassword = new HashPasswordType(); + + public PasswordType() : base(0, "") { } + + public PasswordType(int id, string name) : base(id, name) + { + } + + public virtual string EncryptPassword(User user, string password) + { + return MD5.EncryptPassword(user, password); + } + + public virtual bool VerifyPassword(User user, string encryptPassword, string providedPassword) + { + return MD5.VerifyPassword(user, encryptPassword, providedPassword); + } + + public static PasswordType StartNew(string type) => type switch + { + + nameof(MD5) => new MD5PasswordType(), + nameof(HashPassword) => new HashPasswordType(), + _ => new PasswordType() + }; + + private class MD5PasswordType : PasswordType + { + public MD5PasswordType() : base(1, nameof(MD5)) { } + + public override string EncryptPassword(User user, string password) + { + return MD5Utils.EncryptRepeat(password); + } + + public override bool VerifyPassword(User user, string encryptPassword, string providedPassword) + { + return encryptPassword == MD5Utils.EncryptRepeat(providedPassword ?? ""); + } + } + + private class HashPasswordType : PasswordType + { + public HashPasswordType() : base(2, nameof(HashPassword)) { } + + public override string EncryptPassword(User user, string password) + { + var hasher = new PasswordHasher(); + return hasher.HashPassword(user, password); + } + + public override bool VerifyPassword(User user, string encryptPassword, string providedPassword) + { + var hasher = new PasswordHasher(); + var result = hasher.VerifyHashedPassword(user, encryptPassword, providedPassword); + return result != PasswordVerificationResult.Failed; + } + } +} \ No newline at end of file diff --git a/src/Services/Masa.Auth.Service.Admin/Domain/Subjects/Aggregates/ThirdPartyUser.cs b/src/Services/Masa.Auth.Service.Admin/Domain/Subjects/Aggregates/ThirdPartyUser.cs index ecc9a00c7..9fb54928e 100644 --- a/src/Services/Masa.Auth.Service.Admin/Domain/Subjects/Aggregates/ThirdPartyUser.cs +++ b/src/Services/Masa.Auth.Service.Admin/Domain/Subjects/Aggregates/ThirdPartyUser.cs @@ -49,6 +49,8 @@ public string ExtendedData public IdentityProvider IdentityProvider => _identityProvider; + public Dictionary ClaimData { get; private set; } = new(); + public ThirdPartyUser(Guid thirdPartyIdpId, string thridPartyIdentity, string extendedData) { ThirdPartyIdpId = thirdPartyIdpId; @@ -83,6 +85,11 @@ public void Update(string thridPartyIdentity, string extendedData) ExtendedData = extendedData; } + public void UpdateClaimData(Dictionary claimData) + { + ClaimData = claimData; + } + public static implicit operator ThirdPartyUserDetailDto(ThirdPartyUser tpu) { return new ThirdPartyUserDetailDto(tpu.Id, tpu.Enabled, tpu.IdentityProvider.Adapt(), tpu.User, tpu.CreationTime, tpu.ModificationTime, tpu.CreateUser?.Name ?? "", tpu.ModifyUser?.Name ?? ""); diff --git a/src/Services/Masa.Auth.Service.Admin/Infrastructure/EntityConfigurations/Subjects/ThirdPartyUserEntityTypeConfiguration.cs b/src/Services/Masa.Auth.Service.Admin/Infrastructure/EntityConfigurations/Subjects/ThirdPartyUserEntityTypeConfiguration.cs index fe966e621..b6c7dec03 100644 --- a/src/Services/Masa.Auth.Service.Admin/Infrastructure/EntityConfigurations/Subjects/ThirdPartyUserEntityTypeConfiguration.cs +++ b/src/Services/Masa.Auth.Service.Admin/Infrastructure/EntityConfigurations/Subjects/ThirdPartyUserEntityTypeConfiguration.cs @@ -1,6 +1,8 @@ // Copyright (c) MASA Stack All rights reserved. // Licensed under the Apache License. See LICENSE.txt in the project root for license information. +using Masa.Auth.Service.Admin.Infrastructure.ValueConverters; + namespace Masa.Auth.Service.Admin.Infrastructure.EntityConfigurations.Subjects; public class ThirdPartyUserEntityTypeConfiguration : IEntityTypeConfiguration @@ -12,6 +14,7 @@ public void Configure(EntityTypeBuilder builder) builder.HasOne(tpu => tpu.IdentityProvider).WithMany().HasForeignKey(tpu => tpu.ThirdPartyIdpId); builder.HasIndex(u => new { u.CreationTime, u.ModificationTime });//.IsDescending(); supported 7.0 builder.Navigation(tpu => tpu.IdentityProvider).AutoInclude(); + builder.Property(tpu => tpu.ClaimData).HasConversion(new JsonValueConverter>()); } } diff --git a/src/Services/Masa.Auth.Service.Admin/Infrastructure/ValueConverters/JsonValueConverter.cs b/src/Services/Masa.Auth.Service.Admin/Infrastructure/ValueConverters/JsonValueConverter.cs new file mode 100644 index 000000000..dd4a1d0db --- /dev/null +++ b/src/Services/Masa.Auth.Service.Admin/Infrastructure/ValueConverters/JsonValueConverter.cs @@ -0,0 +1,30 @@ +// Copyright (c) MASA Stack All rights reserved. +// Licensed under the Apache License. See LICENSE.txt in the project root for license information. + +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Masa.Auth.Service.Admin.Infrastructure.ValueConverters; + +public class JsonValueConverter : ValueConverter where T : class, new() +{ + public JsonValueConverter() + : base(x => SerializeObject(x), x => DeserializeObject(x)) + { + + } + + private static string SerializeObject(T obj) + { + return JsonSerializer.Serialize(obj); + } + + private static T DeserializeObject(string json) + { + if (string.IsNullOrEmpty(json)) + { + return new T(); + } + + return JsonSerializer.Deserialize(json)!; + } +} diff --git a/src/Services/Masa.Auth.Service.Admin/Migrations/20240307093314_ThirdPartyUserClaimData.Designer.cs b/src/Services/Masa.Auth.Service.Admin/Migrations/20240307093314_ThirdPartyUserClaimData.Designer.cs new file mode 100644 index 000000000..4199091eb --- /dev/null +++ b/src/Services/Masa.Auth.Service.Admin/Migrations/20240307093314_ThirdPartyUserClaimData.Designer.cs @@ -0,0 +1,3097 @@ +// +using System; +using Masa.Auth.Service.Admin.Infrastructure; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace Masa.Auth.Service.Admin.Migrations +{ + [DbContext(typeof(AuthDbContext))] + [Migration("20240307093314_ThirdPartyUserClaimData")] + partial class ThirdPartyUserClaimData + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasDefaultSchema("auth") + .HasAnnotation("ProductVersion", "6.0.7") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Logs.Aggregates.OperationLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("OperationDescription") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("OperationTime") + .HasColumnType("datetime2"); + + b.Property("OperationType") + .HasColumnType("int"); + + b.Property("Operator") + .HasColumnType("uniqueidentifier"); + + b.Property("OperatorName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("OperationDescription"); + + b.HasIndex("OperationTime"); + + b.HasIndex("OperationType"); + + b.HasIndex("Operator"); + + b.ToTable("OperationLog", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Organizations.Aggregates.Department", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("Level") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(1); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("Sort") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("Level") + .IsUnique() + .HasFilter("Level = 1"); + + b.HasIndex("Name", "ParentId") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("Department", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Organizations.Aggregates.DepartmentStaff", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("DepartmentId") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("StaffId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("DepartmentId"); + + b.HasIndex("StaffId"); + + b.ToTable("DepartmentStaff", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Organizations.Aggregates.Position", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("Position", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AppId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("Icon") + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("MatchPattern") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)"); + + b.Property("Order") + .HasColumnType("int"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("SystemId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Type") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Url") + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasKey("Id"); + + b.HasIndex("ParentId"); + + b.HasIndex("SystemId", "AppId", "Code") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("Permission", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.PermissionRelation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AffiliationPermissionId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LeadingPermissionId") + .HasColumnType("uniqueidentifier"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("AffiliationPermissionId"); + + b.HasIndex("LeadingPermissionId", "AffiliationPermissionId") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("PermissionRelation", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Role", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AvailableQuantity") + .HasColumnType("int"); + + b.Property("Code") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("Limit") + .HasColumnType("int"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Role", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.RoleRelation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ParentId"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleRelation", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.SubjectPermissionRelation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Effect") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("PermissionId") + .HasColumnType("uniqueidentifier"); + + b.Property("_businessType") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("SubjectPermissionRelation", "auth"); + + b.HasDiscriminator("_businessType").HasValue("SubjectPermissionRelation"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.CustomLogin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("ClientId") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Title") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Creator"); + + b.HasIndex("Modifier"); + + b.HasIndex("Name") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("CustomLogin", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.CustomLoginThirdPartyIdp", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("CustomLoginId") + .HasColumnType("int"); + + b.Property("Sort") + .HasColumnType("int"); + + b.Property("ThirdPartyIdpId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CustomLoginId"); + + b.HasIndex("ThirdPartyIdpId"); + + b.ToTable("CustomLoginThirdPartyIdp", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.RegisterField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"), 1L, 1); + + b.Property("CustomLoginId") + .HasColumnType("int"); + + b.Property("RegisterFieldType") + .HasColumnType("int"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("Sort") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("CustomLoginId"); + + b.ToTable("RegisterField", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.IdentityProvider", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Discriminator") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("Icon") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ThirdPartyIdpType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("IdentityProvider", "auth"); + + b.HasDiscriminator("Discriminator").HasValue("IdentityProvider"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Staff", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Avatar") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CompanyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("CurrentTeamId") + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("Gender") + .HasColumnType("int"); + + b.Property("IdCard") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("JobNumber") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PositionId") + .HasColumnType("uniqueidentifier"); + + b.Property("StaffType") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CurrentTeamId"); + + b.HasIndex("JobNumber") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.HasIndex("PositionId"); + + b.HasIndex("UserId") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("Staff", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Team", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(20) + .HasColumnType("nvarchar(20)"); + + b.Property("TeamType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("Team", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.TeamRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TeamId") + .HasColumnType("uniqueidentifier"); + + b.Property("TeamMemberType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.HasIndex("TeamId"); + + b.ToTable("TeamRole", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.TeamStaff", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("StaffId") + .HasColumnType("uniqueidentifier"); + + b.Property("TeamId") + .HasColumnType("uniqueidentifier"); + + b.Property("TeamMemberType") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("StaffId"); + + b.HasIndex("TeamId"); + + b.ToTable("TeamStaff", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.ThirdPartyUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimData") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("ExtendedData") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IdentityProviderId") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("ThirdPartyIdpId") + .HasColumnType("uniqueidentifier"); + + b.Property("ThridPartyIdentity") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("IdentityProviderId"); + + b.HasIndex("ThirdPartyIdpId"); + + b.HasIndex("UserId"); + + b.HasIndex("CreationTime", "ModificationTime"); + + b.ToTable("ThirdPartyUser", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Account") + .IsRequired() + .HasColumnType("nvarchar(450)") + .UseCollation("SQL_Latin1_General_CP1_CS_AS"); + + b.Property("Avatar") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CompanyName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Department") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("Gender") + .HasColumnType("int"); + + b.Property("IdCard") + .IsRequired() + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("Landline") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property("Position") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Account") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.HasIndex("Email") + .IsUnique() + .HasFilter("[IsDeleted] = 0 and Email!=''"); + + b.HasIndex("IdCard") + .IsUnique() + .HasFilter("[IsDeleted] = 0 and IdCard!=''"); + + b.HasIndex("Name"); + + b.HasIndex("PhoneNumber") + .IsUnique() + .HasFilter("[IsDeleted] = 0 and PhoneNumber!=''"); + + b.HasIndex("CreationTime", "ModificationTime"); + + b.ToTable("User", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.UserClaimValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("Value") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "Name") + .IsUnique(); + + b.ToTable("UserClaimValue", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.UserRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.HasIndex("UserId"); + + b.ToTable("UserRole", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.UserSystemBusinessData", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Data") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("SystemId") + .IsRequired() + .HasColumnType("nvarchar(450)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId", "SystemId") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("UserSystemBusinessData", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Webhooks.Aggregates.Webhook", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("HttpMethod") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("IsActive") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Secret") + .HasColumnType("nvarchar(max)"); + + b.Property("Url") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WebhookEvent") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Webhook", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Webhooks.Aggregates.WebhookLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Data") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("WebhookId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("WebhookId"); + + b.ToTable("WebhookLog", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AllowedAccessTokenSigningAlgorithms") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastAccessed") + .HasColumnType("datetime2"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("NonEditable") + .HasColumnType("bit"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("ApiResource", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResourceClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApiResourceId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("UserClaimId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ApiResourceId"); + + b.HasIndex("UserClaimId"); + + b.ToTable("ApiResourceClaim", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResourceProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApiResourceId") + .HasColumnType("uniqueidentifier"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.HasKey("Id"); + + b.HasIndex("ApiResourceId"); + + b.ToTable("ApiResourceProperty", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResourceScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApiResourceId") + .HasColumnType("uniqueidentifier"); + + b.Property("ApiScopeId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ApiResourceId"); + + b.HasIndex("ApiScopeId"); + + b.ToTable("ApiResourceScope", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResourceSecret", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApiResourceId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("Expiration") + .HasColumnType("datetime2"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(4000) + .HasColumnType("nvarchar(4000)"); + + b.HasKey("Id"); + + b.HasIndex("ApiResourceId"); + + b.ToTable("ApiResourceSecret", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Emphasize") + .HasColumnType("bit"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("ApiScope", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScopeClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApiScopeId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("UserClaimId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ApiScopeId"); + + b.HasIndex("UserClaimId"); + + b.ToTable("ApiScopeClaim", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScopeProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("ScopeId") + .HasColumnType("uniqueidentifier"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.HasKey("Id"); + + b.HasIndex("ScopeId"); + + b.ToTable("ApiScopeProperty", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AbsoluteRefreshTokenLifetime") + .HasColumnType("int"); + + b.Property("AccessTokenLifetime") + .HasColumnType("int"); + + b.Property("AccessTokenType") + .HasColumnType("int"); + + b.Property("AllowAccessTokensViaBrowser") + .HasColumnType("bit"); + + b.Property("AllowOfflineAccess") + .HasColumnType("bit"); + + b.Property("AllowPlainTextPkce") + .HasColumnType("bit"); + + b.Property("AllowRememberConsent") + .HasColumnType("bit"); + + b.Property("AllowedIdentityTokenSigningAlgorithms") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("AlwaysIncludeUserClaimsInIdToken") + .HasColumnType("bit"); + + b.Property("AlwaysSendClientClaims") + .HasColumnType("bit"); + + b.Property("AuthorizationCodeLifetime") + .HasColumnType("int"); + + b.Property("BackChannelLogoutSessionRequired") + .HasColumnType("bit"); + + b.Property("BackChannelLogoutUri") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.Property("ClientClaimsPrefix") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("ClientName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("ClientType") + .HasColumnType("int"); + + b.Property("ClientUri") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.Property("ConsentLifetime") + .HasColumnType("int"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("DeviceCodeLifetime") + .HasColumnType("int"); + + b.Property("EnableLocalLogin") + .HasColumnType("bit"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("FrontChannelLogoutSessionRequired") + .HasColumnType("bit"); + + b.Property("FrontChannelLogoutUri") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.Property("IdentityTokenLifetime") + .HasColumnType("int"); + + b.Property("IncludeJwtId") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("LastAccessed") + .HasColumnType("datetime2"); + + b.Property("LogoUri") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("NonEditable") + .HasColumnType("bit"); + + b.Property("PairWiseSubjectSalt") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("ProtocolType") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("RefreshTokenExpiration") + .HasColumnType("int"); + + b.Property("RefreshTokenUsage") + .HasColumnType("int"); + + b.Property("RequireClientSecret") + .HasColumnType("bit"); + + b.Property("RequireConsent") + .HasColumnType("bit"); + + b.Property("RequirePkce") + .HasColumnType("bit"); + + b.Property("RequireRequestObject") + .HasColumnType("bit"); + + b.Property("SlidingRefreshTokenLifetime") + .HasColumnType("int"); + + b.Property("UpdateAccessTokenClaimsOnRefresh") + .HasColumnType("bit"); + + b.Property("UserCodeType") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("UserSsoLifetime") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ClientId") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("Client", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientClaim", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientCorsOrigin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("Origin") + .IsRequired() + .HasMaxLength(150) + .HasColumnType("nvarchar(150)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientCorsOrigin", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientGrantType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("GrantType") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientGrantType", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientIdPRestriction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("Provider") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientIdPRestriction", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientPostLogoutRedirectUri", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("PostLogoutRedirectUri") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientPostLogoutRedirectUri", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientProperty", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientRedirectUri", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("RedirectUri") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientRedirectUri", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("Scope") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientScope", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientSecret", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ClientId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.Property("Expiration") + .HasColumnType("datetime2"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(4000) + .HasColumnType("nvarchar(4000)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("ClientSecret", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.DeviceFlowCodes", b => + { + b.Property("UserCode") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Data") + .IsRequired() + .HasMaxLength(50000) + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("DeviceCode") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Expiration") + .IsRequired() + .HasColumnType("datetime2"); + + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("SessionId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SubjectId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.HasKey("UserCode"); + + b.HasIndex("DeviceCode") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.HasIndex("Expiration"); + + b.ToTable("DeviceFlowCodes", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.IdentityResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Emphasize") + .HasColumnType("bit"); + + b.Property("Enabled") + .HasColumnType("bit"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("NonEditable") + .HasColumnType("bit"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ShowInDiscoveryDocument") + .HasColumnType("bit"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique() + .HasFilter("[IsDeleted] = 0"); + + b.ToTable("IdentityResource", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.IdentityResourceClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("IdentityResourceId") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("UserClaimId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("IdentityResourceId"); + + b.HasIndex("UserClaimId"); + + b.ToTable("IdentityResourceClaim", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.IdentityResourceProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("IdentityResourceId") + .HasColumnType("uniqueidentifier"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("nvarchar(250)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2000) + .HasColumnType("nvarchar(2000)"); + + b.HasKey("Id"); + + b.HasIndex("IdentityResourceId"); + + b.ToTable("IdentityResourceProperty", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.PersistedGrant", b => + { + b.Property("Key") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("ConsumedTime") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Data") + .IsRequired() + .HasMaxLength(50000) + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Expiration") + .HasColumnType("datetime2"); + + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("SessionId") + .IsRequired() + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("SubjectId") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Key"); + + b.HasIndex("Expiration"); + + b.HasIndex("SubjectId", "ClientId", "Type"); + + b.HasIndex("SubjectId", "SessionId", "Type"); + + b.ToTable("PersistedGrant", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.UserClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("Creator") + .HasColumnType("uniqueidentifier"); + + b.Property("Description") + .IsRequired() + .HasMaxLength(1000) + .HasColumnType("nvarchar(1000)"); + + b.Property("IsDeleted") + .HasColumnType("bit"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("Modifier") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.HasKey("Id"); + + b.ToTable("UserClaim", "auth"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Dispatcher.IntegrationEvents.Logs.IntegrationEventLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Content") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("EventId") + .HasColumnType("uniqueidentifier"); + + b.Property("EventTypeName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ExpandContent") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ModificationTime") + .HasColumnType("datetime2"); + + b.Property("RowVersion") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(36) + .HasColumnType("nvarchar(36)") + .HasColumnName("RowVersion"); + + b.Property("State") + .HasColumnType("int"); + + b.Property("TimesSent") + .HasColumnType("int"); + + b.Property("TransactionId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex(new[] { "EventId", "RowVersion" }, "IX_EventId_Version"); + + b.HasIndex(new[] { "State", "ModificationTime" }, "IX_State_MTime"); + + b.HasIndex(new[] { "State", "TimesSent", "ModificationTime" }, "IX_State_TimesSent_MTime"); + + b.ToTable("IntegrationEventLog", "auth"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.RolePermission", b => + { + b.HasBaseType("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.SubjectPermissionRelation"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.HasIndex("PermissionId"); + + b.HasIndex("RoleId"); + + b.HasDiscriminator().HasValue("Role"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.LdapIdp", b => + { + b.HasBaseType("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.IdentityProvider"); + + b.Property("BaseDn") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("GroupSearchBaseDn") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("IsSSL") + .HasColumnType("bit"); + + b.Property("RootUserDn") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("RootUserPassword") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ServerAddress") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ServerPort") + .HasColumnType("int"); + + b.Property("UserSearchBaseDn") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.HasDiscriminator().HasValue("LDAP"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.TeamPermission", b => + { + b.HasBaseType("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.SubjectPermissionRelation"); + + b.Property("TeamId") + .HasColumnType("uniqueidentifier"); + + b.Property("TeamMemberType") + .HasColumnType("int"); + + b.HasIndex("PermissionId"); + + b.HasIndex("TeamId"); + + b.HasDiscriminator().HasValue("Team"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.ThirdPartyIdp", b => + { + b.HasBaseType("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.IdentityProvider"); + + b.Property("AuthenticationType") + .HasColumnType("int"); + + b.Property("AuthorizationEndpoint") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("CallbackPath") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("ClientSecret") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("nvarchar(255)"); + + b.Property("JsonKeyMap") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("MapAll") + .HasColumnType("bit"); + + b.Property("TokenEndpoint") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserInformationEndpoint") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasDiscriminator().HasValue("ThirdParty"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.UserPermission", b => + { + b.HasBaseType("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.SubjectPermissionRelation"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasIndex("PermissionId"); + + b.HasIndex("UserId"); + + b.HasDiscriminator().HasValue("User"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Organizations.Aggregates.DepartmentStaff", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Organizations.Aggregates.Department", "Department") + .WithMany("DepartmentStaffs") + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Staff", "Staff") + .WithMany("DepartmentStaffs") + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Department"); + + b.Navigation("Staff"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.PermissionRelation", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", "AffiliationPermission") + .WithMany("LeadingPermissionRelations") + .HasForeignKey("AffiliationPermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", "LeadingPermission") + .WithMany("AffiliationPermissionRelations") + .HasForeignKey("LeadingPermissionId") + .OnDelete(DeleteBehavior.ClientCascade) + .IsRequired(); + + b.Navigation("AffiliationPermission"); + + b.Navigation("LeadingPermission"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.RoleRelation", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Role", "ParentRole") + .WithMany("ChildrenRoles") + .HasForeignKey("ParentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Role", "Role") + .WithMany("ParentRoles") + .HasForeignKey("RoleId") + .IsRequired(); + + b.Navigation("ParentRole"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.CustomLogin", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", "CreateUser") + .WithMany() + .HasForeignKey("Creator"); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", "ModifyUser") + .WithMany() + .HasForeignKey("Modifier"); + + b.Navigation("CreateUser"); + + b.Navigation("ModifyUser"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.CustomLoginThirdPartyIdp", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.CustomLogin", null) + .WithMany("ThirdPartyIdps") + .HasForeignKey("CustomLoginId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.ThirdPartyIdp", "ThirdPartyIdp") + .WithMany() + .HasForeignKey("ThirdPartyIdpId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ThirdPartyIdp"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.RegisterField", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.CustomLogin", null) + .WithMany("RegisterFields") + .HasForeignKey("CustomLoginId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Staff", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Team", "CurrentTeam") + .WithMany() + .HasForeignKey("CurrentTeamId"); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Organizations.Aggregates.Position", "Position") + .WithMany() + .HasForeignKey("PositionId"); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", "User") + .WithOne("Staff") + .HasForeignKey("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Staff", "UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.OwnsOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.AddressValue", "Address", b1 => + { + b1.Property("StaffId") + .HasColumnType("uniqueidentifier"); + + b1.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("CityCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("DistrictCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("ProvinceCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.HasKey("StaffId"); + + b1.ToTable("Staff", "auth"); + + b1.WithOwner() + .HasForeignKey("StaffId"); + }); + + b.Navigation("Address") + .IsRequired(); + + b.Navigation("CurrentTeam"); + + b.Navigation("Position"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Team", b => + { + b.OwnsOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.AvatarValue", "Avatar", b1 => + { + b1.Property("TeamId") + .HasColumnType("uniqueidentifier"); + + b1.Property("Color") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("Url") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.HasKey("TeamId"); + + b1.ToTable("Team", "auth"); + + b1.WithOwner() + .HasForeignKey("TeamId"); + }); + + b.Navigation("Avatar") + .IsRequired(); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.TeamRole", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Role", "Role") + .WithMany("Teams") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Team", "Team") + .WithMany("TeamRoles") + .HasForeignKey("TeamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Role"); + + b.Navigation("Team"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.TeamStaff", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Staff", "Staff") + .WithMany("TeamStaffs") + .HasForeignKey("StaffId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Team", "Team") + .WithMany("TeamStaffs") + .HasForeignKey("TeamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Staff"); + + b.Navigation("Team"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.ThirdPartyUser", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.IdentityProvider", null) + .WithMany("ThirdPartyUsers") + .HasForeignKey("IdentityProviderId"); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.IdentityProvider", "IdentityProvider") + .WithMany() + .HasForeignKey("ThirdPartyIdpId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", "User") + .WithMany("ThirdPartyUsers") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IdentityProvider"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", b => + { + b.OwnsOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.AddressValue", "Address", b1 => + { + b1.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b1.Property("Address") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("CityCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("DistrictCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.Property("ProvinceCode") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b1.HasKey("UserId"); + + b1.ToTable("User", "auth"); + + b1.WithOwner() + .HasForeignKey("UserId"); + }); + + b.Navigation("Address") + .IsRequired(); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.UserClaimValue", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", "User") + .WithMany("UserClaims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.UserRole", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Role", "Role") + .WithMany("Users") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", "User") + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Role"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Webhooks.Aggregates.WebhookLog", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Webhooks.Aggregates.Webhook", "Webhook") + .WithMany("WebhookLogs") + .HasForeignKey("WebhookId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Webhook"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResourceClaim", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResource", "ApiResource") + .WithMany("UserClaims") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.UserClaim", "UserClaim") + .WithMany() + .HasForeignKey("UserClaimId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ApiResource"); + + b.Navigation("UserClaim"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResourceProperty", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResource", "ApiResource") + .WithMany("Properties") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ApiResource"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResourceScope", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResource", "ApiResource") + .WithMany("ApiScopes") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScope", "ApiScope") + .WithMany() + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ApiResource"); + + b.Navigation("ApiScope"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResourceSecret", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResource", "ApiResource") + .WithMany("Secrets") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ApiResource"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScopeClaim", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScope", "ApiScope") + .WithMany("UserClaims") + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.UserClaim", "UserClaim") + .WithMany() + .HasForeignKey("UserClaimId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ApiScope"); + + b.Navigation("UserClaim"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScopeProperty", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScope", "Scope") + .WithMany("Properties") + .HasForeignKey("ScopeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scope"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientClaim", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("Claims") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientCorsOrigin", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("AllowedCorsOrigins") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientGrantType", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("AllowedGrantTypes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientIdPRestriction", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("IdentityProviderRestrictions") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientPostLogoutRedirectUri", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("PostLogoutRedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientProperty", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("Properties") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientRedirectUri", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("RedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientScope", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("AllowedScopes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ClientSecret", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", "Client") + .WithMany("ClientSecrets") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Client"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.IdentityResourceClaim", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.IdentityResource", "IdentityResource") + .WithMany("UserClaims") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.UserClaim", "UserClaim") + .WithMany() + .HasForeignKey("UserClaimId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IdentityResource"); + + b.Navigation("UserClaim"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.IdentityResourceProperty", b => + { + b.HasOne("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.IdentityResource", "IdentityResource") + .WithMany("Properties") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("IdentityResource"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.RolePermission", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", "Permission") + .WithMany("RolePermissions") + .HasForeignKey("PermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Role", "Role") + .WithMany("Permissions") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.TeamPermission", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", "Permission") + .WithMany("TeamPermissions") + .HasForeignKey("PermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Team", "Team") + .WithMany("TeamPermissions") + .HasForeignKey("TeamId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("Team"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.UserPermission", b => + { + b.HasOne("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", "Permission") + .WithMany("UserPermissions") + .HasForeignKey("PermissionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", "User") + .WithMany("Permissions") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Permission"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Organizations.Aggregates.Department", b => + { + b.Navigation("DepartmentStaffs"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Permission", b => + { + b.Navigation("AffiliationPermissionRelations"); + + b.Navigation("Children"); + + b.Navigation("LeadingPermissionRelations"); + + b.Navigation("RolePermissions"); + + b.Navigation("TeamPermissions"); + + b.Navigation("UserPermissions"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Permissions.Aggregates.Role", b => + { + b.Navigation("ChildrenRoles"); + + b.Navigation("ParentRoles"); + + b.Navigation("Permissions"); + + b.Navigation("Teams"); + + b.Navigation("Users"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Sso.Aggregates.CustomLogin", b => + { + b.Navigation("RegisterFields"); + + b.Navigation("ThirdPartyIdps"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.IdentityProvider", b => + { + b.Navigation("ThirdPartyUsers"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Staff", b => + { + b.Navigation("DepartmentStaffs"); + + b.Navigation("TeamStaffs"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.Team", b => + { + b.Navigation("TeamPermissions"); + + b.Navigation("TeamRoles"); + + b.Navigation("TeamStaffs"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.User", b => + { + b.Navigation("Permissions"); + + b.Navigation("Roles"); + + b.Navigation("Staff"); + + b.Navigation("ThirdPartyUsers"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Masa.Auth.Service.Admin.Domain.Webhooks.Aggregates.Webhook", b => + { + b.Navigation("WebhookLogs"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiResource", b => + { + b.Navigation("ApiScopes"); + + b.Navigation("Properties"); + + b.Navigation("Secrets"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.ApiScope", b => + { + b.Navigation("Properties"); + + b.Navigation("UserClaims"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client", b => + { + b.Navigation("AllowedCorsOrigins"); + + b.Navigation("AllowedGrantTypes"); + + b.Navigation("AllowedScopes"); + + b.Navigation("Claims"); + + b.Navigation("ClientSecrets"); + + b.Navigation("IdentityProviderRestrictions"); + + b.Navigation("PostLogoutRedirectUris"); + + b.Navigation("Properties"); + + b.Navigation("RedirectUris"); + }); + + modelBuilder.Entity("Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.IdentityResource", b => + { + b.Navigation("Properties"); + + b.Navigation("UserClaims"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Services/Masa.Auth.Service.Admin/Migrations/20240307093314_ThirdPartyUserClaimData.cs b/src/Services/Masa.Auth.Service.Admin/Migrations/20240307093314_ThirdPartyUserClaimData.cs new file mode 100644 index 000000000..828fddb56 --- /dev/null +++ b/src/Services/Masa.Auth.Service.Admin/Migrations/20240307093314_ThirdPartyUserClaimData.cs @@ -0,0 +1,50 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Masa.Auth.Service.Admin.Migrations +{ + public partial class ThirdPartyUserClaimData : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ClaimData", + schema: "auth", + table: "ThirdPartyUser", + type: "nvarchar(max)", + nullable: false, + defaultValue: ""); + + migrationBuilder.CreateIndex( + name: "IX_User_CreationTime_ModificationTime", + schema: "auth", + table: "User", + columns: new[] { "CreationTime", "ModificationTime" }); + + migrationBuilder.CreateIndex( + name: "IX_ThirdPartyUser_CreationTime_ModificationTime", + schema: "auth", + table: "ThirdPartyUser", + columns: new[] { "CreationTime", "ModificationTime" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_User_CreationTime_ModificationTime", + schema: "auth", + table: "User"); + + migrationBuilder.DropIndex( + name: "IX_ThirdPartyUser_CreationTime_ModificationTime", + schema: "auth", + table: "ThirdPartyUser"); + + migrationBuilder.DropColumn( + name: "ClaimData", + schema: "auth", + table: "ThirdPartyUser"); + } + } +} diff --git a/src/Services/Masa.Auth.Service.Admin/Migrations/AuthDbContextModelSnapshot.cs b/src/Services/Masa.Auth.Service.Admin/Migrations/AuthDbContextModelSnapshot.cs index b37682691..f44ec1ffd 100644 --- a/src/Services/Masa.Auth.Service.Admin/Migrations/AuthDbContextModelSnapshot.cs +++ b/src/Services/Masa.Auth.Service.Admin/Migrations/AuthDbContextModelSnapshot.cs @@ -804,6 +804,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ClaimData") + .IsRequired() + .HasColumnType("nvarchar(max)"); + b.Property("CreationTime") .HasColumnType("datetime2"); @@ -847,6 +851,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.HasIndex("UserId"); + b.HasIndex("CreationTime", "ModificationTime"); + b.ToTable("ThirdPartyUser", "auth"); }); @@ -948,6 +954,8 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsUnique() .HasFilter("[IsDeleted] = 0 and PhoneNumber!=''"); + b.HasIndex("CreationTime", "ModificationTime"); + b.ToTable("User", "auth"); }); diff --git a/src/Services/Masa.Auth.Service.Admin/Properties/launchSettings.json b/src/Services/Masa.Auth.Service.Admin/Properties/launchSettings.json index cf0d5c242..31d587b19 100644 --- a/src/Services/Masa.Auth.Service.Admin/Properties/launchSettings.json +++ b/src/Services/Masa.Auth.Service.Admin/Properties/launchSettings.json @@ -22,8 +22,8 @@ "MASA_NAMESPACE": "masastack", "MASA_CLUSTER": "Default", "OTLP_URL": "https://otel-collector.masastack:9013", - "REDIS": "{\"RedisHost\": \"10.130.0.235\", \"RedisPort\": 24615, \"RedisDb\": 0,\"RedisPassword\": \"Hzss@123\"}", - "CONNECTIONSTRING": "{\"Server\": \"10.130.0.235\", \"Port\": 24878,\"Database\":\"pm-dev\",\"UserId\": \"ss\",\"Password\":\"Hzss@123\"}", + "REDIS": "{\"RedisHost\": \"10.130.0.19\", \"RedisPort\": 2135, \"RedisDb\": 3,\"RedisPassword\": \"Hzss@123\"}", + "CONNECTIONSTRING": "{\"Server\": \"10.130.0.19\", \"Port\": 2415,\"Database\":\"pm-dev\",\"UserId\": \"ss\",\"Password\":\"Hzss@123\"}", "MASA_STACK": "[{\"id\":\"pm\",\"service\":{\"id\":\"pm-service-dev\",\"domain\":\"http://pm-service-dev.masastack.com\"},\"web\":{\"id\":\"pm-web-dev\",\"domain\":\"https://pm-dev.masastack.com\"}},{\"id\":\"dcc\",\"service\":{\"id\":\"dcc-service-dev\",\"domain\":\"http://dcc-service-dev.masastack.com\"},\"web\":{\"id\":\"dcc-web-dev\",\"domain\":\"https://dcc-dev.masastack.com\"}},{\"id\":\"tsc\",\"service\":{\"id\":\"tsc-service-dev\",\"domain\":\"http://tsc-service-dev.masastack.com\"},\"web\":{\"id\":\"tsc-web-dev\",\"domain\":\"https://tsc-dev.masastack.com\"}},{\"id\":\"alert\",\"service\":{\"id\":\"alert-service-dev\",\"domain\":\"http://alert-service-dev.masastack.com\"},\"web\":{\"id\":\"alert-web-dev\",\"domain\":\"https://alert-dev.masastack.com\"}},{\"id\":\"scheduler\",\"service\":{\"id\":\"scheduler-service-dev\",\"domain\":\"http://scheduler-service-dev.masastack.com\"},\"worker\":{\"id\":\"scheduler-worker-dev\",\"domain\":\"http://scheduler-worker-dev.masastack.com\"},\"web\":{\"id\":\"scheduler-web-dev\",\"domain\":\"https://scheduler-dev.masastack.com\"}},{\"id\":\"mc\",\"service\":{\"id\":\"mc-service-dev\",\"domain\":\"http://mc-service-dev.masastack.com\"},\"web\":{\"id\":\"mc-web-dev\",\"domain\":\"https://mc-dev.masastack.com\"}},{\"id\":\"auth\",\"service\":{\"id\":\"auth-service-dev\",\"domain\":\"http://auth-service-dev.masastack.com\"},\"web\":{\"id\":\"auth-web-dev\",\"domain\":\"https://auth-dev.masastack.com\"},\"sso\":{\"id\":\"auth-sso-dev\",\"domain\":\"https://auth-sso-dev.masastack.com\"}}]", "ELASTIC": "{\"Nodes\": [\"http://es-ydy-new.lonsid.cn:9200\"],\"Index\": \"auth_user_development\"}", "MASA_ENVIRONMENT": "Development", diff --git a/src/Services/Masa.Auth.Service.Admin/_Imports.cs b/src/Services/Masa.Auth.Service.Admin/_Imports.cs index 337050e98..ab7095a7a 100644 --- a/src/Services/Masa.Auth.Service.Admin/_Imports.cs +++ b/src/Services/Masa.Auth.Service.Admin/_Imports.cs @@ -74,6 +74,7 @@ global using Masa.BuildingBlocks.Authentication.OpenIdConnect.Models.Constans; global using Masa.BuildingBlocks.Caching; global using Masa.BuildingBlocks.Configuration; +global using Masa.BuildingBlocks.Data.Contracts; global using Masa.BuildingBlocks.Data.UoW; global using Masa.BuildingBlocks.Ddd.Domain.Entities; global using Masa.BuildingBlocks.Ddd.Domain.Entities.Auditing; @@ -147,3 +148,4 @@ global using IdentityProvider = Masa.Auth.Service.Admin.Domain.Subjects.Aggregates.IdentityProvider; global using Client = Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain.Entities.Client; global using Event = Masa.BuildingBlocks.Dispatcher.Events.Event; + diff --git a/src/Services/Masa.Auth.Service.Admin/appsettings.Development.json b/src/Services/Masa.Auth.Service.Admin/appsettings.Development.json index adea4c02a..96401c18f 100644 --- a/src/Services/Masa.Auth.Service.Admin/appsettings.Development.json +++ b/src/Services/Masa.Auth.Service.Admin/appsettings.Development.json @@ -7,6 +7,6 @@ } }, "ConnectionStrings": { - "DefaultConnection": "Server=10.130.0.235,24878;Database=auth_dev;User Id=ss;Password=Hzss@123;" + "DefaultConnection": "Server=10.130.0.19,2415;Database=auth_dev;User Id=ss;Password=Hzss@123;" } } diff --git a/src/Web/Masa.Auth.Web.Sso/Infrastructure/Validations/LdapGrantValidator.cs b/src/Web/Masa.Auth.Web.Sso/Infrastructure/Validations/LdapGrantValidator.cs index bad75ed8b..234352456 100644 --- a/src/Web/Masa.Auth.Web.Sso/Infrastructure/Validations/LdapGrantValidator.cs +++ b/src/Web/Masa.Auth.Web.Sso/Infrastructure/Validations/LdapGrantValidator.cs @@ -63,6 +63,13 @@ public async Task ValidateAsync(ExtensionGrantValidationContext context) } }); } - context.Result = new GrantValidationResult(authUser.Id.ToString(), "ldap"); + + var claims = new List(); + foreach (var item in authUser.ClaimData) + { + claims.Add(new Claim(item.Key, item.Value)); + } + + context.Result = new GrantValidationResult(authUser.Id.ToString(), "ldap", claims); } }