Browse Source

Docs fixed, Type Names improved.

pull/107/head
Sebastian Stehle 8 years ago
parent
commit
10415cf360
  1. 3
      Squidex.ruleset
  2. 3
      Squidex.sln.DotSettings
  3. 2
      src/Squidex.Domain.Apps.Core/Schemas/AssetsFieldProperties.cs
  4. 2
      src/Squidex.Domain.Apps.Core/Schemas/BooleanFieldProperties.cs
  5. 2
      src/Squidex.Domain.Apps.Core/Schemas/DateTimeFieldProperties.cs
  6. 3
      src/Squidex.Domain.Apps.Core/Schemas/FieldRegistry.cs
  7. 2
      src/Squidex.Domain.Apps.Core/Schemas/GeolocationFieldProperties.cs
  8. 2
      src/Squidex.Domain.Apps.Core/Schemas/JsonFieldProperties.cs
  9. 2
      src/Squidex.Domain.Apps.Core/Schemas/NumberFieldProperties.cs
  10. 2
      src/Squidex.Domain.Apps.Core/Schemas/ReferencesFieldProperties.cs
  11. 2
      src/Squidex.Domain.Apps.Core/Schemas/StringFieldProperties.cs
  12. 4
      src/Squidex.Domain.Apps.Events/Apps/AppClientAttached.cs
  13. 4
      src/Squidex.Domain.Apps.Events/Apps/AppClientChanged.cs
  14. 4
      src/Squidex.Domain.Apps.Events/Apps/AppClientRenamed.cs
  15. 4
      src/Squidex.Domain.Apps.Events/Apps/AppClientRevoked.cs
  16. 4
      src/Squidex.Domain.Apps.Events/Apps/AppContributorAssigned.cs
  17. 4
      src/Squidex.Domain.Apps.Events/Apps/AppContributorRemoved.cs
  18. 4
      src/Squidex.Domain.Apps.Events/Apps/AppCreated.cs
  19. 3
      src/Squidex.Domain.Apps.Events/Apps/AppLanguageAdded.cs
  20. 3
      src/Squidex.Domain.Apps.Events/Apps/AppLanguageRemoved.cs
  21. 3
      src/Squidex.Domain.Apps.Events/Apps/AppMasterLanguageSet.cs
  22. 4
      src/Squidex.Domain.Apps.Events/Assets/AssetCreated.cs
  23. 4
      src/Squidex.Domain.Apps.Events/Assets/AssetDeleted.cs
  24. 4
      src/Squidex.Domain.Apps.Events/Assets/AssetRenamed.cs
  25. 4
      src/Squidex.Domain.Apps.Events/Contents/ContentCreated.cs
  26. 4
      src/Squidex.Domain.Apps.Events/Contents/ContentDeleted.cs
  27. 4
      src/Squidex.Domain.Apps.Events/Contents/ContentPublished.cs
  28. 4
      src/Squidex.Domain.Apps.Events/Contents/ContentUnpublished.cs
  29. 4
      src/Squidex.Domain.Apps.Events/Contents/ContentUpdated.cs
  30. 4
      src/Squidex.Domain.Apps.Events/Schemas/FieldAdded.cs
  31. 4
      src/Squidex.Domain.Apps.Events/Schemas/FieldDeleted.cs
  32. 4
      src/Squidex.Domain.Apps.Events/Schemas/FieldDisabled.cs
  33. 4
      src/Squidex.Domain.Apps.Events/Schemas/FieldEnabled.cs
  34. 4
      src/Squidex.Domain.Apps.Events/Schemas/FieldHidden.cs
  35. 4
      src/Squidex.Domain.Apps.Events/Schemas/FieldLocked.cs
  36. 4
      src/Squidex.Domain.Apps.Events/Schemas/FieldShown.cs
  37. 4
      src/Squidex.Domain.Apps.Events/Schemas/FieldUpdated.cs
  38. 4
      src/Squidex.Domain.Apps.Events/Schemas/Old/WebhookAdded.cs
  39. 4
      src/Squidex.Domain.Apps.Events/Schemas/Old/WebhookDeleted.cs
  40. 4
      src/Squidex.Domain.Apps.Events/Schemas/SchemaCreated.cs
  41. 4
      src/Squidex.Domain.Apps.Events/Schemas/SchemaDeleted.cs
  42. 4
      src/Squidex.Domain.Apps.Events/Schemas/SchemaFieldsReordered.cs
  43. 4
      src/Squidex.Domain.Apps.Events/Schemas/SchemaPublished.cs
  44. 4
      src/Squidex.Domain.Apps.Events/Schemas/SchemaUnpublished.cs
  45. 4
      src/Squidex.Domain.Apps.Events/Schemas/SchemaUpdated.cs
  46. 4
      src/Squidex.Domain.Apps.Events/Schemas/ScriptsConfigured.cs
  47. 4
      src/Squidex.Domain.Apps.Events/Webhooks/WebhookCreated.cs
  48. 3
      src/Squidex.Domain.Apps.Events/Webhooks/WebhookDeleted.cs
  49. 4
      src/Squidex.Domain.Apps.Events/Webhooks/WebhookUpdated.cs
  50. 26
      src/Squidex.Infrastructure/CQRS/Events/EventTypeAttribute.cs
  51. 2
      src/Squidex.Infrastructure/TypeNameAttribute.cs
  52. 25
      src/Squidex.Infrastructure/TypeNameRegistry.cs
  53. 4
      src/Squidex/Controllers/Api/Docs/DocsController.cs
  54. 5
      src/Squidex/Controllers/ContentApi/ContentSwaggerController.cs
  55. 15
      src/Squidex/Controllers/DocsVM.cs
  56. 15
      src/Squidex/Controllers/UI/Account/AccountController.cs
  57. 4
      src/Squidex/Controllers/UI/Profile/ProfileController.cs
  58. 5
      src/Squidex/Pipeline/AppApiAttribute.cs
  59. 18
      src/Squidex/Pipeline/AppApiFilter.cs
  60. 6
      src/Squidex/Views/Shared/Docs.cshtml
  61. 36
      tests/Squidex.Infrastructure.Tests/TypeNameRegistryTests.cs

