Przeglądaj źródła

2005-07-01 Lluis Sanchez Gual <[email protected]>

	* Membership.cs: Read provider info from the config file.


svn path=/trunk/mcs/; revision=46850
Lluis Sanchez 20 lat temu
rodzic
commit
43778238c5

+ 4 - 0
mcs/class/System.Web/System.Web.Security/ChangeLog

@@ -1,3 +1,7 @@
+2005-07-01  Lluis Sanchez Gual <[email protected]>
+
+	* Membership.cs: Read provider info from the config file.
+
 2005-06-10 Lluis Sanchez Gual <[email protected]>
 
 	* MembershipUserCollection.cs:

+ 40 - 11
mcs/class/System.Web/System.Web.Security/Membership.cs

@@ -34,13 +34,46 @@
 using System.Collections;
 using System.Collections.Specialized;
 using System.Text;
+using System.Web.Configuration;
+using System.Configuration;
 
 namespace System.Web.Security
 {
-	public abstract class Membership
+	public static class Membership
 	{
-		private Membership ()
+		static MembershipProviderCollection providers;
+		static MembershipProvider provider;
+		static int onlineTimeWindow;
+		
+		static Membership ()
 		{
+			System.Configuration.Configuration conf = WebConfigurationManager.OpenWebConfiguration ("/");
+			MembershipSection section = (MembershipSection) conf.GetSection ("system.web/membership");
+			providers = new MembershipProviderCollection ();
+			
+			foreach (ProviderSettings prov in section.Providers) {
+				Type t = Type.GetType (prov.Type);
+				if (t == null)
+					throw new ConfigurationException ("Cannot find type: " + prov.Type);
+				if (!typeof(MembershipProvider).IsAssignableFrom (t))
+					throw new ConfigurationException ("The provided type is not a MembershipProvider subclass: " + prov.Type);
+				
+				MembershipProvider pr = (MembershipProvider) Activator.CreateInstance (t);
+				pr.Initialize (prov.Name, prov.Parameters);
+				
+				if (provider == null || prov.Name == section.DefaultProvider)
+					provider = pr;
+
+				providers.Add (pr);
+			}
+			
+			if (providers.Count == 0) {
+				provider = new SqlMembershipProvider ();
+				NameValueCollection attributes = new NameValueCollection ();
+				provider.Initialize ("AspNetSqlMembershipProvider", attributes);
+				providers.Add (provider);
+			}
+			onlineTimeWindow = (int) section.UserIsOnlineTimeWindow.TotalMinutes;
 		}
 		
 		public static MembershipUser CreateUser (string username, string password)
@@ -167,8 +200,6 @@ namespace System.Web.Security
 			return Provider.FindUsersByName (nameToMatch, pageIndex, pageSize, out totalRecords);
 		}
 
-		
-		
 		public static string ApplicationName {
 			get { return Provider.ApplicationName; }
 			set { Provider.ApplicationName = value; }
@@ -206,22 +237,20 @@ namespace System.Web.Security
 			get { return Provider.PasswordStrengthRegularExpression; }
 		}
 				
-		[MonoTODO]
 		public static MembershipProvider Provider {
-			get { throw new NotImplementedException (); }
+			get { return provider; }
 		}
 		
-		[MonoTODO]
 		public static MembershipProviderCollection Providers {
-			get { throw new NotImplementedException (); }
+			get { return providers; }
 		}
 		
-		[MonoTODO]
 		public static int UserIsOnlineTimeWindow {
-			get { throw new NotImplementedException (); }
+			get { return onlineTimeWindow; }
 		}
 		
-		public event MembershipValidatePasswordEventHandler ValidatingPassword {
+		[MonoTODO ("Fire it")]
+		public static event MembershipValidatePasswordEventHandler ValidatingPassword {
 			add { Provider.ValidatingPassword += value; }
 			remove { Provider.ValidatingPassword -= value; }
 		}