BrockAllen.MembershipReboot
BrockAllen.MembershipReboot copied to clipboard
Support for Account approval proccess
Hi Brok, I've been trying to add an account approval process. I think MR needs an enhancement that I'm about to add if OK with you.
Problem
There's no way to distinguish between when an account is locked or that the account is unapproved.
ie UserAccount.IsLoginAllowed
is being overloaded with multiple meanings.
Scenario
Just to be clear here's the use case:
- User registers for a new account
- Admin user reviews the new account and decides to either approve or reject new account
Solution
- Add an
UserAccount.IsAccountApproved
flag - Add an
MembershipRebootConfiguration.RequireAccountApproval
flag- defaults to false for backwards compatibility
- Deny authentication (and sign in) when
!IsAccountApproved && RequireAccountApproval
- Add
ApproveAccount
andRejectAccount
methods toUserAccountService
- sets
IsAccountApproved
- raises corresponding events
- sets
MembershipRebootConfiguration.AllowLoginAfterAccountCreation
is probably the closest thing in MR that currently supports an approval process.
RequireAccountApproval
that I propose above would be used instead to prevent the login until the account is approved.
AllowLoginAfterAccountCreation
would need to obsoleted to allow a period of backward compatibility.
I would also be tempted to rename IsLoginAllowed
-> IsLocked
.
I won't of course as it would be a big breaking change. Instead I'll add a summary xml comment to the property:
/// <summary>
/// Returns true when the account is locked
/// </summary>
/// <remarks>
/// An locked account will not be able to sign in
/// </remarks>
public virtual bool IsLoginAllowed { get; protected internal set; }
I've submitted the PR: https://github.com/brockallen/BrockAllen.MembershipReboot/pull/634