Browse Source

Referer and disabled fix.

pull/566/head
Sebastian 5 years ago
parent
commit
102233e86b
  1. 4
      backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs
  2. 2
      backend/src/Squidex.Domain.Apps.Entities/Apps/Commands/ChangePlan.cs
  3. 2
      backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/IAppPlanBillingManager.cs
  4. 2
      backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/NoopAppPlanBillingManager.cs
  5. 2
      backend/src/Squidex/Areas/Api/Controllers/Plans/AppPlansController.cs
  6. 9
      backend/src/Squidex/Areas/Api/Controllers/Plans/Models/ChangePlanDto.cs
  7. 20
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppDomainObjectTests.cs
  8. 2
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/NoopAppPlanBillingManagerTests.cs
  9. 2
      frontend/app/shared/state/contents.forms.ts

4
backend/src/Squidex.Domain.Apps.Entities/Apps/AppDomainObject.cs

@ -282,7 +282,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
} }
else else
{ {
var result = await appPlansBillingManager.ChangePlanAsync(c.Actor.Identifier, Snapshot.NamedId(), c.PlanId); var result = await appPlansBillingManager.ChangePlanAsync(c.Actor.Identifier, Snapshot.NamedId(), c.PlanId, c.Referer);
switch (result) switch (result)
{ {
@ -298,7 +298,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
case ArchiveApp archiveApp: case ArchiveApp archiveApp:
return UpdateAsync(archiveApp, async c => return UpdateAsync(archiveApp, async c =>
{ {
await appPlansBillingManager.ChangePlanAsync(c.Actor.Identifier, Snapshot.NamedId(), null); await appPlansBillingManager.ChangePlanAsync(c.Actor.Identifier, Snapshot.NamedId(), null, null);
ArchiveApp(c); ArchiveApp(c);
}); });

2
backend/src/Squidex.Domain.Apps.Entities/Apps/Commands/ChangePlan.cs

@ -12,5 +12,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Commands
public bool FromCallback { get; set; } public bool FromCallback { get; set; }
public string PlanId { get; set; } public string PlanId { get; set; }
public string Referer { get; set; }
} }
} }

2
backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/IAppPlanBillingManager.cs

@ -15,7 +15,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
{ {
bool HasPortal { get; } bool HasPortal { get; }
Task<IChangePlanResult> ChangePlanAsync(string userId, NamedId<Guid> appId, string? planId); Task<IChangePlanResult> ChangePlanAsync(string userId, NamedId<Guid> appId, string? planId, string? referer);
Task<string> GetPortalLinkAsync(string userId); Task<string> GetPortalLinkAsync(string userId);
} }

2
backend/src/Squidex.Domain.Apps.Entities/Apps/Plans/NoopAppPlanBillingManager.cs

@ -18,7 +18,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
get { return false; } get { return false; }
} }
public Task<IChangePlanResult> ChangePlanAsync(string userId, NamedId<Guid> appId, string? planId) public Task<IChangePlanResult> ChangePlanAsync(string userId, NamedId<Guid> appId, string? planId, string? referer)
{ {
return Task.FromResult<IChangePlanResult>(new PlanChangedResult()); return Task.FromResult<IChangePlanResult>(new PlanChangedResult());
} }

2
backend/src/Squidex/Areas/Api/Controllers/Plans/AppPlansController.cs

@ -78,7 +78,7 @@ namespace Squidex.Areas.Api.Controllers.Plans
[ApiCosts(0)] [ApiCosts(0)]
public async Task<IActionResult> PutPlan(string app, [FromBody] ChangePlanDto request) public async Task<IActionResult> PutPlan(string app, [FromBody] ChangePlanDto request)
{ {
var context = await CommandBus.PublishAsync(request.ToCommand()); var context = await CommandBus.PublishAsync(request.ToCommand(HttpContext));
string? redirectUri = null; string? redirectUri = null;

9
backend/src/Squidex/Areas/Api/Controllers/Plans/Models/ChangePlanDto.cs

@ -6,6 +6,7 @@
// ========================================================================== // ==========================================================================
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Http;
using Squidex.Domain.Apps.Entities.Apps.Commands; using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.Reflection;
@ -19,9 +20,13 @@ namespace Squidex.Areas.Api.Controllers.Plans.Models
[Required] [Required]
public string PlanId { get; set; } public string PlanId { get; set; }
public ChangePlan ToCommand() public ChangePlan ToCommand(HttpContext httpContext)
{ {
return SimpleMapper.Map(this, new ChangePlan()); var result = SimpleMapper.Map(this, new ChangePlan());
result.Referer = httpContext.Request.Headers["Referer"];
return result;
} }
} }
} }

