strengthify/README.md

182 строки
4.3 KiB
Markdown

🔒🔍 strengthify
================
Combine jQuery and zxcvbn to create a password strength meter.
![Examples](examples.png)
How to use
----------
As of 0.5.0, the wrapper will be automatically added beneath the target input field
Add `jquery` (tested with 1.10.0), `jquery.strengthify.js` and
`strengthify.css` to your document.
If using the message option, include bootstrap.
If using the titles option, include bootstrap's `tooltip.js`,
```HTML
<script src="jquery-1.10.0.min.js"></script>
<script src="tooltip.js"></script>
<script src="jquery.strengthify.js"></script>
<link rel="stylesheet" href="bootstrap.min.css" type="text/css">
<link rel="stylesheet" href="strengthify.css" type="text/css">
```
Because [zxcvbn](https://github.com/dropbox/zxcvbn) is really
heavyweight, it will be loaded asynchronously from `zxcvbn/zxcvbn.js`.
This can however be configured with an optional parameter.
Then call `.strengthify` on the password input field.
```JavaScript
$('#password-field').strengthify()
```
That's it. Now the password strength meter will be updated after
each keystroke.
Configuration
-------------
The path and the title of the different strength categories can
be configured with the first parameter of `.strengthify`.
<dl>
<dt>userInputs</dt><dd> an array of strings that zxcvbn will treat as an extra dictionary</dd>
<dt>drawTitles</dt><dd> pop-up text (above)</dd>
<dt>drawMessage</dt><dd> detailed message beneath input</dd>
<dt>drawBars</dt><dd> password strength color progression bars beneath input</dd>
<dt>$addAfter</dt><dd> element after which the strengthify element should be inserted</dd>
<dt>nonce</dt><dd> a nonce that is added to the `<script>` tag to load the zxcvbn.js file asynchronously</dd>
</dl>
Default:
```JSON
{
"zxcvbn": "zxcvbn/zxcvbn.js",
"userInputs": [],
"titles": [
"Weakest",
"Weak",
"So-so",
"Good",
"Perfect"
],
"drawTitles": false,
"drawMessage": false,
"drawBars": true,
"$addAfter": null
}
```
Overwrite example:
```JavaScript
$('#password-field').strengthify({zxcvbn: 'my/path/to/zxcvbn.js'})
```
Use 'onResult' callback option like:
```JavaScript
$('#password-field').strengthify({
zxcvbn: 'my/path/to/zxcvbn.js',
onResult: function(result) {
var submitBtn = $('input[type=submit]');
if (result.score < 3) {
submitBtn.prop('disabled', 'disabled');
} else {
submitBtn.prop('disabled', false);
}
}
})
```
Versions
--------
<dl>
<dt>0.5.9</dt>
<dd>
<ul>
<li>Don't overdo the strength check, the first 100 chars are enough (https://github.com/morrisjobke/strengthify/pull/32)</li>
</ul>
</dd>
<dt>0.5.8</dt>
<dd>
<ul>
<li>wait for load of script before binding (https://github.com/morrisjobke/strengthify/pull/28)</li>
</ul>
</dd>
<dt>0.5.7</dt>
<dd>
<ul>
<li>add option for user input (#27)</li>
</ul>
</dd>
<dt>0.5.6</dt>
<dd>
<ul>
<li>set the nonce properly in all browsers (#24)</li>
</ul>
</dd>
<dt>0.5.5</dt>
<dd>
<ul>
<li>allow to specify a nonce for the loaded script (#23)</li>
</ul>
</dd>
<dt>0.5.4</dt>
<dd>
<ul>
<li>do not use `eval()` anymore (#19)</li>
</ul>
</dd>
<dt>0.5.3</dt>
<dd>
<ul>
<li>make possible to specify the element to add the strength bar after (#20)</li>
<li>provide minified version (#16)</li>
</ul>
</dd>
<dt>0.5.2</dt>
<dd>
<ul>
<li>use eval directly (#14)</li>
<li>added missing break (#13)</li>
</ul>
</dd>
<dt>0.5.1</dt>
<dd>add tilesOptions (#10) - you can choose now between tooltip and element or both - thanks to @feirer</dd>
<dt>0.5.0</dt>
<dd> fairly substantial changes:
<ul>
<li>added feedback message</li>
<li> $.each(...) functionality</li>
<li> restructuring wrapping</li>
<li> feature flags</li>
</ul>
"strengthify-wrapper" added automatically beneath target input
</dd>
<dt>0.4.1</dt>
<dd>hotfix for missing ;</dd>
<dt>0.4</dt>
<dd>syntax and performance cleanups</dd>
<dt>0.3</dt>
<dd>some fixes:
<ul>
<li>migrate from "display" to "opacity"</li>
<li>fix pasting to input field</li>
<li>add tipsy with strength</li>
</ul>
</dd>
<dt>0.2</dt>
<dd>solve mimetype issues</dd>
<dt>0.1</dt>
<dd>Initial version</dd>
</dl>