Example #1
0
        public override MembershipUser GetUser(string username, bool userIsOnline)
        {
            try
            {
                var user = DataBaseUsers.FirstOrDefault(u => u.Username == username);
                if (user == null)
                {
                    return(null);
                }

                var msUser = ConverDataBaseUserToMemberShipUser(user);
                if (userIsOnline)
                {
                    user.LastActivityDate = DateTime.Now;
                    _dataBase.SaveChanges();
                }

                return(msUser);
            }
            catch (Exception e)
            {
                if (WriteExceptionsToEventLog)
                {
                    WriteToEventLog(e, "GetUser(String, Boolean)");

                    throw new ProviderException(EXCEPTION_MESSAGE);
                }

                throw;
            }
        }
Example #2
0
        public override string GetPassword(string username, string answer)
        {
            if (!EnablePasswordRetrieval)
            {
                throw new ProviderException("Password Retrieval Not Enabled.");
            }

            if (PasswordFormat == MembershipPasswordFormat.Hashed)
            {
                throw new ProviderException("Cannot retrieve Hashed passwords.");
            }

            var user = DataBaseUsers.FirstOrDefault(u => u.Username == username);

            string password;
            string passwordAnswer;

            try
            {
                if (user != null)
                {
                    password       = user.Password;
                    passwordAnswer = user.PasswordAnswer;
                }
                else
                {
                    throw new MembershipPasswordException("The supplied user name is not found.");
                }
            }
            catch (Exception e)
            {
                if (WriteExceptionsToEventLog)
                {
                    WriteToEventLog(e, "GetPassword");

                    throw new ProviderException(EXCEPTION_MESSAGE);
                }

                throw;
            }


            if (RequiresQuestionAndAnswer && !CheckPassword(answer, passwordAnswer))
            {
                UpdateFailureCount(username, "passwordAnswer");

                throw new MembershipPasswordException("Incorrect password answer.");
            }


            if (PasswordFormat == MembershipPasswordFormat.Encrypted)
            {
                password = UnEncodePassword(password);
            }

            return(password);
        }
Example #3
0
        public override bool ValidateUser(string username, string password)
        {
            try
            {
                var isValid = false;
                var user    = DataBaseUsers.FirstOrDefault(u => u.Username == username && !u.IsLockedOut);

                bool   isApproved;
                string dbPassword;

                if (user != null)
                {
                    dbPassword = user.Password;
                    isApproved = user.IsApproved;
                }
                else
                {
                    return(false);
                }

                if (CheckPassword(password, dbPassword))
                {
                    if (isApproved)
                    {
                        isValid            = true;
                        user.LastLoginDate = DateTime.Now;
                        _dataBase.SaveChanges();
                    }
                }
                else
                {
                    UpdateFailureCount(username, "password");
                }

                return(isValid);
            }
            catch (Exception e)
            {
                if (WriteExceptionsToEventLog)
                {
                    WriteToEventLog(e, "ValidateUser");

                    throw new ProviderException(EXCEPTION_MESSAGE);
                }

                throw;
            }
        }
Example #4
0
        public override string GetUserNameByEmail(string email)
        {
            try
            {
                var user = DataBaseUsers.FirstOrDefault(u => u.Email == email);

                return(user == null ? null : user.Username);
            }
            catch (Exception e)
            {
                if (WriteExceptionsToEventLog)
                {
                    WriteToEventLog(e, "GetUserNameByEmail");
                    throw new ProviderException(EXCEPTION_MESSAGE);
                }

                throw;
            }
        }
Example #5
0
        public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPwdQuestion,
                                                             string newPwdAnswer)
        {
            if (!ValidateUser(username, password))
            {
                return(false);
            }

            int rowsAffected;

            try
            {
                var user = DataBaseUsers.FirstOrDefault(u => u.Username == username);
                if (user != default(User))
                {
                    user.PasswordQuestion = newPwdQuestion;
                    user.PasswordAnswer   = newPwdAnswer;
                    rowsAffected          = _dataBase.SaveChanges();
                }
                else
                {
                    rowsAffected = 0;
                }
            }
            catch (Exception e)
            {
                if (WriteExceptionsToEventLog)
                {
                    WriteToEventLog(e, "ChangePasswordQuestionAndAnswer");

                    throw new ProviderException(EXCEPTION_MESSAGE);
                }

                throw;
            }

            return(rowsAffected > 0);
        }
Example #6
0
        public override string ResetPassword(string username, string answer)
        {
            if (!EnablePasswordReset)
            {
                throw new NotSupportedException("Password reset is not enabled.");
            }

            if (answer == null && RequiresQuestionAndAnswer)
            {
                UpdateFailureCount(username, "passwordAnswer");

                throw new ProviderException("Password answer required for password reset.");
            }

            var newPassword = Membership.GeneratePassword(NEW_PASSWORD_LENGTH, MinRequiredNonAlphanumericCharacters);

            var args = new ValidatePasswordEventArgs(username, newPassword, true);

            OnValidatingPassword(args);

            if (args.Cancel)
            {
                if (args.FailureInformation != null)
                {
                    throw args.FailureInformation;
                }

                throw new MembershipPasswordException("Reset password canceled due to password validation failure.");
            }

            try
            {
                var user = DataBaseUsers.FirstOrDefault(u => u.Username == username);

                string passwordAnswer;
                if (user != null)
                {
                    if (user.IsLockedOut)
                    {
                        throw new MembershipPasswordException("The supplied user is locked out.");
                    }

                    passwordAnswer = user.PasswordAnswer;
                }
                else
                {
                    throw new MembershipPasswordException("The supplied user name is not found.");
                }

                if (RequiresQuestionAndAnswer && !CheckPassword(answer, passwordAnswer))
                {
                    UpdateFailureCount(username, "passwordAnswer");

                    throw new MembershipPasswordException("Incorrect password answer.");
                }

                user.Password = EncodePassword(newPassword);
                user.LastPasswordChangedDate = DateTime.Now;

                var rowsAffected = _dataBase.SaveChanges();

                if (rowsAffected > 0)
                {
                    return(newPassword);
                }

                throw new MembershipPasswordException("User not found, or user is locked out. Password not Reset.");
            }
            catch (Exception e)
            {
                if (WriteExceptionsToEventLog)
                {
                    WriteToEventLog(e, "ResetPassword");
                    throw new ProviderException(EXCEPTION_MESSAGE);
                }

                throw;
            }
        }