// 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
{
DateTime lastActivityDate;
DateTime lastPasswordChangedDate;
DateTime lastLockoutDate;
-
+
protected MembershipUser ()
{
}
this.comment = comment;
this.isApproved = isApproved;
this.isLockedOut = isLockedOut;
- this.creationDate = creationDate;
- this.lastLoginDate = lastLoginDate;
- this.lastActivityDate = lastActivityDate;
- this.lastPasswordChangedDate = lastPasswordChangedDate;
- this.lastLockoutDate = lastLockoutDate;
+ this.creationDate = creationDate.ToUniversalTime ();
+ this.lastLoginDate = lastLoginDate.ToUniversalTime ();
+ this.lastActivityDate = lastActivityDate.ToUniversalTime ();
+ this.lastPasswordChangedDate = lastPasswordChangedDate.ToUniversalTime ();
+ this.lastLockoutDate = lastLockoutDate.ToUniversalTime ();
}
+ void UpdateSelf (MembershipUser fromUser)
+ {
+ try { Comment = fromUser.Comment; } catch (NotSupportedException) {}
+ try { creationDate = fromUser.CreationDate; } catch (NotSupportedException) {}
+ try { Email = fromUser.Email; } catch (NotSupportedException) {}
+ try { IsApproved = fromUser.IsApproved; } catch (NotSupportedException) {}
+ try { isLockedOut = fromUser.IsLockedOut; } catch (NotSupportedException) {}
+ try { LastActivityDate = fromUser.LastActivityDate; } catch (NotSupportedException) {}
+ try { lastLockoutDate = fromUser.LastLockoutDate; } catch (NotSupportedException) {}
+ try { LastLoginDate = fromUser.LastLoginDate; } catch (NotSupportedException) {}
+ try { lastPasswordChangedDate = fromUser.LastPasswordChangedDate; } catch (NotSupportedException) {}
+ try { passwordQuestion = fromUser.PasswordQuestion; } catch (NotSupportedException) {}
+ try { providerUserKey = fromUser.ProviderUserKey; } catch (NotSupportedException) {}
+ }
+
+ internal void UpdateUser ()
+ {
+ MembershipUser newUser = Provider.GetUser (name, false);
+ UpdateSelf (newUser);
+ }
+
public virtual bool ChangePassword (string oldPassword, string newPassword)
{
bool success = Provider.ChangePassword (UserName, oldPassword, newPassword);
- if (success)
- lastPasswordChangedDate = DateTime.Now;
+
+ UpdateUser ();
return success;
}
public virtual bool ChangePasswordQuestionAndAnswer (string password, string newPasswordQuestion, string newPasswordAnswer)
{
bool success = Provider.ChangePasswordQuestionAndAnswer (UserName, password, newPasswordQuestion, newPasswordAnswer);
- if (success)
- passwordQuestion = newPasswordQuestion;
+
+ UpdateUser ();
return success;
}
public virtual string ResetPassword (string answer)
{
string newPass = Provider.ResetPassword (UserName, answer);
- if (newPass != null)
- lastPasswordChangedDate = DateTime.Now;
+
+ UpdateUser ();
return newPass;
}
}
public virtual DateTime CreationDate {
- get { return creationDate; }
+ get { return creationDate.ToLocalTime (); }
}
public virtual string Email {
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);
}
}
public virtual DateTime LastActivityDate {
- get { return lastActivityDate; }
- set { lastActivityDate = value; }
+ get { return lastActivityDate.ToLocalTime (); }
+ set { lastActivityDate = value.ToUniversalTime (); }
}
public virtual DateTime LastLoginDate {
- get { return lastLoginDate; }
- set { lastLoginDate = value; }
+ get { return lastLoginDate.ToLocalTime (); }
+ set { lastLoginDate = value.ToUniversalTime (); }
}
public virtual DateTime LastPasswordChangedDate {
- get { return lastPasswordChangedDate; }
+ get { return lastPasswordChangedDate.ToLocalTime (); }
}
public virtual DateTime LastLockoutDate {
- get { return lastLockoutDate; }
+ get { return lastLockoutDate.ToLocalTime (); }
}
public virtual string PasswordQuestion {
public virtual bool UnlockUser ()
{
- if (Provider.UnlockUser (UserName)) {
- isLockedOut = false;
- return true;
- }
- return false;
+ bool retval = Provider.UnlockUser (UserName);
+
+ UpdateUser ();
+
+ return retval;
}
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
+