Пример #1
0
 private MembershipAccount GetUser(string userName)
 {
     VerifyInitialized();
     using (var session = new MongoSession(_connectionString))
     {
         MembershipAccount user = null;
         if (session.Users.Count() > 0)
         {
             user = session.Users.FirstOrDefault(x => x.UserName == userName);
             //if (user != null)
             //{
             //    throw new MembershipCreateUserException(MembershipCreateStatus.InvalidUserName);
             //}
         }
         return(user);
     }
 }
Пример #2
0
        private static bool SetPassword(MongoSession session, MembershipAccount user, string newPassword)
        {
            string hashedPassword = Crypto.HashPassword(newPassword);

            if (hashedPassword.Length > 128)
            {
                throw new ArgumentException("The membership password is too long. (Maximum length is 128 characters).");
            }

            try
            {
                user.Password            = hashedPassword;
                user.PasswordSalt        = string.Empty;
                user.PasswordChangedDate = DateTime.UtcNow;
                session.Update(user);
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Пример #3
0
        // Inherited from ExtendedMembershipProvider ==> Simple Membership MUST be enabled to use this method
        public override string CreateAccount(string userName, string password, bool requireConfirmationToken)
        {
            VerifyInitialized();

            if (string.IsNullOrEmpty(password))
            {
                throw new MembershipCreateUserException(MembershipCreateStatus.InvalidPassword);
            }

            string hashedPassword = Crypto.HashPassword(password);

            if (hashedPassword.Length > 128)
            {
                throw new MembershipCreateUserException(MembershipCreateStatus.InvalidPassword);
            }

            if (string.IsNullOrEmpty(userName))
            {
                throw new MembershipCreateUserException(MembershipCreateStatus.InvalidUserName);
            }

            // Step 1: Check if the user exists in the Users table
            var usr = GetUser(userName);

            if (usr != null)
            {
                // User found
                throw new MembershipCreateUserException(MembershipCreateStatus.DuplicateUserName);
            }

            using (var session = new MongoSession(_connectionString))
            {
                // Step 2: Check if the user exists in the Membership table: Error if yes.
                var result = session.Users.Count(x => x.UserName == userName);
                if (result > 1)
                {
                    throw new MembershipCreateUserException(MembershipCreateStatus.DuplicateUserName);
                }


                // Step 3: Create user in Membership table
                string token   = null;
                object dbtoken = DBNull.Value;
                if (requireConfirmationToken)
                {
                    token   = GenerateToken();
                    dbtoken = token;
                }
                int defaultNumPasswordFailures = 0;

                try
                {
                    var now = DateTime.UtcNow;
                    usr                     = new MembershipAccount();
                    usr.UserName            = userName;
                    usr.UserId              = Guid.NewGuid();
                    usr.Password            = hashedPassword;
                    usr.PasswordSalt        = string.Empty;
                    usr.IsConfirmed         = !requireConfirmationToken;
                    usr.ConfirmationToken   = dbtoken as string;
                    usr.CreateDate          = now;
                    usr.PasswordChangedDate = now;
                    usr.PasswordFailuresSinceLastSuccess = defaultNumPasswordFailures;

                    session.Update(usr);

                    return(token);
                }
                catch (Exception)
                {
                    throw new MembershipCreateUserException(MembershipCreateStatus.ProviderError);
                }
            }
        }
        private static bool SetPassword(MongoSession session, MembershipAccount user, string newPassword)
        {
            string hashedPassword = Crypto.HashPassword(newPassword);
            if (hashedPassword.Length > 128)
            {
                throw new ArgumentException("The membership password is too long. (Maximum length is 128 characters).");
            }

            try
            {
                user.Password = hashedPassword;
                user.PasswordSalt = string.Empty;
                user.PasswordChangedDate = DateTime.UtcNow;
                session.Update(user);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }