private BTTUserActivity GetActivityForUser(BTTUser user) { if (user == null) { return(null); } BTTUserActivity BTTUserActivity = (BTTUserActivity)HttpContext.Current.Cache["activity" + user.UserName]; if (BTTUserActivity == null) { SimpleQuery <BTTUserActivity> q = new SimpleQuery <BTTUserActivity>(@"from BTTUserActivity ua where ua.AUser.GUID = ?", user.GUID); BTTUserActivity[] BTTUserActivities = q.Execute(); if (BTTUserActivities.Length > 0) { BTTUserActivity = BTTUserActivities[0]; } else { BTTUserActivity activity = new BTTUserActivity(); activity.CreatedDate = DateTime.UtcNow; activity.AUser = user; SaveUserActivity(activity); BTTUserActivity = activity; } HttpContext.Current.Cache.Insert("activity" + user.UserName, BTTUserActivity, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(60)); } return(BTTUserActivity); }
private static void SaveUserActivity(BTTUserActivity activity) { activity.ModifiedDate = DateTime.UtcNow; activity.LastActivityDate = DateTime.UtcNow; activity.ModifiedBy = new Guid(ConfigurationManager.AppSettings["adminGuid"]); ActiveRecordMediator <BTTUserActivity> .Save(activity); }
public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer) { try { // Get the user from the store BTTUser user = GetUser(username); if (ValidateUserInternal(user, password)) { user.PasswordQuestion = newPasswordQuestion; user.PasswordAnswer = newPasswordAnswer; SaveUser(user); BTTUserActivity uact = GetActivityForUser(user); uact.LastPasswordChangeDate = DateTime.UtcNow; uact.LastLoginDate = DateTime.UtcNow; uact.LastActivityDate = DateTime.UtcNow; uact.FailedLogins = 0; SaveUserActivity(uact); return(true); } return(false); } catch { throw; } }
public override bool ValidateUser(string username, string password) { try { BTTUser user = GetUser(username); if (user == null) { return(false); } if (ValidateUserInternal(user, password)) { BTTUserActivity uact = GetActivityForUser(user); uact.LastLoginDate = DateTime.UtcNow; uact.LastActivityDate = DateTime.UtcNow; uact.FailedLogins = 0; SaveUserActivity(uact); return(true); } else { return(false); } } catch { throw; } }
public override MembershipUser GetUser(object providerUserKey, bool userIsOnline) { try { BTTUser user = ActiveRecordMediator <BTTUser> .FindByPrimaryKey(providerUserKey); if (user != null) { if (userIsOnline) { BTTUserActivity uact = GetActivityForUser(user); SaveUserActivity(uact); } return(CreateMembershipFromInternalUser(user)); } else { return(null); } } catch { throw; } }
public override bool UnlockUser(string userName) { BTTUser user = GetUser(userName); BTTUserActivity uact = GetActivityForUser(user); uact.IsLockedOut = false; uact.FailedLogins = 0; return(true); }
public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) { try { // Validate the username and email if (!ValidateUsername(username, email, Guid.Empty)) { status = MembershipCreateStatus.InvalidUserName; return(null); } // Raise the event before validating the password base.OnValidatingPassword( new ValidatePasswordEventArgs( username, password, true)); // Validate the password if (!ValidatePassword(password)) { status = MembershipCreateStatus.InvalidPassword; return(null); } // Everything is valid, create the user var user = new BTTUser(); user.UserName = username; user.PasswordSalt = string.Empty; user.Password = TransformPassword(password, ref user.PasswordSalt); user.Email = email; user.PasswordQuestion = passwordQuestion; user.PasswordAnswer = passwordAnswer; user.CreatedDate = DateTime.UtcNow; // Add the user to the store SaveUser(user); BTTUserActivity userActivity = GetActivityForUser(user); userActivity.FailedLogins = 0; userActivity.IsLockedOut = false; userActivity.LastActivityDate = DateTime.UtcNow; userActivity.LastPasswordChangeDate = DateTime.UtcNow; SaveUserActivity(userActivity); status = MembershipCreateStatus.Success; return(CreateMembershipFromInternalUser(user)); } catch { throw; } }
private MembershipUser CreateMembershipFromInternalUser(BTTUser user) { BTTUserActivity uact = GetActivityForUser(user); var muser = new MembershipUser(base.Name, user.UserName, user.GUID, user.Email, user.PasswordQuestion, string.Empty, true, uact.IsLockedOut, user.CreatedDate.Value, uact.LastLoginDate, uact.LastActivityDate, uact.LastPasswordChangeDate, DateTime.MaxValue); return(muser); }
public override bool ChangePassword(string username, string oldPassword, string newPassword) { try { // Get the user from the store BTTUser user = GetUser(username); if (user == null) { throw new Exception("User does not exist!"); } if (ValidateUserInternal(user, oldPassword)) { // Raise the event before validating the password base.OnValidatingPassword( new ValidatePasswordEventArgs( username, newPassword, false)); if (!ValidatePassword(newPassword)) { throw new ArgumentException("Password doesn't meet password strength requirements!"); } user.PasswordSalt = string.Empty; user.Password = TransformPassword(newPassword, ref user.PasswordSalt); SaveUser(user); BTTUserActivity uact = GetActivityForUser(user); uact.LastPasswordChangeDate = DateTime.UtcNow; uact.LastLoginDate = DateTime.UtcNow; uact.LastActivityDate = DateTime.UtcNow; uact.FailedLogins = 0; SaveUserActivity(uact); return(true); } return(false); } catch { throw; } }
private bool ValidateUserInternal(BTTUser user, string password) { if (user != null) { BTTUserActivity uact = GetActivityForUser(user); if (uact.FailedLogins > _MaxInvalidPasswordAttempts || uact.IsLockedOut) { return(false); } string passwordValidate = TransformPassword(password, ref user.PasswordSalt); if (string.Compare(passwordValidate, user.Password) == 0) { return(true); } else { uact.FailedLogins += 1; SaveUserActivity(uact); } } return(false); }
public override MembershipUser GetUser(string username, bool userIsOnline) { try { BTTUser user = GetUser(username); if (user != null) { if (userIsOnline) { BTTUserActivity uact = GetActivityForUser(user); SaveUserActivity(uact); } return(CreateMembershipFromInternalUser(user)); } else { return(null); } } catch { throw; } }