3
Squidex.ruleset

@ -74,8 +74,9 @@
<Rule Id="RECS0154" Action="None" />
<Rule Id="RECS0146" Action="Error" />
<Rule Id="RECS0026" Action="Error" />
<Rule Id="RECS0145" Action="None" />
</Rules>
<Rules AnalyzerId="Roslyn.Core" RuleNamespace="Roslyn.Core">
<Rule Id="AD0001" Action="None" />
<Rule Id="AD0001" Action="None" />
</Rules>
</RuleSet>

3
Squidex.sln.DotSettings

@ -8,6 +8,5 @@
==========================================================================&#xD;
Copyright (c) Squidex Group&#xD;
All rights reserved.&#xD;
==========================================================================&#xD;
</s:String>
==========================================================================</s:String>
</wpf:ResourceDictionary>

2
src/Squidex.Domain.Apps.Core/Schemas/AssetsFieldProperties.cs

@ -12,7 +12,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
{
[TypeName("AssetsField")]
[TypeName(nameof(AssetsField))]
public sealed class AssetsFieldProperties : FieldProperties
{
private int? minItems;

2
src/Squidex.Domain.Apps.Core/Schemas/BooleanFieldProperties.cs

@ -12,7 +12,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
{
[TypeName("BooleanField")]
[TypeName(nameof(BooleanField))]
public sealed class BooleanFieldProperties : FieldProperties
{
private BooleanFieldEditor editor;

2
src/Squidex.Domain.Apps.Core/Schemas/DateTimeFieldProperties.cs

@ -14,7 +14,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
{
[TypeName("DateTime")]
[TypeName(nameof(DateTimeField))]
public sealed class DateTimeFieldProperties : FieldProperties
{
private DateTimeFieldEditor editor;

3
src/Squidex.Domain.Apps.Core/Schemas/FieldRegistry.cs

@ -78,6 +78,9 @@ namespace Squidex.Domain.Apps.Core.Schemas
Add<GeolocationFieldProperties>(
(id, name, partitioning, properties) =>
new GeolocationField(id, name, partitioning, (GeolocationFieldProperties)properties));
typeNameRegistry.MapObsolete(typeof(ReferencesFieldProperties), "DateTime");
typeNameRegistry.MapObsolete(typeof(DateTimeFieldProperties), "References");
}
private void Add<TFieldProperties>(FactoryFunction fieldFactory)

2
src/Squidex.Domain.Apps.Core/Schemas/GeolocationFieldProperties.cs

@ -12,7 +12,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
{
[TypeName("GeolocationField")]
[TypeName(nameof(GeolocationField))]
public sealed class GeolocationFieldProperties : FieldProperties
{
private GeolocationFieldEditor editor;

2
src/Squidex.Domain.Apps.Core/Schemas/JsonFieldProperties.cs

@ -12,7 +12,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
{
[TypeName("JsonField")]
[TypeName(nameof(JsonField))]
public sealed class JsonFieldProperties : FieldProperties
{
public override JToken GetDefaultValue()

2
src/Squidex.Domain.Apps.Core/Schemas/NumberFieldProperties.cs

@ -13,7 +13,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
{
[TypeName("NumberField")]
[TypeName(nameof(NumberField))]
public sealed class NumberFieldProperties : FieldProperties
{
private double? maxValue;

2
src/Squidex.Domain.Apps.Core/Schemas/ReferencesFieldProperties.cs

@ -13,7 +13,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
{
[TypeName("References")]
[TypeName(nameof(ReferencesField))]
public sealed class ReferencesFieldProperties : FieldProperties
{
private int? minItems;

2
src/Squidex.Domain.Apps.Core/Schemas/StringFieldProperties.cs

@ -13,7 +13,7 @@ using Squidex.Infrastructure;
namespace Squidex.Domain.Apps.Core.Schemas
{
[TypeName("StringField")]
[TypeName(nameof(StringField))]
public sealed class StringFieldProperties : FieldProperties
{
private int? minLength;

4
src/Squidex.Domain.Apps.Events/Apps/AppClientAttached.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppClientAttachedEvent")]
[EventType(nameof(AppClientAttached))]
public sealed class AppClientAttached : AppEvent
{
public string Id { get; set; }

4
src/Squidex.Domain.Apps.Events/Apps/AppClientChanged.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppClientChangedEvent")]
[EventType(nameof(AppClientChanged))]
public sealed class AppClientChanged : AppEvent
{
public string Id { get; set; }

4
src/Squidex.Domain.Apps.Events/Apps/AppClientRenamed.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppClientRenamedEvent")]
[EventType(nameof(AppClientRenamed))]
public sealed class AppClientRenamed : AppEvent
{
public string Id { get; set; }

4
src/Squidex.Domain.Apps.Events/Apps/AppClientRevoked.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppClientRevokedEvent")]
[EventType(nameof(AppClientRevoked))]
public sealed class AppClientRevoked : AppEvent
{
public string Id { get; set; }

4
src/Squidex.Domain.Apps.Events/Apps/AppContributorAssigned.cs

@ -7,11 +7,11 @@
// ==========================================================================
using Squidex.Domain.Apps.Core.Apps;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppContributorAssignedEvent")]
[EventType(nameof(AppContributorAssigned))]
public sealed class AppContributorAssigned : AppEvent
{
public string ContributorId { get; set; }

4
src/Squidex.Domain.Apps.Events/Apps/AppContributorRemoved.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppContributorRemovedEvent")]
[EventType(nameof(AppContributorRemoved))]
public sealed class AppContributorRemoved : AppEvent
{
public string ContributorId { get; set; }

4
src/Squidex.Domain.Apps.Events/Apps/AppCreated.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppCreatedEvent")]
[EventType(nameof(AppCreated))]
public sealed class AppCreated : AppEvent
{
public string Name { get; set; }

3
src/Squidex.Domain.Apps.Events/Apps/AppLanguageAdded.cs

@ -7,10 +7,11 @@
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppLanguageAddedEvent")]
[EventType(nameof(AppLanguageAdded))]
public sealed class AppLanguageAdded : AppEvent
{
public Language Language { get; set; }

3
src/Squidex.Domain.Apps.Events/Apps/AppLanguageRemoved.cs

@ -7,10 +7,11 @@
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppLanguageRemovedEvent")]
[EventType(nameof(AppLanguageRemoved))]
public sealed class AppLanguageRemoved : AppEvent
{
public Language Language { get; set; }

3
src/Squidex.Domain.Apps.Events/Apps/AppMasterLanguageSet.cs

@ -7,10 +7,11 @@
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Apps
{
[TypeName("AppMasterLanguageSetEvent")]
[EventType(nameof(AppMasterLanguageSet))]
public sealed class AppMasterLanguageSet : AppEvent
{
public Language Language { get; set; }

4
src/Squidex.Domain.Apps.Events/Assets/AssetCreated.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Assets
{
[TypeName("AssetCreatedEvent")]
[EventType(nameof(AssetCreated))]
public sealed class AssetCreated : AssetEvent
{
public string FileName { get; set; }

4
src/Squidex.Domain.Apps.Events/Assets/AssetDeleted.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Assets
{
[TypeName("AssetDeletedEvent")]
[EventType(nameof(AssetDeleted))]
public sealed class AssetDeleted : AssetEvent
{
public long DeletedSize { get; set; }

4
src/Squidex.Domain.Apps.Events/Assets/AssetRenamed.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Assets
{
[TypeName("AssetRenamedEvent")]
[EventType(nameof(AssetRenamed))]
public sealed class AssetRenamed : AssetEvent
{
public string FileName { get; set; }

4
src/Squidex.Domain.Apps.Events/Contents/ContentCreated.cs

@ -7,11 +7,11 @@
// ==========================================================================
using Squidex.Domain.Apps.Core.Contents;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Contents
{
[TypeName("ContentCreatedEvent")]
[EventType(nameof(ContentCreated))]
public sealed class ContentCreated : ContentEvent
{
public NamedContentData Data { get; set; }

4
src/Squidex.Domain.Apps.Events/Contents/ContentDeleted.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Contents
{
[TypeName("ContentDeletedEvent")]
[EventType(nameof(ContentDeleted))]
public sealed class ContentDeleted : ContentEvent
{
}

4
src/Squidex.Domain.Apps.Events/Contents/ContentPublished.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Contents
{
[TypeName("ContentPublishedEvent")]
[EventType(nameof(ContentPublished))]
public sealed class ContentPublished : ContentEvent
{
}

4
src/Squidex.Domain.Apps.Events/Contents/ContentUnpublished.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Contents
{
[TypeName("ContentUnpublishedEvent")]
[EventType(nameof(ContentUnpublished))]
public sealed class ContentUnpublished : ContentEvent
{
}

4
src/Squidex.Domain.Apps.Events/Contents/ContentUpdated.cs

@ -7,11 +7,11 @@
// ==========================================================================
using Squidex.Domain.Apps.Core.Contents;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Contents
{
[TypeName("ContentUpdatedEvent")]
[EventType(nameof(ContentUpdated))]
public sealed class ContentUpdated : ContentEvent
{
public NamedContentData Data { get; set; }

4
src/Squidex.Domain.Apps.Events/Schemas/FieldAdded.cs

@ -7,11 +7,11 @@
// ==========================================================================
using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("FieldAddedEvent")]
[EventType(nameof(FieldAdded))]
public sealed class FieldAdded : FieldEvent
{
public string Name { get; set; }

4
src/Squidex.Domain.Apps.Events/Schemas/FieldDeleted.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("FieldDeletedEvent")]
[EventType(nameof(FieldDeleted))]
public sealed class FieldDeleted : FieldEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/FieldDisabled.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("FieldDisabledEvent")]
[EventType(nameof(FieldDisabled))]
public sealed class FieldDisabled : FieldEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/FieldEnabled.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("FieldEnabledEvent")]
[EventType(nameof(FieldEnabled))]
public sealed class FieldEnabled : FieldEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/FieldHidden.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("FieldHiddenEvent")]
[EventType(nameof(FieldHidden))]
public sealed class FieldHidden : FieldEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/FieldLocked.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("FieldLockedEvent")]
[EventType(nameof(FieldLocked))]
public sealed class FieldLocked : FieldEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/FieldShown.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("FieldShownEvent")]
[EventType(nameof(FieldShown))]
public sealed class FieldShown : FieldEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/FieldUpdated.cs

@ -7,11 +7,11 @@
// ==========================================================================
using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("FieldUpdatedEvent")]
[EventType(nameof(FieldUpdated))]
public sealed class FieldUpdated : FieldEvent
{
public FieldProperties Properties { get; set; }

4
src/Squidex.Domain.Apps.Events/Schemas/Old/WebhookAdded.cs

@ -7,11 +7,11 @@
// ==========================================================================
using System;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas.Old
{
[TypeName("WebhookAddedEvent")]
[EventType(nameof(WebhookAdded))]
[Obsolete]
public sealed class WebhookAdded : SchemaEvent
{

4
src/Squidex.Domain.Apps.Events/Schemas/Old/WebhookDeleted.cs

@ -7,11 +7,11 @@
// ==========================================================================
using System;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas.Old
{
[TypeName("WebhookDeletedEvent")]
[EventType(nameof(WebhookDeleted))]
[Obsolete]
public sealed class WebhookDeleted : SchemaEvent
{

4
src/Squidex.Domain.Apps.Events/Schemas/SchemaCreated.cs

@ -7,12 +7,12 @@
// ==========================================================================
using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
using SchemaFields = System.Collections.Generic.List<Squidex.Domain.Apps.Events.Schemas.SchemaCreatedField>;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("SchemaCreatedEvent")]
[EventType(nameof(SchemaCreated))]
public sealed class SchemaCreated : SchemaEvent
{
public string Name { get; set; }

4
src/Squidex.Domain.Apps.Events/Schemas/SchemaDeleted.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("SchemaDeletedEvent")]
[EventType(nameof(SchemaDeleted))]
public sealed class SchemaDeleted : SchemaEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/SchemaFieldsReordered.cs

@ -7,11 +7,11 @@
// ==========================================================================
using System.Collections.Generic;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("SchemaFieldsReorderedEvent")]
[EventType(nameof(SchemaFieldsReordered))]
public sealed class SchemaFieldsReordered : SchemaEvent
{
public List<long> FieldIds { get; set; }

4
src/Squidex.Domain.Apps.Events/Schemas/SchemaPublished.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("SchemaPublishedEvent")]
[EventType(nameof(SchemaPublished))]
public sealed class SchemaPublished : SchemaEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/SchemaUnpublished.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("SchemaUnpublishedEvent")]
[EventType(nameof(SchemaUnpublished))]
public sealed class SchemaUnpublished : SchemaEvent
{
}

4
src/Squidex.Domain.Apps.Events/Schemas/SchemaUpdated.cs

@ -7,11 +7,11 @@
// ==========================================================================
using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("SchemaUpdatedEvent")]
[EventType(nameof(SchemaUpdated))]
public sealed class SchemaUpdated : SchemaEvent
{
public SchemaProperties Properties { get; set; }

4
src/Squidex.Domain.Apps.Events/Schemas/ScriptsConfigured.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Schemas
{
[TypeName("ScriptsConfiguredEvent")]
[EventType(nameof(ScriptsConfigured))]
public sealed class ScriptsConfigured : SchemaEvent
{
public string ScriptQuery { get; set; }

4
src/Squidex.Domain.Apps.Events/Webhooks/WebhookCreated.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Webhooks
{
[TypeName("WebhookCreatedEvent")]
[EventType(nameof(WebhookCreated))]
public sealed class WebhookCreated : WebhookEditEvent
{
public string SharedSecret { get; set; }

3
src/Squidex.Domain.Apps.Events/Webhooks/WebhookDeleted.cs

@ -7,10 +7,11 @@
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Webhooks
{
[TypeName("WebhookDeletedEventV2")]
[EventType(nameof(WebhookUpdated), 2)]
public sealed class WebhookDeleted : WebhookEvent
{
}

4
src/Squidex.Domain.Apps.Events/Webhooks/WebhookUpdated.cs

@ -6,11 +6,11 @@
// All rights reserved.
// ==========================================================================
using Squidex.Infrastructure;
using Squidex.Infrastructure.CQRS.Events;
namespace Squidex.Domain.Apps.Events.Webhooks
{
[TypeName("WebhookUpdatedEvent")]
[EventType(nameof(WebhookUpdated))]
public sealed class WebhookUpdated : WebhookEditEvent
{
}

26
src/Squidex.Infrastructure/CQRS/Events/EventTypeAttribute.cs

@ -0,0 +1,26 @@
// ==========================================================================
// EventTypeAttribute.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
using System;
namespace Squidex.Infrastructure.CQRS.Events
{
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
public sealed class EventTypeAttribute : TypeNameAttribute
{
public EventTypeAttribute(string typeName, int version = 1)
: base(CreateTypeName(typeName, version))
{
}
private static string CreateTypeName(string typeName, int version)
{
return $"{typeName}Event" + (version > 1 ? $"V{version}" : string.Empty);
}
}
}

2
src/Squidex.Infrastructure/TypeNameAttribute.cs

@ -11,7 +11,7 @@ using System;
namespace Squidex.Infrastructure
{
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
public sealed class TypeNameAttribute : Attribute
public class TypeNameAttribute : Attribute
{
public string TypeName { get; }

25
src/Squidex.Infrastructure/TypeNameRegistry.cs

@ -31,6 +31,31 @@ namespace Squidex.Infrastructure
return this;
}
public TypeNameRegistry MapObsolete(Type type, string name)
{
Guard.NotNull(type, nameof(type));
Guard.NotNull(name, nameof(name));
lock (namesByType)
{
try
{
typesByName.Add(name, type);
}
catch (ArgumentException)
{
if (typesByName[name] != type)
{
var message = $"The name '{name}' is already registered with type '{typesByName[name]}'";
throw new ArgumentException(message, nameof(type));
}
}
}
return this;
}
public TypeNameRegistry Map(Type type, string name)
{
Guard.NotNull(type, nameof(type));

4
src/Squidex/Controllers/Api/Docs/DocsController.cs

@ -20,9 +20,9 @@ namespace Squidex.Controllers.Api.Docs
[ApiCosts(0)]
public IActionResult Docs()
{
ViewBag.Specification = "~/swagger/v1/swagger.json";
var vm = new DocsVM { Specification = "~/swagger/v1/swagger.json" };
return View("Docs");
return View(nameof(Docs), vm);
}
}
}

5
src/Squidex/Controllers/ContentApi/ContentSwaggerController.cs

@ -17,6 +17,7 @@ using Squidex.Pipeline;
namespace Squidex.Controllers.ContentApi
{
[ApiExceptionFilter]
[AppApi(false)]
[SwaggerIgnore]
public sealed class ContentSwaggerController : ControllerBase
{
@ -35,9 +36,9 @@ namespace Squidex.Controllers.ContentApi
[ApiCosts(0)]
public IActionResult Docs(string app)
{
ViewBag.Specification = $"~/content/{app}/swagger/v1/swagger.json";
var vm = new DocsVM { Specification = $"~/content/{app}/swagger/v1/swagger.json" };
return View("Docs");
return View(nameof(Docs), vm);
}
[HttpGet]

15
src/Squidex/Controllers/DocsVM.cs

@ -0,0 +1,15 @@
// ==========================================================================
// DocsVM.cs
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex Group
// All rights reserved.
// ==========================================================================
namespace Squidex.Controllers
{
public sealed class DocsVM
{
public string Specification { get; set; }
}
}

15
src/Squidex/Controllers/UI/Account/AccountController.cs

@ -79,11 +79,18 @@ namespace Squidex.Controllers.UI.Account
throw new SecurityException("User is not allowed to login.");
}
[HttpGet]
[Route("account/lockedout")]
public IActionResult LockedOut()
{
return View();
}
[HttpGet]
[Route("account/accessdenied")]
public IActionResult AccessDenied()
{
return View("AccessDenied");
return View();
}
[HttpGet]
@ -177,7 +184,7 @@ namespace Squidex.Controllers.UI.Account
ReturnUrl = returnUrl
};
return View("Login", vm);
return View(nameof(Login), vm);
}
[HttpPost]
@ -206,7 +213,7 @@ namespace Squidex.Controllers.UI.Account
if (!result.Succeeded && result.IsLockedOut)
{
return View("LockedOut");
return View(nameof(LockedOut));
}
var isLoggedIn = result.Succeeded;
@ -238,7 +245,7 @@ namespace Squidex.Controllers.UI.Account
if (user.IsLocked)
{
return View("LockedOut");
return View(nameof(LockedOut));
}
}
}

4
src/Squidex/Controllers/UI/Profile/ProfileController.cs

@ -155,7 +155,7 @@ namespace Squidex.Controllers.UI.Profile
if (!ModelState.IsValid)
{
return View("Profile", await GetProfileVM(user, model));
return View(nameof(Profile), await GetProfileVM(user, model));
}
string errorMessage;
@ -177,7 +177,7 @@ namespace Squidex.Controllers.UI.Profile
errorMessage = "An unexpected exception occurred.";
}
return View("Profile", await GetProfileVM(user, model, errorMessage));
return View(nameof(Profile), await GetProfileVM(user, model, errorMessage));
}
private async Task<ProfileVM> GetProfileVM(IUser user, ChangeProfileModel model = null, string errorMessage = null, string successMessage = null)

5
src/Squidex/Pipeline/AppApiAttribute.cs

@ -12,9 +12,12 @@ namespace Squidex.Pipeline
{
public sealed class AppApiAttribute : ServiceFilterAttribute
{
public AppApiAttribute()
public bool CheckPermissions { get; }
public AppApiAttribute(bool checkPermissions = true)
: base(typeof(AppApiFilter))
{
CheckPermissions = checkPermissions;
}
}
}

18
src/Squidex/Pipeline/AppApiFilter.cs

@ -21,12 +21,22 @@ using Squidex.Shared.Identity;
namespace Squidex.Pipeline
{
public sealed class AppApiFilter : IAsyncAuthorizationFilter
public sealed class AppApiFilter : IAsyncAuthorizationFilter, IFilterContainer
{
private readonly IAppProvider appProvider;
private readonly IAppPlansProvider appPlanProvider;
private readonly IUsageTracker usageTracker;
IFilterMetadata IFilterContainer.FilterDefinition { get; set; }
public AppApiAttribute FilterDefinition
{
get
{
return (AppApiAttribute)((IFilterContainer)this).FilterDefinition;
}
}
public AppApiFilter(IAppProvider appProvider, IAppPlansProvider appPlanProvider, IUsageTracker usageTracker)
{
this.appProvider = appProvider;
@ -49,6 +59,12 @@ namespace Squidex.Pipeline
return;
}
if (!FilterDefinition.CheckPermissions)
{
context.HttpContext.Features.Set<IAppFeature>(new AppFeature(app));
return;
}
var user = context.HttpContext.User;
var permission =

6
src/Squidex/Views/Shared/Docs.cshtml

@ -1,4 +1,6 @@
@{
@model Squidex.Controllers.DocsVM
@{
Layout = null;
}
@ -31,7 +33,7 @@
</style>
</head>
<body>
<redoc spec-url="@Url.Content(ViewBag.Specification)"></redoc>
<redoc spec-url="@Url.Content(Model.Specification)"></redoc>
<script src="/scripts/redoc.min.js"></script>
</body>

36
tests/Squidex.Infrastructure.Tests/TypeNameRegistryTests.cs

@ -8,6 +8,7 @@
using System;
using System.Reflection;
using Squidex.Infrastructure.CQRS.Events;
using Xunit;
namespace Squidex.Infrastructure
@ -21,6 +22,11 @@ namespace Squidex.Infrastructure
{
}
[EventType(nameof(MyAdded), 2)]
public sealed class MyAdded
{
}
[Fact]
public void Should_register_and_retrieve_types()
{
@ -57,6 +63,28 @@ namespace Squidex.Infrastructure
Assert.Equal(typeof(MyType), sut.GetType("My"));
}
[Fact]
public void Should_register_event_type_from_assembly()
{
sut.Map(typeof(TypeNameRegistryTests).GetTypeInfo().Assembly);
Assert.Equal("MyAddedEventV2", sut.GetName<MyAdded>());
Assert.Equal("MyAddedEventV2", sut.GetName(typeof(MyAdded)));
Assert.Equal(typeof(MyAdded), sut.GetType("myAddedEventV2"));
Assert.Equal(typeof(MyAdded), sut.GetType("MyAddedEventV2"));
}
[Fact]
public void Should_register_fallback_name()
{
sut.Map(typeof(MyType));
sut.MapObsolete(typeof(MyType), "my-old");
Assert.Equal(typeof(MyType), sut.GetType("my"));
Assert.Equal(typeof(MyType), sut.GetType("my-old"));
}
[Fact]
public void Should_not_throw_exception_if_type_is_already_registered_with_same_name()
{
@ -80,6 +108,14 @@ namespace Squidex.Infrastructure
Assert.Throws<ArgumentException>(() => sut.Map(typeof(byte), "short"));
}
[Fact]
public void Should_throw_exception_if_obsolete_name_is_already_registered()
{
sut.MapObsolete(typeof(short), "short2");
Assert.Throws<ArgumentException>(() => sut.MapObsolete(typeof(byte), "short2"));
}
[Fact]
public void Should_throw_exception_if_name_is_not_supported()
{

Loading…
Cancel
Save