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
{
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)
{
@ -298,7 +298,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
case ArchiveApp archiveApp:
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);
});

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 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; }
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);
}

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; }
}
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());
}

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

@ -78,7 +78,7 @@ namespace Squidex.Areas.Api.Controllers.Plans
[ApiCosts(0)]
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;

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

@ -6,6 +6,7 @@
// ==========================================================================
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNetCore.Http;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Reflection;
@ -19,9 +20,13 @@ namespace Squidex.Areas.Api.Controllers.Plans.Models
[Required]
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 };
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid))
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid, command.Referer))
.Returns(new PlanChangedResult());
await ExecuteCreateAsync();
@ -222,7 +222,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
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();
}
@ -231,7 +231,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
{
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());
await ExecuteCreateAsync();
@ -248,19 +248,19 @@ namespace Squidex.Domain.Apps.Entities.Apps
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();
}
[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 };
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid))
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid, command.Referer))
.Returns(new PlanChangedResult());
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdFree))
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdFree, command.Referer))
.Returns(new PlanChangedResult());
await ExecuteCreateAsync();
@ -283,7 +283,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
{
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")));
await ExecuteCreateAsync();
@ -306,7 +306,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
result.ShouldBeEquivalent(new EntitySavedResult(4));
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid))
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(Actor.Identifier, AppNamedId, planIdPaid, A<string?>._))
.MustNotHaveHappened();
}
@ -678,7 +678,7 @@ namespace Squidex.Domain.Apps.Entities.Apps
CreateEvent(new AppArchived())
);
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(command.Actor.Identifier, AppNamedId, null))
A.CallTo(() => appPlansBillingManager.ChangePlanAsync(command.Actor.Identifier, AppNamedId, null, A<string?>._))
.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]
public async Task Should_do_nothing_when_changing_plan()
{
await sut.ChangePlanAsync(null!, null!, null);
await sut.ChangePlanAsync(null!, null!, null, null);
}
[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) {
const state = {
isDisabled: this.field.isDisabled,
isHidden: this.field.isHidden,
isHidden: false,
isRequired: this.field.properties.isRequired && !this.isOptional
};

Loading…
Cancel
Save