190 lines
4.9 KiB
C#
190 lines
4.9 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|