diff --git a/src/Umbraco.Core/EmbeddedResources/Snippets/RegisterMember.cshtml b/src/Umbraco.Core/EmbeddedResources/Snippets/RegisterMember.cshtml
index ca45ff5746..f3b9e31254 100644
--- a/src/Umbraco.Core/EmbeddedResources/Snippets/RegisterMember.cshtml
+++ b/src/Umbraco.Core/EmbeddedResources/Snippets/RegisterMember.cshtml
@@ -18,6 +18,9 @@
// Set to true if you want the member editable properties shown.
// It will only displays properties marked as "Member can edit" on the "Info" tab of the Member Type.
.WithCustomProperties(false)
+ // By default the member will be logged in automatically after registration.
+ // Set this to false if the member should not be logged in automatically.
+ .WithAutomaticLogIn(true)
.Build();
var success = TempData["FormSuccess"] != null;
@@ -39,7 +42,8 @@ else
new {
MemberTypeAlias = registerModel.MemberTypeAlias,
UsernameIsEmail = registerModel.UsernameIsEmail,
- RedirectUrl = registerModel.RedirectUrl
+ RedirectUrl = registerModel.RedirectUrl,
+ AutomaticLogIn = registerModel.AutomaticLogIn
}))
{
Create a new account.
diff --git a/src/Umbraco.Web.Website/Controllers/UmbRegisterController.cs b/src/Umbraco.Web.Website/Controllers/UmbRegisterController.cs
index 9261b356f8..493dd624d1 100644
--- a/src/Umbraco.Web.Website/Controllers/UmbRegisterController.cs
+++ b/src/Umbraco.Web.Website/Controllers/UmbRegisterController.cs
@@ -95,6 +95,12 @@ public class UmbRegisterController : SurfaceController
{
model.UsernameIsEmail = usernameIsEmail.ToString() == "True";
}
+
+ if (RouteData.Values.TryGetValue(nameof(RegisterModel.AutomaticLogIn), out var automaticLogin) &&
+ automaticLogin != null)
+ {
+ model.AutomaticLogIn = automaticLogin.ToString() == "True";
+ }
}
private void AddErrors(IdentityResult result)
@@ -109,9 +115,8 @@ public class UmbRegisterController : SurfaceController
/// Registers a new member.
///
/// Register member model.
- /// Flag for whether to log the member in upon successful registration.
/// Result of registration operation.
- private async Task RegisterMemberAsync(RegisterModel model, bool logMemberIn = true)
+ private async Task RegisterMemberAsync(RegisterModel model)
{
using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true);
@@ -149,7 +154,7 @@ public class UmbRegisterController : SurfaceController
_memberService.Save(member);
- if (logMemberIn)
+ if (model.AutomaticLogIn)
{
await _memberSignInManager.SignInAsync(identityUser, false);
}
diff --git a/src/Umbraco.Web.Website/Models/RegisterModel.cs b/src/Umbraco.Web.Website/Models/RegisterModel.cs
index 3717ef3e7d..3e23d4d002 100644
--- a/src/Umbraco.Web.Website/Models/RegisterModel.cs
+++ b/src/Umbraco.Web.Website/Models/RegisterModel.cs
@@ -13,6 +13,7 @@ public class RegisterModel : PostRedirectModel
MemberTypeAlias = Constants.Conventions.MemberTypes.DefaultAlias;
UsernameIsEmail = true;
MemberProperties = new List();
+ AutomaticLogIn = true;
}
[Required]
@@ -59,4 +60,9 @@ public class RegisterModel : PostRedirectModel
/// Flag to determine if the username should be the email address, if true then the Username property is ignored
///
public bool UsernameIsEmail { get; set; }
+
+ ///
+ /// Flag to determine if the member should be logged in automatically after successful registration
+ ///
+ public bool AutomaticLogIn { get; set; }
}
diff --git a/src/Umbraco.Web.Website/Models/RegisterModelBuilder.cs b/src/Umbraco.Web.Website/Models/RegisterModelBuilder.cs
index b3736e63e8..0b3e73fe73 100644
--- a/src/Umbraco.Web.Website/Models/RegisterModelBuilder.cs
+++ b/src/Umbraco.Web.Website/Models/RegisterModelBuilder.cs
@@ -14,6 +14,7 @@ public class RegisterModelBuilder : MemberModelBuilderBase
private string? _memberTypeAlias;
private string? _redirectUrl;
private bool _usernameIsEmail;
+ private bool _automaticLogIn = true;
public RegisterModelBuilder(IMemberTypeService memberTypeService, IShortStringHelper shortStringHelper)
: base(memberTypeService, shortStringHelper)
@@ -44,6 +45,12 @@ public class RegisterModelBuilder : MemberModelBuilderBase
return this;
}
+ public RegisterModelBuilder WithAutomaticLogIn(bool automaticLogIn = true)
+ {
+ _automaticLogIn = automaticLogIn;
+ return this;
+ }
+
public RegisterModel Build()
{
var providedOrDefaultMemberTypeAlias = _memberTypeAlias ?? Constants.Conventions.MemberTypes.DefaultAlias;
@@ -62,6 +69,7 @@ public class RegisterModelBuilder : MemberModelBuilderBase
MemberProperties = _lookupProperties
? GetMemberPropertiesViewModel(memberType)
: Enumerable.Empty().ToList(),
+ AutomaticLogIn = _automaticLogIn
};
return model;
}