I'm trying to apply diferent password requirements to diferent roles in a sitecore instance. Let's say I have the following roles and requirements:
- Role1 : 10 characters
- Role2 : 15 characters and a special symbol
My inicial idea was to create a class library based on Sitecore.Security.SitecoreMembershipProvider and overrides the ChangePassword method
public class PasswordValidatorProvider : Sitecore.Security.SitecoreMembershipProvider
{
public override bool ChangePassword(string username, string oldPassword, string newPassword)
{
System.Web.Security.MembershipUser membershipUser = GetUser(username,false);
Sitecore.Diagnostics.Log.Warn("Debug: no membership",this);
if (membershipUser != null) { return false; }
string[] roles = new System.Web.Security.SqlRoleProvider().GetRolesForUser(username);
foreach (string role in roles) {
Sitecore.Diagnostics.Log.Warn("Debug: Role found:" + role,this);
}
return base.ChangePassword(username, oldPassword, newPassword);
}
}
Sitecore.config
<switchingProviders>
<membership>
<provider providerName="CustomProvider" storeFullNames="true" wildcard="%" domains="*" /> </membership>
Web.config
<membership defaultProvider="CustomProvider" hashAlgorithmType="SHA1">
<providers>
<clear />
<add name="CustomProvider" type="CustomProvider.Feature.CustomizedPassword.PasswordValidatorProvider, Custom.Feature.CustomizedPassword" realProviderName="sitecore" mappings="switchingProviders/membership"/>
<add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="sql" providerWildcard="%" raiseEvents="true" />
<add name="sql" type="System.Web.Security.SqlMembershipProvider" connectionStringName="security" applicationName="sitecore" minRequiredPasswordLength="1" minRequiredNonalphanumericCharacters="0" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" />
<add name="disabled" type="Sitecore.Security.DisabledMembersipProvider, Sitecore.Kernel" applicationName="sitecore" />
<add name="switcher" type="Sitecore.Security.SwitchingMembershipProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/membership" />
</providers>
</membership>
Expected the debug message appearing in logs and/or visual studio to debug when attached and when trying to change the password of a user