Browse Source

Reviewed the domain layer of the OpenIddict module

pull/12084/head
Halil İbrahim Kalkan 5 years ago
parent
commit
cbdf333e66
  1. 4
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDbProperties.cs
  2. 2
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs
  3. 1
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictOptions.cs
  4. 1
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs
  5. 1
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Scopes/AbpOpenIddictScopeStore.cs
  6. 1
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs
  7. 9
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/OpenIddictToken.cs
  8. 6
      modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/TokenCleanupBackgroundWorker.cs

4
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDbProperties.cs

@ -2,9 +2,9 @@
public static class AbpOpenIddictDbProperties
{
public static string DbTablePrefix { get; set; } = "AbpOpenIddict";
public static string DbTablePrefix { get; set; } = "AbpOpenIddict"; //TODO: Rename to "OpenIddict"
public static string DbSchema { get; set; } = null;
public const string ConnectionStringName = "AbpOpenIddict";
public const string ConnectionStringName = "AbpOpenIddict"; //TODO: Rename to "OpenIddict"
}

2
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs

@ -75,7 +75,7 @@ public class AbpOpenIddictDomainModule : AbpModule
.AddServer(builder =>
{
// Access token encryption can only be disabled when using JWT tokens.
builder.DisableAccessTokenEncryption();
builder.DisableAccessTokenEncryption(); //TODO: Should we always disable this?
builder
.SetAuthorizationEndpointUris("/connect/authorize")

1
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictOptions.cs

@ -12,6 +12,7 @@ public class AbpOpenIddictOptions
/// <summary>
/// Set false to suppress AddDeveloperSigningCredential() call on the OpenIddictBuilder.
/// Default: true.
/// </summary>
public bool AddDevelopmentEncryptionAndSigningCertificate { get; set; } = true;
}

1
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs

@ -16,7 +16,6 @@ using Volo.Abp.Uow;
namespace Volo.Abp.OpenIddict.Authorizations;
//https://github.com/abpframework/abp/pull/12094
[ExposeServices(
typeof(IOpenIddictAuthorizationStore<OpenIddictAuthorization>),
typeof(AbpOpenIddictAuthorizationStore)

1
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Scopes/AbpOpenIddictScopeStore.cs

@ -14,7 +14,6 @@ using Volo.Abp.Uow;
namespace Volo.Abp.OpenIddict.Scopes;
//https://github.com/abpframework/abp/pull/12094
[ExposeServices(
typeof(IOpenIddictScopeStore<OpenIddictScope>),
typeof(AbpOpenIddictScopeStore)

1
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs

@ -16,7 +16,6 @@ using Volo.Abp.Uow;
namespace Volo.Abp.OpenIddict.Tokens;
//https://github.com/abpframework/abp/pull/12094
[ExposeServices(
typeof(IOpenIddictTokenStore<OpenIddictToken>),
typeof(AbpOpenIddictTokenStore)

9
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/OpenIddictToken.cs

@ -8,6 +8,15 @@ using Volo.Abp.OpenIddict.Authorizations;
namespace Volo.Abp.OpenIddict.Tokens;
/* TODO: Reconsider the entity designs
*
* Entity structure seems incorrectly designed:
* `OpenIddictToken` is an entity (not aggregate root) but have its own repository.
* `OpenIddictAuthorization` is also same.
* If they have repositories, they should be aggregate roots and should not be used as navigation properties in other entities (e.g. `OpenIddictApplication`).
* I think this will be the correct way since they are independently queried from database.
*/
public class OpenIddictToken : FullAuditedEntity<Guid>, IHasConcurrencyStamp
{
[DisableAuditing]

6
modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/TokenCleanupBackgroundWorker.cs

@ -19,6 +19,12 @@ public class TokenCleanupBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
protected async override Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
{
/* TODO: Should we use distributed locking here?
* Because, multiple instances of the application may work in parallel, and only one
* of them should work in a time. If you can't obtain the lock, it is good to wait for a longer time.
* I suggest to check https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxProcessor.cs
* for a good implementation, then apply a similar principle here.
*/
await workerContext
.ServiceProvider
.GetRequiredService<TokenCleanupService>()

Loading…
Cancel
Save