예제 #1
0
 public ModifyUserResponse(ModifyUserResult result, MandatoryUserParams mandatoryUserParams, PasswordRules passwordRules, User userData)
 {
     Result = result;
     MandatoryUserParams = mandatoryUserParams;
     PasswordRules       = passwordRules;
     UserData            = userData;
 }
        public void Initialise()
        {
            validTestPassword = new Password
            {
                UserId          = "ABHW089",
                OldPassword     = "******",
                NewPassword     = "******",
                ConfirmPassword = "******",
                NewPasswordHash = "yVHn6?R@",

                IsValid = true
            };

            validTestPassword.SetHistory(new List <string> {
                "$sG96r#X", "3g9m&9W7"
            });

            validTestRules = new PasswordRules
            {
                Validators   = ValidatorTypes.All,
                MinLength    = 8,
                MaxLength    = 10,
                SpecialChars = new[] { '!', '@', '#', '$', '%', '*', '+', '/' },
                MinHistory   = 3,
                Blacklist    = new[] { "test", "password" }
            };

            factory = new ValidatorFactory();

            service = new PasswordService(factory);
        }
예제 #3
0
        public void Test_CreateValidationSet_Basic_Rules()
        {
            var testRules = PasswordRules.CreateBasic();

            var valSet = factory.CreateValidationSet(testRules).ToList();

            valSet.Count.Should().Be(2);
        }
        public override string ToString(PasswordRules ruleSet)
        {
            if (ruleSet == null)
            {
                throw new ArgumentNullException(nameof(ruleSet));
            }

            return(string.Format(Properties.Resources.ValidateHistory_PasswordMayNotBeAnyOfYourPrevious0Passwords, ruleSet.MinHistory));
        }
        public override void Setup(PasswordRules ruleSet)
        {
            if (ruleSet == null)
            {
                throw new ArgumentNullException(nameof(ruleSet));
            }

            histCount = ruleSet.MinHistory;
        }
        public override void Setup(PasswordRules ruleSet)
        {
            if (ruleSet == null)
            {
                throw new ArgumentNullException(nameof(ruleSet));
            }

            blackList = ruleSet.Blacklist.ToList();
        }
예제 #7
0
        public override string ToString(PasswordRules ruleSet)
        {
            if (ruleSet == null)
            {
                throw new ArgumentNullException(nameof(ruleSet));
            }

            return(string.Format(Properties.Resources.ValidateSpecial_PasswordMustContainAtLeast1OfTheFollowingCharacters, string.Concat(ruleSet.SpecialChars)));
        }
        public override string ToString(PasswordRules ruleSet)
        {
            if (ruleSet == null)
            {
                throw new ArgumentNullException(nameof(ruleSet));
            }

            return(FormatMessage(ruleSet.MinLength, ruleSet.MaxLength));
        }
        public override void Setup(PasswordRules ruleSet)
        {
            if (ruleSet == null)
            {
                throw new ArgumentNullException(nameof(ruleSet));
            }

            minLength = ruleSet.MinLength;
            maxLength = ruleSet.MaxLength;
        }
예제 #10
0
        public override void Setup(PasswordRules ruleSet)
        {
            if (ruleSet == null)
            {
                throw new ArgumentNullException(nameof(ruleSet));
            }

            charSet = ruleSet.SpecialChars;
            var set = string.Concat(charSet);

            regex = new Regex($"(.*[{set}])", RegexOptions.Compiled);
        }
 public void Initialise()
 {
     validTestRules = new PasswordRules
     {
         Validators   = ValidatorTypes.All,
         MinLength    = 8,
         MaxLength    = 10,
         SpecialChars = new[] { '!', '@', '#', '$', '%', '*', '+', '/' },
         MinHistory   = 3,
         Blacklist    = new[] { "test", "password" }
     };
 }
