Skip to content

Commit

Permalink
Login Settings Deployment plan
Browse files Browse the repository at this point in the history
Related to #5558
  • Loading branch information
agriffard committed Feb 15, 2020
1 parent a5e11d3 commit 24c496d
Show file tree
Hide file tree
Showing 11 changed files with 124 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using OrchardCore.Deployment;
using OrchardCore.Settings;
using OrchardCore.Users.Services;

namespace OrchardCore.Users.Deployment
{
public class LoginSettingsDeploymentSource : IDeploymentSource
{
private readonly IMembershipService _membershipService;
private readonly ISiteService _siteService;

public LoginSettingsDeploymentSource(IMembershipService membershipService, ISiteService siteService)
{
_membershipService = membershipService;
_siteService = siteService;
}

public async Task ProcessDeploymentStepAsync(DeploymentStep step, DeploymentPlanResult result)
{
var loginSettingsStep = step as LoginSettingsDeploymentStep;

if (loginSettingsStep == null)
{
return;
}

var loginSettings = await _membershipService.GetLoginSettingsAsync();

// Adding Login settings
result.Steps.Add(new JObject(
new JProperty("name", "Settings"),
new JProperty("LoginSettings", JObject.FromObject(loginSettings))
));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using OrchardCore.Deployment;

namespace OrchardCore.Users.Deployment
{
/// <summary>
/// Adds layers to a <see cref="DeploymentPlanResult"/>.
/// </summary>
public class LoginSettingsDeploymentStep : DeploymentStep
{
public LoginSettingsDeploymentStep()
{
Name = "LoginSettings";
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using OrchardCore.Deployment;
using OrchardCore.DisplayManagement.Handlers;
using OrchardCore.DisplayManagement.Views;

namespace OrchardCore.Users.Deployment
{
public class LoginSettingsDeploymentStepDriver : DisplayDriver<DeploymentStep, LoginSettingsDeploymentStep>
{
public override IDisplayResult Display(LoginSettingsDeploymentStep step)
{
return
Combine(
View("LoginSettingsDeploymentStep_Fields_Summary", step).Location("Summary", "Content"),
View("LoginSettingsDeploymentStep_Fields_Thumbnail", step).Location("Thumbnail", "Content")
);
}

public override IDisplayResult Edit(LoginSettingsDeploymentStep step)
{
return View("LoginSettingsDeploymentStep_Fields_Edit", step).Location("Content");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
<ProjectReference Include="..\..\OrchardCore\OrchardCore.Localization.Abstractions\OrchardCore.Localization.Abstractions.csproj" />
<ProjectReference Include="..\..\OrchardCore\OrchardCore.Setup.Abstractions\OrchardCore.Setup.Abstractions.csproj" />
<ProjectReference Include="..\..\OrchardCore\OrchardCore.Workflows.Abstractions\OrchardCore.Workflows.Abstractions.csproj" />
<ProjectReference Include="..\..\OrchardCore\OrchardCore.Deployment.Abstractions\OrchardCore.Deployment.Abstractions.csproj" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using OrchardCore.Entities;
using OrchardCore.Settings;
using OrchardCore.Users.Models;

namespace OrchardCore.Users.Services
Expand All @@ -9,12 +11,15 @@ public class MembershipService : IMembershipService
{
private readonly UserManager<IUser> _userManager;
private readonly IUserClaimsPrincipalFactory<IUser> _claimsPrincipalFactory;
private readonly ISiteService _siteService;

public MembershipService(
IUserClaimsPrincipalFactory<IUser> claimsPrincipalFactory,
ISiteService siteService,
UserManager<IUser> userManager)
{
_claimsPrincipalFactory = claimsPrincipalFactory;
_siteService = siteService;
_userManager = userManager;
}

Expand All @@ -41,5 +46,19 @@ public Task<ClaimsPrincipal> CreateClaimsPrincipal(IUser user)
{
return _claimsPrincipalFactory.CreateAsync(user as User);
}

public async Task<LoginSettings> GetLoginSettingsAsync()
{
var siteSettings = await _siteService.GetSiteSettingsAsync();

if (siteSettings.Has<LoginSettings>())
{
return siteSettings.As<LoginSettings>();
}
else
{
return new LoginSettings();
}
}
}
}
13 changes: 13 additions & 0 deletions src/OrchardCore.Modules/OrchardCore.Users/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Microsoft.Extensions.Options;
using OrchardCore.Admin;
using OrchardCore.Data.Migration;
using OrchardCore.Deployment;
using OrchardCore.DisplayManagement;
using OrchardCore.DisplayManagement.Handlers;
using OrchardCore.DisplayManagement.Theming;
Expand All @@ -24,6 +25,7 @@
using OrchardCore.Setup.Events;
using OrchardCore.Users.Commands;
using OrchardCore.Users.Controllers;
using OrchardCore.Users.Deployment;
using OrchardCore.Users.Drivers;
using OrchardCore.Users.Indexes;
using OrchardCore.Users.Liquid;
Expand Down Expand Up @@ -300,4 +302,15 @@ public override void ConfigureServices(IServiceCollection services)
services.AddScoped<IDisplayDriver<ISite>, ResetPasswordSettingsDisplayDriver>();
}
}

[RequireFeatures("OrchardCore.Deployment")]
public class DeploymentStartup : StartupBase
{
public override void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IDeploymentSource, LoginSettingsDeploymentSource>();
services.AddSingleton<IDeploymentStepFactory>(new DeploymentStepFactory<LoginSettingsDeploymentStep>());
services.AddScoped<IDisplayDriver<DeploymentStep>, LoginSettingsDeploymentStepDriver>();
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@model dynamic

<h5>@T["Login Settings"]</h5>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@model dynamic

<h5>@T["Login Settings"]</h5>

<span class="hint">@T["Adds login settings to the plan."]</span>
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
@model dynamic

<h4 class="card-title">@T["Login Settings"]</h4>
<p>@T["Exports login settings."]</p>
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Security.Claims;
using System.Threading.Tasks;
using OrchardCore.Users.Models;

namespace OrchardCore.Users.Services
{
Expand Down Expand Up @@ -29,5 +30,7 @@ public interface IMembershipService
/// <param name="user">The <see cref="IUser"/>.</param>
/// <returns>A user <see cref="ClaimsPrincipal"/>s.</returns>
Task<ClaimsPrincipal> CreateClaimsPrincipal(IUser user);

Task<LoginSettings> GetLoginSettingsAsync();
}
}

0 comments on commit 24c496d

Please sign in to comment.