Author: lluis
Date: 2005-07-01 14:33:48 -0400 (Fri, 01 Jul 2005)
New Revision: 46850

Modified:
   trunk/mcs/class/System.Web/System.Web.Security/ChangeLog
   trunk/mcs/class/System.Web/System.Web.Security/Membership.cs
Log:
2005-07-01  Lluis Sanchez Gual <[EMAIL PROTECTED]>

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



Modified: trunk/mcs/class/System.Web/System.Web.Security/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web.Security/ChangeLog    2005-07-01 
18:33:32 UTC (rev 46849)
+++ trunk/mcs/class/System.Web/System.Web.Security/ChangeLog    2005-07-01 
18:33:48 UTC (rev 46850)
@@ -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:

Modified: trunk/mcs/class/System.Web/System.Web.Security/Membership.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web.Security/Membership.cs        
2005-07-01 18:33:32 UTC (rev 46849)
+++ trunk/mcs/class/System.Web/System.Web.Security/Membership.cs        
2005-07-01 18:33:48 UTC (rev 46850)
@@ -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 @@
                        return Provider.FindUsersByName (nameToMatch, 
pageIndex, pageSize, out totalRecords);
                }
 
-               
-               
                public static string ApplicationName {
                        get { return Provider.ApplicationName; }
                        set { Provider.ApplicationName = value; }
@@ -206,22 +237,20 @@
                        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; }
                }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to