using Microsoft.SharePoint; using Microsoft.SharePoint.Administration; using SPSolutions.SharePoint.Resources; using System; using System.Collections.Specialized; using System.Configuration; using System.Threading; using System.Web.Security; namespace SPSolutions.SharePoint.Security { public class SPMembership { private SPContext m_context; private SPWebApplication m_webApplication; private SPUrlZone? m_urlZone; private MembershipProvider m_membershipProvider; private static NameValueCollection m_membershipProviderWildcards; private static object m_wildCardLock = new object(); public SPContext Context { get { if (this.m_context != null) { return this.m_context; } return SPContext.Current; } set { this.m_context = value; } } public SPUrlZone Zone { get { if (this.m_urlZone.HasValue) { return this.m_urlZone.Value; } if (this.Context != null) { return this.Context.Site.Zone; } return 0; } set { this.m_urlZone = new SPUrlZone?(value); } } public SPWebApplication WebApplication { get { if (this.m_webApplication == null && this.Context != null) { return this.Context.Site.WebApplication; } return this.m_webApplication; } set { this.m_webApplication = value; } } public MembershipProvider MembershipProvider { get { if (this.m_membershipProvider == null) { this.m_membershipProvider = SPMembership.GetMembershipProvider(this.WebApplication, this.Zone); } return this.m_membershipProvider; } } public string MembershipProviderName { get { return SPMembership.GetMembershipProviderName(this.WebApplication, this.Zone); } } public static NameValueCollection MembershipProviderWildcards { get { if (SPMembership.m_membershipProviderWildcards == null) { object wildCardLock; Monitor.Enter(wildCardLock = SPMembership.m_wildCardLock); try { if (SPMembership.m_membershipProviderWildcards == null) { SPMembership.m_membershipProviderWildcards = (NameValueCollection)ConfigurationManager.GetSection("SharePoint/PeoplePickerWildcards"); } } finally { Monitor.Exit(wildCardLock); } } return SPMembership.m_membershipProviderWildcards; } } public static MembershipProvider GetMembershipProvider(SPWebApplication webApp, SPUrlZone zone) { return Membership.Providers[SPMembership.GetMembershipProviderName(webApp, zone)]; } public static string GetMembershipProviderName(SPWebApplication webApp, SPUrlZone zone) { SPIisSettings iisSettingsWithFallback = webApp.GetIisSettingsWithFallback(zone); return iisSettingsWithFallback.MembershipProvider; } public static string GetStatusMessage(MembershipCreateStatus status) { if (status == MembershipCreateStatus.DuplicateEmail) { return StringsRes.MembershipCreateStatus_DuplicateEmail; } if (status == MembershipCreateStatus.DuplicateProviderUserKey) { return StringsRes.MembershipCreateStatus_DuplicateProviderUserKey; } if (status == MembershipCreateStatus.DuplicateUserName) { return StringsRes.MembershipCreateStatus_DuplicateUserName; } if (status == MembershipCreateStatus.InvalidAnswer) { return StringsRes.MembershipCreateStatus_InvalidAnswer; } if (status == MembershipCreateStatus.InvalidEmail) { return StringsRes.MembershipCreateStatus_InvalidEmail; } if (status == MembershipCreateStatus.InvalidPassword) { return StringsRes.MembershipCreateStatus_InvalidPassword; } if (status == MembershipCreateStatus.InvalidProviderUserKey) { return StringsRes.MembershipCreateStatus_InvalidProviderUserKey; } if (status == MembershipCreateStatus.InvalidQuestion) { return StringsRes.MembershipCreateStatus_InvalidQuestion; } if (status == MembershipCreateStatus.InvalidUserName) { return StringsRes.MembershipCreateStatus_InvalidUserName; } if (status == MembershipCreateStatus.ProviderError) { return StringsRes.MembershipCreateStatus_ProviderError; } if (status == MembershipCreateStatus.Success) { return StringsRes.MembershipCreateStatus_Success; } if (status == MembershipCreateStatus.UserRejected) { return StringsRes.MembershipCreateStatus_UserRejected; } return StringsRes.MembershipCreateStatus_Unknown; } public static string GetMembershipProviderWildcard(string providerName) { if (string.IsNullOrEmpty(providerName)) { return string.Empty; } NameValueCollection membershipProviderWildcards = SPMembership.MembershipProviderWildcards; if (membershipProviderWildcards == null | membershipProviderWildcards.Count == 0) { return string.Empty; } string text = membershipProviderWildcards[providerName]; if (text == null) { return string.Empty; } return text; } } }