diff --git a/README.md b/README.md index 2d840c5..3b4de94 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A simple implementation of zxcvbn for Laravel 5. This package allows you to access "zxcvbn-related" data on a passphrase in the application and also to use zxcvbn as a standard validator. -Uses [Zxcvbn-PHP](https://github.com/bjeavons/zxcvbn-php) by [@bjeavons](https://github.com/bjeavons), which in turn is inspired by [zxcvbn](https://github.com/dropbox/zxcvbn) by [@dropbox](https://github.com/dropbox). +Uses [Zxcvbn-PHP](https://github.com/mkopinsky/zxcvbn-php) by [@mkopinsky](https://github.com/mkopinsky) (originally by [@bjeavons](https://github.com/bjeavons)), which in turn is inspired by [zxcvbn](https://github.com/dropbox/zxcvbn) by [@dropbox](https://github.com/dropbox). ## Install @@ -54,17 +54,19 @@ class MyClass extends MyOtherClass $zxcvbn = Zxcvbn::passwordStrength('password'); dd($zxcvbn); - // array:6 [▼ - // "crack_time" => 5.0E-5 - // "calc_time" => 0.12961101531982 - // "password" => "password" - // "entropy" => 0.0 - // "match_sequence" => array:1 [] - // "score" => 0 + // array:9 [ + // "password" => "password" + // "guesses" => 3 + // "guesses_log10" => 0.47712125471966 + // "sequence" => array:1 [] + // "crack_times_seconds" => array:4 [] + // "crack_times_display" => array:4 [] + // "score" => 0 + // "feedback" => array:2 [] + // "calc_time" => 0.042769908905029 // ] } } -?> ``` Play around with different passwords and phrases, the results may surprise you. Check out [Zxcvbn-PHP](https://github.com/bjeavons/zxcvbn-php) for more uses and examples. diff --git a/composer.json b/composer.json index f161f20..07144fb 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "require": { "php" : ">=7.1.3", "illuminate/support": "^5.8", - "bjeavons/zxcvbn-php": "0.4.0" + "mkopinsky/zxcvbn-php": "^4.4" }, "require-dev": { "phpunit/phpunit" : "~7.0", diff --git a/src/ZxcvbnServiceProvider.php b/src/ZxcvbnServiceProvider.php index f045b4c..6f637ae 100644 --- a/src/ZxcvbnServiceProvider.php +++ b/src/ZxcvbnServiceProvider.php @@ -50,8 +50,8 @@ public function boot() $zxcvbn = new ZxcvbnPhp(); $zxcvbn = $zxcvbn->passwordStrength($value, [$username, $email]); - if (isset($zxcvbn['match_sequence'][0])) { - $dictionary = $zxcvbn['match_sequence'][0]; + if (isset($zxcvbn['sequence'][0])) { + $dictionary = $zxcvbn['sequence'][0]; if (isset($dictionary->dictionaryName)) { return false; } @@ -74,7 +74,7 @@ public function boot() */ public function register() { - $this->app->bind('zxcvbn', function($app) { + $this->app->bind('zxcvbn', function() { return new ZxcvbnPhp(); }); } diff --git a/tests/ZxcvbnTest.php b/tests/ZxcvbnTest.php index 8a11ada..77d900f 100644 --- a/tests/ZxcvbnTest.php +++ b/tests/ZxcvbnTest.php @@ -38,15 +38,17 @@ protected function getPackageAliases($app) */ public function test_zxcvbn_basics() { + $zxcvbn = Zxcvbn::passwordStrength('password'); + $testVar1 = Zxcvbn::passwordStrength('test'); // Check keys $this->assertArrayHasKey('score', $testVar1); - $this->assertArrayHasKey('match_sequence', $testVar1); - $this->assertArrayHasKey('entropy', $testVar1); - $this->assertArrayHasKey('password', $testVar1); + $this->assertArrayHasKey('sequence', $testVar1); + $this->assertArrayHasKey('crack_times_seconds', $testVar1); + $this->assertArrayHasKey('crack_times_display', $testVar1); $this->assertArrayHasKey('calc_time', $testVar1); - $this->assertArrayHasKey('crack_time', $testVar1); + $this->assertArrayHasKey('guesses', $testVar1); // Check score-value $this->assertEquals(0, $testVar1['score']); @@ -57,7 +59,7 @@ public function test_zxcvbn_basics() $testVar4 = Zxcvbn::passwordStrength('7E6k9axB*gwGHa&aZTohmD9Wr&NVs[b4'); //<-- 32 // Check score-value - $this->assertEquals(1, $testVar2['score']); + $this->assertEquals(2, $testVar2['score']); $this->assertEquals(4, $testVar3['score']); $this->assertEquals(4, $testVar4['score']); } @@ -106,6 +108,7 @@ public function test_password_dictionary_with_message() $this->assertEquals('Just a message', $this->validate_with_message_dictionary('test', 'test@test.com', 'test', 'Just a message')); } + /** @note validation helper */ private function validate_without_message_min($password, $min) { $data = ['password' => $password]; @@ -116,6 +119,7 @@ private function validate_without_message_min($password, $min) return $validator->passes(); } + /** @note validation helper */ private function validate_with_message_min($password, $min, $message) { $data = ['password' => $password]; @@ -129,6 +133,7 @@ private function validate_with_message_min($password, $min, $message) return $errors->first('password'); } + /** @note validation helper */ private function validate_without_message_dictionary($password, $email, $username) { $data = ['password' => $password]; @@ -139,6 +144,7 @@ private function validate_without_message_dictionary($password, $email, $usernam return $validator->passes(); } + /** @note validation helper */ private function validate_with_message_dictionary($password, $email, $username, $message) { $data = ['password' => $password];