From 391c1548bce2bf9e7b00b627cf28a8fefd20fb0d Mon Sep 17 00:00:00 2001 From: jersiovic Date: Sun, 17 May 2020 11:52:04 +0200 Subject: [PATCH] Added recipe steps for user and email settings --- .../Recipes/SmtpSettingsStep.cs | 48 +++++++++++++++++++ .../Recipes/SmtpSettingsStepModel.cs | 19 ++++++++ .../Recipes/LoginSettingsStep.cs | 42 ++++++++++++++++ .../Recipes/LoginSettingsStepModel.cs | 15 ++++++ .../Recipes/ResetPasswordSettingsStep.cs | 39 +++++++++++++++ .../Recipes/ResetPasswordSettingsStepModel.cs | 8 ++++ .../ResetPassword/ForgotPassword.cshtml | 28 +++++++++++ .../ForgotPasswordConfirmation.cshtml | 6 +++ .../ResetPassword/ResetPassword.cshtml | 40 ++++++++++++++++ .../ResetPasswordConfirmation.cshtml | 9 ++++ 10 files changed, 254 insertions(+) create mode 100644 src/OrchardCore.Modules/OrchardCore.Email/Recipes/SmtpSettingsStep.cs create mode 100644 src/OrchardCore.Modules/OrchardCore.Email/Recipes/SmtpSettingsStepModel.cs create mode 100644 src/OrchardCore.Modules/OrchardCore.Users/Recipes/LoginSettingsStep.cs create mode 100644 src/OrchardCore.Modules/OrchardCore.Users/Recipes/LoginSettingsStepModel.cs create mode 100644 src/OrchardCore.Modules/OrchardCore.Users/Recipes/ResetPasswordSettingsStep.cs create mode 100644 src/OrchardCore.Modules/OrchardCore.Users/Recipes/ResetPasswordSettingsStepModel.cs create mode 100644 src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ForgotPassword.cshtml create mode 100644 src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ForgotPasswordConfirmation.cshtml create mode 100644 src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ResetPassword.cshtml create mode 100644 src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ResetPasswordConfirmation.cshtml diff --git a/src/OrchardCore.Modules/OrchardCore.Email/Recipes/SmtpSettingsStep.cs b/src/OrchardCore.Modules/OrchardCore.Email/Recipes/SmtpSettingsStep.cs new file mode 100644 index 000000000000..1739dc5605b3 --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Email/Recipes/SmtpSettingsStep.cs @@ -0,0 +1,48 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using OrchardCore.Email; +using OrchardCore.Entities; +using OrchardCore.Recipes.Models; +using OrchardCore.Recipes.Services; +using OrchardCore.Settings; + +namespace OrchardCore.Email.Recipes +{ + /// + /// This recipe step sets general login settings. + /// + public class SmtpSettingsStep : IRecipeStepHandler + { + private readonly ISiteService _siteService; + + public SmtpSettingsStep(ISiteService siteService) + => _siteService = siteService; + + public async Task ExecuteAsync(RecipeExecutionContext context) + { + if (!string.Equals(context.Name, nameof(SmtpSettings), StringComparison.OrdinalIgnoreCase)) + { + return; + } + + var model = context.Step.ToObject(); + + var site = await _siteService.LoadSiteSettingsAsync(); + var settings = site.As(); + settings.DefaultSender = model.DefaultSender; + settings.DeliveryMethod = model.DeliveryMethod; + settings.PickupDirectoryLocation = model.PickupDirectoryLocation; + settings.Host = model.Host; + settings.Port = model.Port; + settings.AutoSelectEncryption = model.AutoSelectEncryption; + settings.RequireCredentials = model.RequireCredentials; + settings.UseDefaultCredentials = model.UseDefaultCredentials; + settings.EncryptionMethod = model.EncryptionMethod; + settings.UserName = model.UserName; + settings.Password = model.Password; + site.Put(settings); + await _siteService.UpdateSiteSettingsAsync(site); + } + } +} diff --git a/src/OrchardCore.Modules/OrchardCore.Email/Recipes/SmtpSettingsStepModel.cs b/src/OrchardCore.Modules/OrchardCore.Email/Recipes/SmtpSettingsStepModel.cs new file mode 100644 index 000000000000..045488ed03d5 --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Email/Recipes/SmtpSettingsStepModel.cs @@ -0,0 +1,19 @@ +using OrchardCore.Email; + +namespace OrchardCore.Email +{ + public class SmtpSettingsStepModel + { + public string DefaultSender { get; set; } + public SmtpDeliveryMethod DeliveryMethod { get; set; } + public string PickupDirectoryLocation { get; set; } + public string Host { get; set; } + public int Port { get; set; } = 25; + public bool AutoSelectEncryption { get; set; } + public bool RequireCredentials { get; set; } + public bool UseDefaultCredentials { get; set; } + public SmtpEncryptionMethod EncryptionMethod { get; set; } + public string UserName { get; set; } + public string Password { get; set; } + } +} diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Recipes/LoginSettingsStep.cs b/src/OrchardCore.Modules/OrchardCore.Users/Recipes/LoginSettingsStep.cs new file mode 100644 index 000000000000..175e55c15cb6 --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Users/Recipes/LoginSettingsStep.cs @@ -0,0 +1,42 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using OrchardCore.Entities; +using OrchardCore.Recipes.Models; +using OrchardCore.Recipes.Services; +using OrchardCore.Settings; +using OrchardCore.Users.Models; + +namespace OrchardCore.Users.Recipes +{ + /// + /// This recipe step sets general login settings. + /// + public class LoginSettingsStep : IRecipeStepHandler + { + private readonly ISiteService _siteService; + + public LoginSettingsStep(ISiteService siteService) + => _siteService = siteService; + + public async Task ExecuteAsync(RecipeExecutionContext context) + { + if (!string.Equals(context.Name, nameof(LoginSettings), StringComparison.OrdinalIgnoreCase)) + { + return; + } + + var model = context.Step.ToObject(); + + var site = await _siteService.LoadSiteSettingsAsync(); + var settings = site.As(); + settings.UseSiteTheme = model.UseSiteTheme; + settings.UseExternalProviderIfOnlyOneDefined = model.UseExternalProviderIfOnlyOneDefined; + settings.DisableLocalLogin = model.DisableLocalLogin; + settings.UseScriptToSyncRoles = model.UseScriptToSyncRoles; + settings.SyncRolesScript = model.SyncRolesScript; + site.Put(settings); + await _siteService.UpdateSiteSettingsAsync(site); + } + } +} diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Recipes/LoginSettingsStepModel.cs b/src/OrchardCore.Modules/OrchardCore.Users/Recipes/LoginSettingsStepModel.cs new file mode 100644 index 000000000000..45479276658b --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Users/Recipes/LoginSettingsStepModel.cs @@ -0,0 +1,15 @@ +namespace OrchardCore.Users +{ + public class LoginSettingsStepModel + { + public bool UseSiteTheme { get; set; } + + public bool UseExternalProviderIfOnlyOneDefined { get; set; } + + public bool DisableLocalLogin { get; set; } + + public bool UseScriptToSyncRoles { get; set; } + + public string SyncRolesScript { get; set; } + } +} diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Recipes/ResetPasswordSettingsStep.cs b/src/OrchardCore.Modules/OrchardCore.Users/Recipes/ResetPasswordSettingsStep.cs new file mode 100644 index 000000000000..e6be21fb363a --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Users/Recipes/ResetPasswordSettingsStep.cs @@ -0,0 +1,39 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using OrchardCore.Entities; +using OrchardCore.Recipes.Models; +using OrchardCore.Recipes.Services; +using OrchardCore.Settings; +using OrchardCore.Users.Models; + +namespace OrchardCore.Users.Recipes +{ + /// + /// This recipe step sets general reset password settings. + /// + public class ResetPasswordSettingsStep : IRecipeStepHandler + { + private readonly ISiteService _siteService; + + public ResetPasswordSettingsStep(ISiteService siteService) + => _siteService = siteService; + + public async Task ExecuteAsync(RecipeExecutionContext context) + { + if (!string.Equals(context.Name, nameof(ResetPasswordSettings), StringComparison.OrdinalIgnoreCase)) + { + return; + } + + var model = context.Step.ToObject(); + + var site = await _siteService.LoadSiteSettingsAsync(); + var settings = site.As(); + settings.AllowResetPassword = model.AllowResetPassword; + settings.UseSiteTheme = model.UseSiteTheme; + site.Put(settings); + await _siteService.UpdateSiteSettingsAsync(site); + } + } +} diff --git a/src/OrchardCore.Modules/OrchardCore.Users/Recipes/ResetPasswordSettingsStepModel.cs b/src/OrchardCore.Modules/OrchardCore.Users/Recipes/ResetPasswordSettingsStepModel.cs new file mode 100644 index 000000000000..8a90e892101c --- /dev/null +++ b/src/OrchardCore.Modules/OrchardCore.Users/Recipes/ResetPasswordSettingsStepModel.cs @@ -0,0 +1,8 @@ +namespace OrchardCore.Users +{ + public class ResetPasswordSettingsStepModel + { + public bool AllowResetPassword { get; set; } + public bool UseSiteTheme { get; set; } + } +} diff --git a/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ForgotPassword.cshtml b/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ForgotPassword.cshtml new file mode 100644 index 000000000000..40a2ed7507eb --- /dev/null +++ b/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ForgotPassword.cshtml @@ -0,0 +1,28 @@ +@model OrchardCore.Users.ViewModels.ForgotPasswordViewModel + +@{ + ViewLayout = "Layout__Login"; +} + +

@T["Forgot password?"]

+

@T["Please check your email or user name to reset your password."]

+
+
+
+
+
+
+ +
+ +
+
+ @await RenderSectionAsync("AfterForgotPassword", required: false) +
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ForgotPasswordConfirmation.cshtml b/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ForgotPasswordConfirmation.cshtml new file mode 100644 index 000000000000..6a7eb0babd8c --- /dev/null +++ b/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ForgotPasswordConfirmation.cshtml @@ -0,0 +1,6 @@ +@{ + ViewLayout = "Layout__Login"; +} + +

@T["Forgot Password confirmation Melon"]

+

@T["Please check your email to reset your password."]

\ No newline at end of file diff --git a/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ResetPassword.cshtml b/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ResetPassword.cshtml new file mode 100644 index 000000000000..3e4627e8a9b9 --- /dev/null +++ b/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ResetPassword.cshtml @@ -0,0 +1,40 @@ +@model OrchardCore.Users.ViewModels.ResetPasswordViewModel + +@{ + ViewLayout = "Layout__Login"; +} + +
+

@T["Reset password"]

+
+
+
+ +
+ + +
+
+
+ +
+ +
+ +
+
+
+ +
+ + +
+
+ @await RenderSectionAsync("AfterResetPassword", required: false) + +
+
+ +
+
+
\ No newline at end of file diff --git a/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ResetPasswordConfirmation.cshtml b/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ResetPasswordConfirmation.cshtml new file mode 100644 index 000000000000..912cf9dbddc3 --- /dev/null +++ b/src/OrchardCore.Themes/TheTheme/Views/OrchardCore.Users/ResetPassword/ResetPasswordConfirmation.cshtml @@ -0,0 +1,9 @@ +@{ + ViewLayout = "Layout__Login"; +} + +

@T["Reset Password"]

+

+ @T["Your password has been reset. Melon"] + @T["Please "]@T["Click here to log in"] +

\ No newline at end of file