From 3adbbeef4970051d67bae00cf91cc6444fce031e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Thu, 11 Jan 2018 12:55:07 +0300 Subject: [PATCH] Removed I from ClientGrantType --- .../IdentityServerTestController.cs | 2 +- .../Volo/Abp/Domain/Values/ValueObject.cs | 2 + .../Volo/Abp/IdentityServer/Clients/Client.cs | 8 +- .../Clients/ClientAutoMapperProfile.cs | 4 +- .../IdentityServer/Clients/ClientGrantType.cs | 7 +- ...emoved_Id_From_ClientGrantType.Designer.cs | 603 ++++++++++++++++++ ...1095012_Removed_Id_From_ClientGrantType.cs | 52 ++ .../IdentityServerDbContextModelSnapshot.cs | 8 +- .../IdentityServerDbContext.cs | 28 +- 9 files changed, 687 insertions(+), 27 deletions(-) create mode 100644 src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/20180111095012_Removed_Id_From_ClientGrantType.Designer.cs create mode 100644 src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/20180111095012_Removed_Id_From_ClientGrantType.cs diff --git a/src/AbpDesk/AbpDesk.Web.Mvc/Controllers/IdentityServerTestController.cs b/src/AbpDesk/AbpDesk.Web.Mvc/Controllers/IdentityServerTestController.cs index 65eae75441..365efc29ee 100644 --- a/src/AbpDesk/AbpDesk.Web.Mvc/Controllers/IdentityServerTestController.cs +++ b/src/AbpDesk/AbpDesk.Web.Mvc/Controllers/IdentityServerTestController.cs @@ -48,7 +48,7 @@ namespace AbpDesk.Web.Mvc.Controllers var client = new Client(GuidGenerator.Create(), clientId); - client.AddGrantTypes(GuidGenerator, GrantTypes.ClientCredentials); + client.AddGrantTypes(GrantTypes.ClientCredentials); client.AddSecret(GuidGenerator, "secret".Sha256()); client.AddAllowedScope(GuidGenerator, "api1"); //TODO: Why not with Id..? diff --git a/src/Volo.Abp.Ddd/Volo/Abp/Domain/Values/ValueObject.cs b/src/Volo.Abp.Ddd/Volo/Abp/Domain/Values/ValueObject.cs index 4e29490ae4..dccd1c0206 100644 --- a/src/Volo.Abp.Ddd/Volo/Abp/Domain/Values/ValueObject.cs +++ b/src/Volo.Abp.Ddd/Volo/Abp/Domain/Values/ValueObject.cs @@ -42,6 +42,8 @@ namespace Volo.Abp.Domain.Values public override int GetHashCode() { + //TODO: Can we cache the hash value assuming value objects are always immutable? We can make a Reset-like method to reset it's mutated. + const int index = 1; const int initialHasCode = 31; diff --git a/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/Client.cs b/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/Client.cs index 14db9e7191..17b35d1a05 100644 --- a/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/Client.cs +++ b/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/Client.cs @@ -136,18 +136,18 @@ namespace Volo.Abp.IdentityServer.Clients Properties = new List(); } - public virtual void AddGrantType(IGuidGenerator guidGenerator, string grantType) + public virtual void AddGrantType(string grantType) { AllowedGrantTypes.Add( - new ClientGrantType(guidGenerator.Create(), Id, grantType) + new ClientGrantType(Id, grantType) ); } - public virtual void AddGrantTypes(IGuidGenerator guidGenerator, IEnumerable grantTypes) + public virtual void AddGrantTypes(IEnumerable grantTypes) { AllowedGrantTypes.AddRange( grantTypes.Select( - grantType => new ClientGrantType(guidGenerator.Create(), Id, grantType) + grantType => new ClientGrantType(Id, grantType) ) ); } diff --git a/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/ClientAutoMapperProfile.cs b/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/ClientAutoMapperProfile.cs index b76f22e5af..4da5ff2093 100644 --- a/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/ClientAutoMapperProfile.cs +++ b/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/ClientAutoMapperProfile.cs @@ -11,6 +11,8 @@ namespace Volo.Abp.IdentityServer.Clients { public ClientAutoMapperProfile() { + //TODO: Reverse maps will not used probably. Remove those will not used + CreateMap(); CreateMap() @@ -18,11 +20,9 @@ namespace Volo.Abp.IdentityServer.Clients .ReverseMap() .ForMember(dest => dest.Origin, opt => opt.MapFrom(src => src)); - CreateMap() .ForMember(dest => dest.ApiSecrets, opt => opt.MapFrom(src => src.Secrets)); - CreateMap().ReverseMap(); CreateMap(); diff --git a/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/ClientGrantType.cs b/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/ClientGrantType.cs index 13a60333ec..aaf289fe67 100644 --- a/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/ClientGrantType.cs +++ b/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/Clients/ClientGrantType.cs @@ -1,9 +1,9 @@ using System; -using Volo.Abp.Domain.Entities; +using Volo.Abp.Domain.Values; namespace Volo.Abp.IdentityServer.Clients { - public class ClientGrantType : Entity + public class ClientGrantType : ValueObject { public virtual string GrantType { get; protected set; } @@ -14,9 +14,8 @@ namespace Volo.Abp.IdentityServer.Clients } - public ClientGrantType(Guid id, Guid clientId, string grantType) + public ClientGrantType(Guid clientId, string grantType) { - Id = id; ClientId = clientId; GrantType = grantType; } diff --git a/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/20180111095012_Removed_Id_From_ClientGrantType.Designer.cs b/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/20180111095012_Removed_Id_From_ClientGrantType.Designer.cs new file mode 100644 index 0000000000..744bda13b3 --- /dev/null +++ b/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/20180111095012_Removed_Id_From_ClientGrantType.Designer.cs @@ -0,0 +1,603 @@ +// +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage; +using Microsoft.EntityFrameworkCore.Storage.Internal; +using System; +using Volo.Abp.IdentityServer.EntityFrameworkCore; + +namespace Volo.Abp.IdentityServer.EntityFrameworkCore.Migrations +{ + [DbContext(typeof(IdentityServerDbContext))] + [Migration("20180111095012_Removed_Id_From_ClientGrantType")] + partial class Removed_Id_From_ClientGrantType + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.0.0-rtm-26452") + .HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Description") + .HasMaxLength(1000); + + b.Property("DisplayName") + .HasMaxLength(200); + + b.Property("Enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpIdsApiResources"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ApiResourceId"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(200); + + b.HasKey("Id"); + + b.HasIndex("ApiResourceId"); + + b.ToTable("AbpIdsApiClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ApiResourceId"); + + b.Property("Description") + .HasMaxLength(1000); + + b.Property("DisplayName") + .HasMaxLength(200); + + b.Property("Emphasize"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200); + + b.Property("Required"); + + b.Property("ShowInDiscoveryDocument"); + + b.HasKey("Id"); + + b.HasIndex("ApiResourceId"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpIdsApiScopes"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiScopeClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ApiScopeId"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(200); + + b.HasKey("Id"); + + b.HasIndex("ApiScopeId"); + + b.ToTable("AbpIdsApiScopeClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiSecret", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ApiResourceId"); + + b.Property("Description") + .HasMaxLength(1000); + + b.Property("Expiration"); + + b.Property("Type") + .HasMaxLength(250); + + b.Property("Value") + .HasMaxLength(2000); + + b.HasKey("Id"); + + b.HasIndex("ApiResourceId"); + + b.ToTable("AbpIdsApiSecrets"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.Client", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AbsoluteRefreshTokenLifetime"); + + b.Property("AccessTokenLifetime"); + + b.Property("AccessTokenType"); + + b.Property("AllowAccessTokensViaBrowser"); + + b.Property("AllowOfflineAccess"); + + b.Property("AllowPlainTextPkce"); + + b.Property("AllowRememberConsent"); + + b.Property("AlwaysIncludeUserClaimsInIdToken"); + + b.Property("AlwaysSendClientClaims"); + + b.Property("AuthorizationCodeLifetime"); + + b.Property("BackChannelLogoutSessionRequired"); + + b.Property("BackChannelLogoutUri") + .HasMaxLength(2000); + + b.Property("ClientClaimsPrefix") + .HasMaxLength(200); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200); + + b.Property("ClientName") + .HasMaxLength(200); + + b.Property("ClientUri") + .HasMaxLength(2000); + + b.Property("ConsentLifetime"); + + b.Property("Description") + .HasMaxLength(1000); + + b.Property("EnableLocalLogin"); + + b.Property("Enabled"); + + b.Property("FrontChannelLogoutSessionRequired"); + + b.Property("FrontChannelLogoutUri") + .HasMaxLength(2000); + + b.Property("IdentityTokenLifetime"); + + b.Property("IncludeJwtId"); + + b.Property("LogoUri") + .HasMaxLength(2000); + + b.Property("PairWiseSubjectSalt") + .HasMaxLength(200); + + b.Property("ProtocolType") + .IsRequired() + .HasMaxLength(200); + + b.Property("RefreshTokenExpiration"); + + b.Property("RefreshTokenUsage"); + + b.Property("RequireClientSecret"); + + b.Property("RequireConsent"); + + b.Property("RequirePkce"); + + b.Property("SlidingRefreshTokenLifetime"); + + b.Property("UpdateAccessTokenClaimsOnRefresh"); + + b.HasKey("Id"); + + b.HasIndex("ClientId") + .IsUnique(); + + b.ToTable("AbpIdsClients"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(250); + + b.Property("Value") + .IsRequired() + .HasMaxLength(250); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("AbpIdsClientClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("Origin") + .IsRequired() + .HasMaxLength(150); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("AbpIdsClientCorsOrigins"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => + { + b.Property("ClientId"); + + b.Property("GrantType") + .HasMaxLength(250); + + b.HasKey("ClientId", "GrantType"); + + b.ToTable("AbpIdsClientGrantTypes"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("Provider") + .IsRequired() + .HasMaxLength(200); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("AbpIdsClientIdPRestrictions"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("PostLogoutRedirectUri") + .IsRequired() + .HasMaxLength(2000); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("AbpIdsClientPostLogoutRedirectUris"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("Key") + .IsRequired() + .HasMaxLength(250); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2000); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("AbpIdsClientProperties"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("RedirectUri") + .IsRequired() + .HasMaxLength(2000); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("AbpIdsClientRedirectUris"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("Scope") + .IsRequired() + .HasMaxLength(200); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("AbpIdsClientScopes"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("Description") + .HasMaxLength(2000); + + b.Property("Expiration"); + + b.Property("Type") + .HasMaxLength(250); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2000); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("AbpIdsClientSecrets"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Grants.PersistedGrant", b => + { + b.Property("Key") + .HasMaxLength(200); + + b.Property("ClientId") + .IsRequired() + .HasMaxLength(200); + + b.Property("CreationTime"); + + b.Property("Data") + .IsRequired(); + + b.Property("Expiration"); + + b.Property("Id"); + + b.Property("SubjectId") + .HasMaxLength(200); + + b.Property("Type") + .IsRequired() + .HasMaxLength(50); + + b.HasKey("Key"); + + b.HasIndex("SubjectId", "ClientId", "Type"); + + b.ToTable("AbpIdsPersistedGrants"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityClaim", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("IdentityResourceId"); + + b.Property("Type") + .IsRequired() + .HasMaxLength(200); + + b.HasKey("Id"); + + b.HasIndex("IdentityResourceId"); + + b.ToTable("AbpIdsIdentityClaims"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityResource", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Description") + .HasMaxLength(1000); + + b.Property("DisplayName") + .HasMaxLength(200); + + b.Property("Emphasize"); + + b.Property("Enabled"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(200); + + b.Property("Required"); + + b.Property("ShowInDiscoveryDocument"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpIdsIdentityResources"); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource") + .WithMany("UserClaims") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiScope", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource") + .WithMany("Scopes") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiScopeClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiScope") + .WithMany("UserClaims") + .HasForeignKey("ApiScopeId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.ApiResources.ApiSecret", b => + { + b.HasOne("Volo.Abp.IdentityServer.ApiResources.ApiResource") + .WithMany("Secrets") + .HasForeignKey("ApiResourceId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("Claims") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientCorsOrigin", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("AllowedCorsOrigins") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("AllowedGrantTypes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientIdPRestriction", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("IdentityProviderRestrictions") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("PostLogoutRedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientProperty", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("Properties") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientRedirectUri", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("RedirectUris") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientScope", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("AllowedScopes") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientSecret", b => + { + b.HasOne("Volo.Abp.IdentityServer.Clients.Client") + .WithMany("ClientSecrets") + .HasForeignKey("ClientId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Volo.Abp.IdentityServer.IdentityResources.IdentityClaim", b => + { + b.HasOne("Volo.Abp.IdentityServer.IdentityResources.IdentityResource") + .WithMany("UserClaims") + .HasForeignKey("IdentityResourceId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/20180111095012_Removed_Id_From_ClientGrantType.cs b/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/20180111095012_Removed_Id_From_ClientGrantType.cs new file mode 100644 index 0000000000..bf23617f91 --- /dev/null +++ b/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/20180111095012_Removed_Id_From_ClientGrantType.cs @@ -0,0 +1,52 @@ +using Microsoft.EntityFrameworkCore.Migrations; +using System; +using System.Collections.Generic; + +namespace Volo.Abp.IdentityServer.EntityFrameworkCore.Migrations +{ + public partial class Removed_Id_From_ClientGrantType : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropPrimaryKey( + name: "PK_AbpIdsClientGrantTypes", + table: "AbpIdsClientGrantTypes"); + + migrationBuilder.DropIndex( + name: "IX_AbpIdsClientGrantTypes_ClientId", + table: "AbpIdsClientGrantTypes"); + + migrationBuilder.DropColumn( + name: "Id", + table: "AbpIdsClientGrantTypes"); + + migrationBuilder.AddPrimaryKey( + name: "PK_AbpIdsClientGrantTypes", + table: "AbpIdsClientGrantTypes", + columns: new[] { "ClientId", "GrantType" }); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropPrimaryKey( + name: "PK_AbpIdsClientGrantTypes", + table: "AbpIdsClientGrantTypes"); + + migrationBuilder.AddColumn( + name: "Id", + table: "AbpIdsClientGrantTypes", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000")); + + migrationBuilder.AddPrimaryKey( + name: "PK_AbpIdsClientGrantTypes", + table: "AbpIdsClientGrantTypes", + column: "Id"); + + migrationBuilder.CreateIndex( + name: "IX_AbpIdsClientGrantTypes_ClientId", + table: "AbpIdsClientGrantTypes", + column: "ClientId"); + } + } +} diff --git a/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/IdentityServerDbContextModelSnapshot.cs b/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/IdentityServerDbContextModelSnapshot.cs index 8fc627b5ff..6d4fdb6bf5 100644 --- a/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/IdentityServerDbContextModelSnapshot.cs +++ b/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Migrations/IdentityServerDbContextModelSnapshot.cs @@ -274,18 +274,12 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore.Migrations modelBuilder.Entity("Volo.Abp.IdentityServer.Clients.ClientGrantType", b => { - b.Property("Id") - .ValueGeneratedOnAdd(); - b.Property("ClientId"); b.Property("GrantType") - .IsRequired() .HasMaxLength(250); - b.HasKey("Id"); - - b.HasIndex("ClientId"); + b.HasKey("ClientId", "GrantType"); b.ToTable("AbpIdsClientGrantTypes"); }); diff --git a/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContext.cs b/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContext.cs index 277bc160a1..5cee3b96d6 100644 --- a/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContext.cs +++ b/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContext.cs @@ -88,32 +88,38 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(grantType => { grantType.ToTable(TablePrefix + "ClientGrantTypes"); - grantType.Property(x => x.GrantType).HasMaxLength(ClientGrantTypeConsts.GrantTypeMaxLength).IsRequired(); + + grantType.HasKey(x => new {x.ClientId, x.GrantType}); grantType.Property(x => x.ClientId).IsRequired(); + grantType.Property(x => x.GrantType).HasMaxLength(ClientGrantTypeConsts.GrantTypeMaxLength).IsRequired(); }); - + builder.Entity(redirectUri => { redirectUri.ToTable(TablePrefix + "ClientRedirectUris"); + redirectUri.Property(x => x.RedirectUri).HasMaxLength(ClientRedirectUriConsts.RedirectUriMaxLength).IsRequired(); }); builder.Entity(postLogoutRedirectUri => { postLogoutRedirectUri.ToTable(TablePrefix + "ClientPostLogoutRedirectUris"); + postLogoutRedirectUri.Property(x => x.PostLogoutRedirectUri).HasMaxLength(ClientPostLogoutRedirectUriConsts.PostLogoutRedirectUriMaxLength).IsRequired(); }); builder.Entity(scope => { scope.ToTable(TablePrefix + "ClientScopes"); + scope.Property(x => x.Scope).HasMaxLength(ClientScopeConsts.ScopeMaxLength).IsRequired(); }); builder.Entity(secret => { secret.ToTable(TablePrefix + "ClientSecrets"); + secret.Property(x => x.Value).HasMaxLength(ClientSecretConsts.ValueMaxLength).IsRequired(); secret.Property(x => x.Type).HasMaxLength(ClientSecretConsts.TypeMaxLength); secret.Property(x => x.Description).HasMaxLength(ClientSecretConsts.DescriptionMaxLength); @@ -122,6 +128,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(claim => { claim.ToTable(TablePrefix + "ClientClaims"); + claim.Property(x => x.Type).HasMaxLength(ClientClaimConsts.TypeMaxLength).IsRequired(); claim.Property(x => x.Value).HasMaxLength(ClientClaimConsts.ValueMaxLength).IsRequired(); }); @@ -129,18 +136,21 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore builder.Entity(idPRestriction => { idPRestriction.ToTable(TablePrefix + "ClientIdPRestrictions"); + idPRestriction.Property(x => x.Provider).HasMaxLength(ClientIdPRestrictionConsts.ProviderMaxLength).IsRequired(); }); builder.Entity(corsOrigin => { corsOrigin.ToTable(TablePrefix + "ClientCorsOrigins"); + corsOrigin.Property(x => x.Origin).HasMaxLength(ClientCorsOriginConsts.OriginMaxLength).IsRequired(); }); builder.Entity(property => { property.ToTable(TablePrefix + "ClientProperties"); + property.Property(x => x.Key).HasMaxLength(ClientPropertyConsts.KeyMaxLength).IsRequired(); property.Property(x => x.Value).HasMaxLength(ClientPropertyConsts.ValueMaxLength).IsRequired(); }); @@ -156,7 +166,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore grant.Property(x => x.CreationTime).IsRequired(); grant.Property(x => x.Data).IsRequired(); - grant.HasKey(x => x.Key); + grant.HasKey(x => x.Key); //TODO: What about Id!!! grant.HasIndex(x => new { x.SubjectId, x.ClientId, x.Type }); }); @@ -169,9 +179,9 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore identityResource.Property(x => x.DisplayName).HasMaxLength(IdentityResourceConsts.DisplayNameMaxLength); identityResource.Property(x => x.Description).HasMaxLength(IdentityResourceConsts.DescriptionMaxLength); - identityResource.HasIndex(x => x.Name).IsUnique(); - identityResource.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.IdentityResourceId).IsRequired(); + + identityResource.HasIndex(x => x.Name).IsUnique(); }); builder.Entity(claim => @@ -189,11 +199,11 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore apiResource.Property(x => x.DisplayName).HasMaxLength(ApiResourceConsts.DisplayNameMaxLength); apiResource.Property(x => x.Description).HasMaxLength(ApiResourceConsts.DescriptionMaxLength); - apiResource.HasIndex(x => x.Name).IsUnique(); - apiResource.HasMany(x => x.Secrets).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired(); apiResource.HasMany(x => x.Scopes).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired(); apiResource.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired(); + + apiResource.HasIndex(x => x.Name).IsUnique(); }); builder.Entity(apiSecret => @@ -220,9 +230,9 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore apiScope.Property(x => x.DisplayName).HasMaxLength(ApiScopeConsts.DisplayNameMaxLength); apiScope.Property(x => x.Description).HasMaxLength(ApiScopeConsts.DescriptionMaxLength); - apiScope.HasIndex(x => x.Name).IsUnique(); - apiScope.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.ApiScopeId).IsRequired(); + + apiScope.HasIndex(x => x.Name).IsUnique(); }); builder.Entity(apiScopeClaim =>