Example #1
0
        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);
        }
Example #2
0
 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);
 }
Example #3
0
        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;
            }
        }
Example #4
0
        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;
            }
        }
Example #5
0
        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;
            }
        }
Example #6
0
        public override bool UnlockUser(string userName)
        {
            BTTUser         user = GetUser(userName);
            BTTUserActivity uact = GetActivityForUser(user);

            uact.IsLockedOut  = false;
            uact.FailedLogins = 0;
            return(true);
        }
Example #7
0
        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;
            }
        }
Example #8
0
        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);
        }
Example #9
0
        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;
            }
        }
Example #10
0
        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);
        }
Example #11
0
 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;
     }
 }