Re-introduce the option to conditionally login members after registration (#13659)

* Re-introduce the option to conditionally login members after registration

* Make absolutely sure the default is true for automatic member login after registration
This commit is contained in:
Kenn Jacobsen
2023-01-12 10:56:14 +01:00
committed by GitHub
parent 9d522ea9a0
commit f6113db0fc
4 changed files with 27 additions and 4 deletions

View File

@@ -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
}))
{
<h2>Create a new account.</h2>

View File

@@ -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.
/// </summary>
/// <param name="model">Register member model.</param>
/// <param name="logMemberIn">Flag for whether to log the member in upon successful registration.</param>
/// <returns>Result of registration operation.</returns>
private async Task<IdentityResult> RegisterMemberAsync(RegisterModel model, bool logMemberIn = true)
private async Task<IdentityResult> 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);
}

View File

@@ -13,6 +13,7 @@ public class RegisterModel : PostRedirectModel
MemberTypeAlias = Constants.Conventions.MemberTypes.DefaultAlias;
UsernameIsEmail = true;
MemberProperties = new List<MemberPropertyModel>();
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
/// </summary>
public bool UsernameIsEmail { get; set; }
/// <summary>
/// Flag to determine if the member should be logged in automatically after successful registration
/// </summary>
public bool AutomaticLogIn { get; set; }
}

View File

@@ -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<MemberPropertyModel>().ToList(),
AutomaticLogIn = _automaticLogIn
};
return model;
}