20
backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/AppDomainObjectTests.cs

@ -187,7 +187,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
{ {
var command = new ChangePlan { PlanId = planIdPaid }; var command = new ChangePlan { PlanId = planIdPaid };
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid, command.Referer))
.Returns(new PlanChangedResult()); .Returns(new PlanChangedResult());
await ExecuteCreateAsync(); await ExecuteCreateAsync();
@ -222,7 +222,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
CreateEvent(new AppPlanChanged { PlanId = planIdPaid }) CreateEvent(new AppPlanChanged { PlanId = planIdPaid })
); );
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(A<string>._, A<NamedId<Guid>>._, A<string?>._)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(A<string>._, A<NamedId<Guid>>._, A<string?>._, A<string?>._))
.MustNotHaveHappened(); .MustNotHaveHappened();
} }
@ -231,7 +231,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
{ {
var command = new ChangePlan { PlanId = planIdFree, FromCallback = true }; var command = new ChangePlan { PlanId = planIdFree, FromCallback = true };
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid, command.Referer))
.Returns(new PlanChangedResult()); .Returns(new PlanChangedResult());
await ExecuteCreateAsync(); await ExecuteCreateAsync();
@ -248,19 +248,19 @@ namespace Squidex.Domain.Apps.Entities.Apps
CreateEvent(new AppPlanReset()) CreateEvent(new AppPlanReset())
); );
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(A<string>._, A<NamedId<Guid>>._, planIdFree)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(A<string>._, A<NamedId<Guid>>._, planIdFree, A<string?>._))
.MustNotHaveHappened(); .MustNotHaveHappened();
} }
[Fact] [Fact]
public async Task ChangePlan_should_reset_plan_for_reset_plan() public async Task ChangePlan_should_reset_plan_for_free_plan()
{ {
var command = new ChangePlan { PlanId = planIdFree }; var command = new ChangePlan { PlanId = planIdFree };
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid, command.Referer))
.Returns(new PlanChangedResult()); .Returns(new PlanChangedResult());
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdFree)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdFree, command.Referer))
.Returns(new PlanChangedResult()); .Returns(new PlanChangedResult());
await ExecuteCreateAsync(); await ExecuteCreateAsync();
@ -283,7 +283,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
{ {
var command = new ChangePlan { PlanId = planIdPaid }; var command = new ChangePlan { PlanId = planIdPaid };
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid, command.Referer))
.Returns(new RedirectToCheckoutResult(new Uri("http://squidex.io"))); .Returns(new RedirectToCheckoutResult(new Uri("http://squidex.io")));
await ExecuteCreateAsync(); await ExecuteCreateAsync();
@ -306,7 +306,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
result.ShouldBeEquivalent(new EntitySavedResult(4)); result.ShouldBeEquivalent(new EntitySavedResult(4));
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid, A<string?>._))
.MustNotHaveHappened(); .MustNotHaveHappened();
} }
@ -678,7 +678,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
CreateEvent(new AppArchived()) CreateEvent(new AppArchived())
); );
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(command.Actor.Identifier, AppNamedId, null)) A.CallTo(() => appPlansBillingManager.ChangePlanAsync(command.Actor.Identifier, AppNamedId, null, A<string?>._))
.MustHaveHappened(); .MustHaveHappened();
} }

2
backend/tests/Squidex.Domain.Apps.Entities.Tests/Apps/Plans/NoopAppPlanBillingManagerTests.cs

@ -23,7 +23,7 @@ namespace Squidex.Domain.Apps.Entities.Apps.Plans
[Fact] [Fact]
public async Task Should_do_nothing_when_changing_plan() public async Task Should_do_nothing_when_changing_plan()
{ {
await sut.ChangePlanAsync(null!, null!, null); await sut.ChangePlanAsync(null!, null!, null, null);
} }
[Fact] [Fact]

2
frontend/app/shared/state/contents.forms.ts

@ -208,7 +208,7 @@ export abstract class AbstractContentForm<T extends FieldDto, TForm extends Abst
public updateState(user: any, data: any, itemData?: any) { public updateState(user: any, data: any, itemData?: any) {
const state = { const state = {
isDisabled: this.field.isDisabled, isDisabled: this.field.isDisabled,
isHidden: this.field.isHidden, isHidden: false,
isRequired: this.field.properties.isRequired && !this.isOptional isRequired: this.field.properties.isRequired && !this.isOptional
}; };

Loading…
Cancel
Save