2010-04-28 Marek Habersack <mhabersack@novell.com>
[mono.git] / mcs / class / System.Web / System.Web.Security / MembershipUser.cs
index 598ecfeab4daf82590aa2c2635e9ecdaf812dd27..b2bae459a52116303d52b0691a7ea04bf1f16b36 100644 (file)
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
 
-#if NET_2_0
 namespace System.Web.Security
 {
+#if NET_4_0
+       [TypeForwardedFrom ("System.Web, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a")]
+#endif
        [Serializable]
        public class MembershipUser
        {
@@ -47,7 +52,7 @@ namespace System.Web.Security
                DateTime lastActivityDate;
                DateTime lastPasswordChangedDate;
                DateTime lastLockoutDate;
-               
+
                protected MembershipUser ()
                {
                }
@@ -157,10 +162,24 @@ namespace System.Web.Security
                public virtual bool IsLockedOut {
                        get { return isLockedOut; }
                }
-               
-               public bool IsOnline {
+
+#if NET_4_0
+               public virtual
+#else
+               public
+#endif
+               bool IsOnline {
                        get {
-                               return LastActivityDate > DateTime.Now - TimeSpan.FromMinutes (Membership.UserIsOnlineTimeWindow);  
+                               int minutes;
+#if NET_4_0
+                               IMembershipHelper helper = MembershipProvider.Helper;
+                               if (helper == null)
+                                       throw new PlatformNotSupportedException ("The method is not available.");
+                               minutes = helper.UserIsOnlineTimeWindow;
+#else
+                               minutes = Membership.UserIsOnlineTimeWindow;
+#endif
+                               return LastActivityDate > DateTime.Now - TimeSpan.FromMinutes (minutes);
                        }
                }
                
@@ -214,12 +233,21 @@ namespace System.Web.Security
                
                MembershipProvider Provider {
                        get {
-                               MembershipProvider p = Membership.Providers [ProviderName];
-                               if (p == null) throw new InvalidOperationException ("Membership provider '" + ProviderName + "' not found.");
+                               MembershipProvider p;                           
+#if NET_4_0
+                               IMembershipHelper helper = MembershipProvider.Helper;
+                               if (helper == null)
+                                       throw new PlatformNotSupportedException ("The method is not available.");
+                               p = helper.Providers [ProviderName];
+#else
+                               p = Membership.Providers [ProviderName];
+#endif
+                               if (p == null)
+                                       throw new InvalidOperationException ("Membership provider '" + ProviderName + "' not found.");
                                return p;
                        }
                }
        }
 }
-#endif
+