예제 #12
0
        public PasswordScore PasswordStrength(String password)
        {
            /*SCORING LOGIC.
             * Divide 1 by number of password rules. The result is RequirementScore.
             * Get the password-score using Password.Strength. This is StrengthScore
             * Take the smaller of RequirementScore,StrengthScore.
             * Project it to appropriate strength string.
             */

            double requirementScore = 0d; double strengthScore = 0d;

            int countRules = PasswordRules.Count(); int passedRules = countRules;

            if (countRules == 0)
            {
                requirementScore = 1;
            }
            else
            {
                var errors = PasswordRules.Where(r => !r.Holds(password)).Select(r => r.Name);
                if (errors != null)
                {
                    passedRules = countRules - errors.Count();
                }
                requirementScore = (double)passedRules / countRules;
            }

            strengthScore = Password.Strength(password);
            var score = Math.Min(requirementScore, strengthScore);

            PasswordScore[] passwordStrengthVerdicts = new[] { PasswordScore.VeryWeak, PasswordScore.Weak, PasswordScore.Average, PasswordScore.Strong, PasswordScore.VeryStrong };
            score = score * passwordStrengthVerdicts.Length;

            int passwordVerdictIndex = Math.Min((int)score, passwordStrengthVerdicts.Length - 1);

            /* If resultScore is highest but requirementScore is less than 1. It means all password rules have not been met. Hence reduce strength by one level*/
            if (passwordVerdictIndex == (passwordStrengthVerdicts.Length - 1) && requirementScore < 1)
            {
                passwordVerdictIndex -= 1;
            }

            PasswordScore resultScore = passwordStrengthVerdicts[passwordVerdictIndex];

            return(resultScore);
        }
예제 #13
0
        private bool CheckPasswordRules(string password)
        {
            bool          result = true;
            PasswordRules rules  = BesteUserSettings?.PasswordRules;

            if (rules == null)
            {
                rules = new PasswordRules();
            }

            result = result && password.Length > rules.MinLength;
            result = result && (!rules.HasDigit || (password.HasDigit()));
            result = result && (!rules.HasLowerCase || (password.HasLowerCase()));
            result = result && (!rules.HasUpperCase || (password.HasUpperCase()));
            result = result && (!rules.HasSpecialChars || (password.HasSpecialChars()));

            return(result);
        }
        private void Generate()
        {
            IPasswordGenerator passwordGenerator;

            bool containsLowerCaseLetters  = CheckLowerCaseLetters.Checked;
            bool containsUpperCaseLetters  = CheckUpperCaseLetters.Checked;
            bool containsDigits            = CheckDigits.Checked;
            bool containsSpecialCharacters = CheckSpecialCharacters.Checked;

            PasswordRules rules = new PasswordRules()
            {
                ContainsLowerCaseLetters  = containsLowerCaseLetters,
                ContainsUpperCaseLetters  = containsUpperCaseLetters,
                ContainsDigits            = containsDigits,
                ContainsSpecialCharacters = containsSpecialCharacters
            };

            int passwordLength = (int)PasswordLength.Value;

            if (containsSpecialCharacters && InputSpecialCharacters.Text.Length < 1)
            {
                MessageBox.Show("Keine Sonderzeichen angegeben.");
                return;
            }

            passwordGenerator = new PasswordGenerator(rules, InputSpecialCharacters.Text.ToCharArray());

            string password = passwordGenerator.Generate(passwordLength);

            InputPassword.Text = password;
            Password           = password;

            Settings.Default.PasswordLength            = (int)PasswordLength.Value;
            Settings.Default.ContainsLowerCaseLetters  = CheckLowerCaseLetters.Checked;
            Settings.Default.ContainsUpperCaseLetters  = CheckUpperCaseLetters.Checked;
            Settings.Default.ContainsDigits            = CheckDigits.Checked;
            Settings.Default.ContainsSpecialCharacters = CheckSpecialCharacters.Checked;
            Settings.Default.SpecialCharacters         = InputSpecialCharacters.Text;

            Settings.Default.Save();
        }
        public PasswordRules CreatePasswordRules()
        {
            var config = configuration.GetPasswordRulesSection();

            var passwordRules = new PasswordRules
            {
                Validators   = ValidatorTypes.None,
                MinLength    = config.Lengths?.Min ?? 0,
                MaxLength    = config.Lengths?.Max ?? 0,
                MinHistory   = config.MinCounts?.History ?? 0,
                SpecialChars = config.SpecialChars?.Value.ToCharArray() ?? new char[0]
            };

            var validatorStr = config.Validators.Types.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var val in validatorStr)
            {
                passwordRules.Validators = passwordRules.Validators | (ValidatorTypes)Enum.Parse(typeof(ValidatorTypes), val);
            }

            return(passwordRules);
        }
예제 #16
0
        public static bool IsPasswordValid(string password,
                                           PasswordRules rules,
                                           params string[] ruleOutList)
        {
            bool         result   = true;
            const string lower    = "abcdefghijklmnopqrstuvwxyz";
            const string upper    = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            const string digits   = "0123456789";
            string       allChars = lower + upper + digits;

            //Check Lowercase if rule is enforced
            if (Convert.ToBoolean(rules & PasswordRules.LowerCase))
            {
                result &= (password.IndexOfAny(lower.ToCharArray()) >= 0);
            }
            //Check Uppercase if rule is enforced
            if (Convert.ToBoolean(rules & PasswordRules.UpperCase))
            {
                result &= (password.IndexOfAny(upper.ToCharArray()) >= 0);
            }
            //Check to for a digit in password if digit is required
            if (Convert.ToBoolean(rules & PasswordRules.Digit))
            {
                result &= (password.IndexOfAny(digits.ToCharArray()) >= 0);
            }
            //Check to make sure special character is included if required
            if (Convert.ToBoolean(rules & PasswordRules.SpecialChar))
            {
                result &= (password.Trim(allChars.ToCharArray()).Length > 0);
            }
            if (ruleOutList != null)
            {
                for (int i = 0; i < ruleOutList.Length; i++)
                {
                    result &= (password != ruleOutList[i]);
                }
            }
            return(result);
        }
예제 #17
0
        public IEnumerable <IPasswordValidator> CreateValidationSet(PasswordRules ruleSet)
        {
            if (ruleSet == null)
            {
                throw new ArgumentNullException(nameof(ruleSet));
            }

            var result = new List <IPasswordValidator>();

            foreach (var validator in InternalValidators)
            {
                if ((ruleSet.Validators & validator.Type) != validator.Type)
                {
                    continue;
                }

                validator.Setup(ruleSet);
                result.Add(validator);
            }

            return(result);
        }
예제 #18
0
        public JsonResult passwprd(string pasword)
        {
            PasswordRules pw     = new PasswordRules();
            int           dif    = 0;
            string        result = "";

            if (pw.GeneratePasswordScore(pasword) > 80)
            {
                result = "Şifreniz güçlü";
            }
            else if (pw.GeneratePasswordScore(pasword) >= 60)
            {
                result = "Şifreniz orta seviye";
            }
            else if (pw.GeneratePasswordScore(pasword) < 60)
            {
                result = "Şifreniz zayıf";
            }
            dif = pw.GeneratePasswordScore(pasword);

            return(Json(new { data = dif, message = result }, JsonRequestBehavior.AllowGet));
        }
 public string ToString(PasswordRules ruleSet)
 {
     return("Custom Validator 2");
 }
예제 #20
0
 public virtual string ToString(PasswordRules ruleSet)
 {
     return(ToString());
 }
예제 #21
0
 public virtual void Setup(PasswordRules ruleSet)
 {
 }
예제 #22
0
        public JsonResult personalRegister(string Name, string Surname, string BirthDay, string Contact, string City, string State, string Address, string Email, string Password)
        {
            try
            {
                var image = System.Web.HttpContext.Current.Request.Files[0];
                using (business.Management.UserManagement.UserFunctions userManagement = new business.Management.UserManagement.UserFunctions())
                {
                    PasswordRules pw = new PasswordRules();
                    ImageProcess  Ip = new ImageProcess();
                    if (!userManagement.isPersonalExist(Email))
                    {
                        if (pw.GeneratePasswordScore(Password) >= 60)
                        {
                            string hashedPW = Crypting.En_De_crypt._Encrypt(Password);
                            string filename = null;
                            if (image != null && (image.ContentType == "image/jpeg" || image.ContentType == "image/jpg" || image.ContentType == "image/png"))
                            {
                                filename = Ip.Resolution(image, new int[] { 128, 256, 512 }, Email.Split('@')[0], "UserPicture");
                            }
                            else
                            {
                                filename = $"user_default.png";
                            }

                            Personal newPersonal = new Personal
                            {
                                OwnFirmId      = Convert.ToInt64(Session["personalFirmId"]),
                                personalUserId = userManagement.addUser(new db.Tables.User
                                {
                                    EncryptedPassword = hashedPW,
                                    Token             = Guid.NewGuid().ToString(),
                                    Role          = "Personal",
                                    UserName      = Email.ToString(),
                                    Image         = filename,
                                    EmailVeryfied = false
                                }),
                                Name          = Name.ToString(),
                                Surname       = Surname.ToString(),
                                BirthDay      = BirthDay.ToString(),
                                Contact       = Contact.ToString(),
                                City          = City.ToString(),
                                State         = State.ToString(),
                                Address       = Address.ToString(),
                                Mail          = Email.ToString(),
                                Password      = hashedPW,
                                Register_Date = DateTime.Now,
                                Login_Date    = default(DateTime),
                                Status        = true
                            };
                            userManagement.addPersonal(newPersonal);
                            BuildEmailTemplate(newPersonal.personalUserId);

                            return(Json(new { result = true, redirect = "Login", message = "Kaydınız başarılı bir şekilde oluşturuldu." }, JsonRequestBehavior.AllowGet));
                        }
                        else
                        {
                            return(Json(new { result = false, message = "Şifreniz zayıf daha güçlü bir şifre giriniz." }, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        return(Json(new { redirect = "Password", result = false, message = "Giriş yaptığınız mail sisteme kayıtlı." }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (Exception)
            {
                return(Json(new { message = "Hata Oluştu." }, JsonRequestBehavior.AllowGet));
            }
        }
예제 #23
0
        public JsonResult clientRegister(string Name, string Surname, string Emailc, string Password, string Contact)
        {
            try
            {
                var          image = System.Web.HttpContext.Current.Request.Files[0];
                ImageProcess Ip    = new ImageProcess();
                using (business.Management.UserManagement.UserFunctions userManagement = new business.Management.UserManagement.UserFunctions())
                {
                    PasswordRules pw        = new PasswordRules();
                    int           wfsNumber = Convert.ToInt32(Session["wfs"]);
                    string        role;
                    bool          IsUser;

                    if (wfsNumber == 1)
                    {
                        role   = "CustomerManager";
                        IsUser = false;
                    }
                    else
                    {
                        role   = "ClientManager";
                        IsUser = true;
                    }

                    if (!userManagement.isManagerExist(Emailc))
                    {
                        if (pw.GeneratePasswordScore(Password) >= 60)
                        {
                            string hashedPW = Crypting.En_De_crypt._Encrypt(Password);
                            string filename = null;
                            if (image != null && (image.ContentType == "image/jpeg" || image.ContentType == "image/jpg" || image.ContentType == "image/png"))
                            {
                                filename = Ip.Resolution(image, new int[] { 128, 256, 512 }, Emailc.Split('@')[0], "UserPicture");
                            }
                            else
                            {
                                filename = $"user_default.png";
                            }

                            ClientManager newManager = new ClientManager
                            {
                                managerUserId = userManagement.addUser(new db.Tables.User
                                {
                                    EncryptedPassword = hashedPW,
                                    Token             = Guid.NewGuid().ToString(),
                                    Role          = role,
                                    UserName      = Emailc,
                                    Image         = filename,
                                    EmailVeryfied = false
                                }),
                                Name          = Name,
                                Surname       = Surname,
                                Email         = Emailc,
                                Password      = hashedPW,
                                Contact       = Contact,
                                Register_Date = DateTime.Now,
                                Login_Date    = default(DateTime),
                                Status        = true,
                                ManagerFirmId = (long)Session["latest"],
                                IsWFSuser     = IsUser
                            };
                            userManagement.addClientManager(newManager);

                            BuildEmailTemplate(newManager.managerUserId);

                            return(Json(new { result = true, redirect = "Login", message = "Kaydınız başarılı bir şekilde oluşturuldu." }, JsonRequestBehavior.AllowGet));
                        }
                        else
                        {
                            return(Json(new { result = false, message = "Şifreniz zayıf daha güçlü bir şifre giriniz." }, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        using (business.Management.FirmManagement.FirmFunctions fm = new business.Management.FirmManagement.FirmFunctions())
                        {
                            fm.deleteFirm((long)Session["latest"]);
                        }
                        return(Json(new { message = "Giriş yaptığınız bilgiler sistemde kayıtlı lütfen bilgilerinizi kontrol ediniz." }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (Exception e)
            {
                return(Json(new { message = "Hata Oluştu." }, JsonRequestBehavior.AllowGet));
            }
        }
예제 #24
0
        /// <summary>
        /// FUNCTION FOR TESTING PASSWORD COMPLEXITY
        /// </summary>
        /// <param name="s">INCOMING PASSWORD TO TEST</param>
        /// <param name="minLength">MIN LENGTH OF PASSWORD</param>
        /// <param name="maxLength">MAX LENGTH OF PASSWORD</param>
        /// <param name="rule">COMPARISON FLAGS CAN BE ANY COMBINATION OF THE FOLLOWING - UPPER, LOWER, NUMERIC, SPECIAL</param>
        /// <returns>TRUE OR FALSE IF THE PASSWORD PASSES OR NOT</returns>
        static bool ValidatePasswordComplexity(string s, int minLength, int maxLength, PasswordRules rule)
        {
            //CONSTANTS FOR COMPARISON GROUPS
            const string UPPER   = "(?=.*[A-Z])";
            const string LOWER   = "(?=.*[a-z])";
            const string NUMERIC = "(?=.*[0-9])";
            const string SPECIAL = "(?=.*[!@#$%^&*()<>])";

            //CREATE A NEW VAR TO HOLD THE COMPARE STRING WHILE ITS ASSEMBLED
            StringBuilder tmpCompare = new StringBuilder("^");

            //CHECK IF UPPER IS A REQUIREMENT
            if ((rule & PasswordRules.Upper) == PasswordRules.Upper)
            {
                tmpCompare.Append(UPPER);
            }

            //CHECK IF LOWER IS A REQUIREMENT
            if ((rule & PasswordRules.Lower) == PasswordRules.Lower)
            {
                tmpCompare.Append(LOWER);
            }

            //CHECK IF NUMERIC IS A REQUIREMENT
            if ((rule & PasswordRules.Numeric) == PasswordRules.Numeric)
            {
                tmpCompare.Append(NUMERIC);
            }

            //CHECK IF SPECIAL IS A REQUIREMENT
            if ((rule & PasswordRules.Special) == PasswordRules.Special)
            {
                tmpCompare.Append(SPECIAL);
            }

            //APPEND THE LENGTH REQUIREMENTS
            tmpCompare.Append(string.Format(".{{{0},{1}}}", minLength, maxLength));

            //RETURN THE RESULT OF THE COMPARISON
            return(Regex.Match(s, tmpCompare.ToString()).Success);
        }
예제 #25
0
        public async Task <JsonResult> ProfileUpdate(string Name, string Surname, string Contact, string Email, string Password)
        {
            var          user = web.Session.SessionUser.User;
            ImageProcess Ip   = new ImageProcess();

            try
            {
                var image = System.Web.HttpContext.Current.Request.Files[0];

                string filename = null;
                if (image != null && (image.ContentType == "image/jpeg" || image.ContentType == "image/jpg" || image.ContentType == "image/png"))
                {
                    filename = Ip.Resolution(image, new int[] { 128, 256, 512 }, user.User.UserName.Split('@')[0], "UserPicture");
                }
                else
                {
                    filename = user.User.Image;
                }

                using (business.Management.UserManagement.UserFunctions userM = new business.Management.UserManagement.UserFunctions())
                {
                    PasswordRules pw       = new PasswordRules();
                    string        hashedPW = Password;

                    if (pw.GeneratePasswordScore(Password) >= 60)
                    {
                        if (Password != user.User.EncryptedPassword)
                        {
                            hashedPW = business.SessionSettings.Crypting.En_De_crypt._Encrypt(Password);
                        }
                        bool verify = true;

                        if (Email != user.User.UserName)
                        {
                            if (user.User.Role == "ClientManager")
                            {
                                if (userM.isManagerExist(Email))
                                {
                                    return(Json(new { result = false, message = "Girdiğiniz bilgiler sistemde kayıtlı..." }, JsonRequestBehavior.AllowGet));
                                }
                            }
                            else
                            {
                                if (userM.isPersonalExist(Email))
                                {
                                    return(Json(new { result = false, message = "Girdiğiniz bilgiler sistemde kayıtlı..." }, JsonRequestBehavior.AllowGet));
                                }
                            }
                            BuildEmailTemplate(user.User.UserId);
                            verify = false;
                        }

                        User updateuser = new User
                        {
                            UserName          = Email,
                            EncryptedPassword = hashedPW,
                            Image             = filename,
                            EmailVeryfied     = verify
                        };

                        if (userM.updateUser(updateuser, user.User.UserId))
                        {
                            if (user.User.Role.Contains("ClientManager"))
                            {
                                ClientManager updateManager = new ClientManager
                                {
                                    Name     = Name,
                                    Surname  = Surname,
                                    Email    = Email,
                                    Password = hashedPW,
                                    Contact  = Contact,
                                };
                                if (userM.updateClientManager(updateManager, user.ClientManager_Id))
                                {
                                    return(Json(new { result = true, message = "Bilgileriniz güncellendi." }, JsonRequestBehavior.AllowGet));
                                }
                                else
                                {
                                    return(Json(new { result = false, message = "Bilgileriniz güncellenemedi." }, JsonRequestBehavior.AllowGet));
                                }
                            }
                            else
                            {
                                Personal updatePersonal = new Personal
                                {
                                    Name     = Name,
                                    Surname  = Surname,
                                    Contact  = Contact,
                                    Mail     = Email,
                                    Password = hashedPW
                                };
                                if (userM.updatePersonal(updatePersonal, user.Personal_Id))
                                {
                                    return(Json(new { result = true, message = "Bilgileriniz güncellendi." }, JsonRequestBehavior.AllowGet));
                                }
                                else
                                {
                                    return(Json(new { result = false, message = "Bilgileriniz güncellenemedi." }, JsonRequestBehavior.AllowGet));
                                }
                            }
                        }
                        else
                        {
                            return(Json(new { result = false, message = "Bilgileriniz güncellenemedi." }, JsonRequestBehavior.AllowGet));
                        }
                    }
                    else
                    {
                        return(Json(new { result = false, message = "Şifreniz zayıf daha güçlü bir şifre giriniz." }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            catch (Exception e)
            {
                return(Json(new { result = false, message = "Hata oluştu" }, JsonRequestBehavior.AllowGet));
            }
        }
        public override bool CreateNewPassword(Password newPassword)
        {
            if (PasswordWasNotPreviouslyUsed(newPassword) && AllRulesComply(newPassword, PasswordRules.GetPasswordRules()))
            {
                PreviousPasswords.Add(CurrentPassword);
                CurrentPassword = newPassword;
                AddEvent(new NewPasswordCreatedDomainEvent(this));
                return(true);
            }

            return(false);
        }
 public void Setup(PasswordRules ruleSet)
 {
 }
 public void GivenIWantToSetMyPasswordTo(String password)
 {
     passwordRules = new PasswordRules(password);
 }
예제 #29
0
        public Task <PasswordRulesDto> Handle(GetPasswordRulesRequest request, CancellationToken cancellationToken)
        {
            PasswordRules rules = _authenticationService.GetPasswordRules();

            return(Task.FromResult(_mapper.Map <PasswordRulesDto>(rules)));
        }