{ "info": { "author": "Timothee Mazzucotelli", "author_email": "timothee.mazzucotelli@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: ISC License (ISCL)", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Utilities" ], "description": "======================\nDjango ZXCVBN Password\n======================\n\n\n\nBack-end and Front-end password validation with ZXCVBN.\n\nA combination of\n`pirandig\u2019s django-zxcvbn`_ and `aj-may\u2019s django-password-strength`_ Django apps.\nIt combines back-end and front-end validation with strength meter display.\n\n.. _pirandig\u2019s django-zxcvbn: https://github.com/pirandig/django-zxcvbn\n.. _aj-may\u2019s django-password-strength: https://github.com/aj-may/django-password-strength\n\nLicense\n=======\n\nSoftware licensed under `ISC`_ license.\n\n.. _ISC: https://www.isc.org/downloads/software-support-policy/isc-license/\n\nInstallation\n============\n\n::\n\n pip install django-zxcvbn-password\n\n\nRequirements\n============\n\nThe JavaScript code of this application uses JQuery, but JQuery is not bundled\nwith it. Please install it separately. You might also want to use Bootstrap.\n\nUsage\n=====\n\n.. code:: python\n\n # settings.py\n\n INSTALLED_APPS = [\n ...\n 'zxcvbn_password',\n ...\n ]\n\n AUTH_PASSWORD_VALIDATORS = [\n {\n 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',\n },\n {\n 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',\n },\n {\n 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',\n },\n {\n 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',\n },\n {\n 'NAME': 'zxcvbn_password.ZXCVBNValidator',\n 'OPTIONS': {\n 'min_score': 3,\n 'user_attributes': ('username', 'email', 'first_name', 'last_name')\n }\n }\n ]\n\n.. code:: python\n\n # forms.py\n\n from django import forms\n from zxcvbn_password.fields import PasswordField, PasswordConfirmationField\n\n class RegisterForm(forms.Form):\n password1 = PasswordField()\n password2 = PasswordConfirmationField(confirm_with=\u2019password1\u2019)\n\n\n.. code:: python\n\n # views.py\n\n if form.is_valid():\n user = User.objects.create_user(\n username=...,\n password=form.cleaned_data['password1']\n )\n\n\nBy default, other inputs won't be used to compute the score, but you can enforce it\nlike this:\n\n.. code:: python\n\n # forms.py\n\n from django import forms\n from zxcvbn_password import zxcvbn\n from zxcvbn_password.fields import PasswordField, PasswordConfirmationField\n\n class RegisterForm(forms.Form):\n password1 = PasswordField()\n password2 = PasswordConfirmationField(confirm_with=\u2019password1\u2019)\n\n def clean(self):\n password = self.cleaned_data.get('password1')\n other_field1 = ...\n other_field2 = ...\n\n if password:\n score = zxcvbn(password, [other_field1, other_field2])['score']\n # score is between 0 and 4\n # raise forms.ValidationError if needed\n\n return self.cleaned_data\n\n\nScreen-shot\n===========\n\n.. image:: https://cloud.githubusercontent.com/assets/3999221/23079032/5ae1513a-f54b-11e6-9d66-90660ad5fb2d.png\n\n\n.. important::\n\n The password field's widget declares two JavaScript files that must be added to the HTML page.\n To do so, add ``{{ form.media }}`` in your template, something like:\n\n .. code:: html\n\n
\n\n {% block js %}\n {{ block.super }}\n {{ form.media }}\n {% endblock %}\n\n\n.. note::\n\n If you are not using Bootstrap, the strength bar will not have colors.\n You can fix this with these three CSS rules:\n\n .. code:: css\n\n .progress-bar-warning {\n background-color: yellow;\n }\n\n .progress-bar-danger {\n background-color: red;\n }\n\n .progress-bar-success {\n background-color: green;\n }\n\n\nDocumentation\n=============\n\n`On ReadTheDocs`_\n\n.. _`On ReadTheDocs`: http://django-zxcvbn-password.readthedocs.io/\n\nDevelopment\n===========\n\nTo run all the tests: ``tox``\n\n=========\nChangelog\n=========\n\n2.0.3 (2019-02-21)\n==================\n\n- Use new location for package ``python-zxcvbn``, now ``zxcvbn`` (2ea1b69).\n\n\n2.0.2 (2018-08-21)\n==================\n\nDocumented\n----------\n- Improve usage notes (7a1ed42). Related issues/PRs: #31.\n\nFixed\n-----\n- Fix call to super in PasswordConfirmationInput (fc551b8).\n- Improve password validator help text (c5d21a1). Related issues/PRs: #46.\n- Strength bar color go green only when superior to min score (9a44fd8). Related issues/PRs: #3.\n\nTests\n-----\n- Add django 1.11 tests (815aaef).\n- Add py37/pypy plus django 2.0 tests, remove py34 tests (05711cd).\n\n2.0.1 (2017-02-17)\n==================\n\n* Fix call to super in PasswordStrengthInput.\n\n2.0.0 (2017-02-17)\n==================\n\n* Drop Django 1.8 support in favor of AUTH_PASSWORD_VALIDATORS setting\n introduced in Django 1.9.\n* Update zxcvbn to more recent version (dwolfhub/zxcvbn-python on GitHub).\n* Update JavaScript code to latest version.\n* Remove all settings (they now go in AUTH_PASSWORD_VALIDATOR options).\n* Change license to ISC.\n\nThanks to Nick Stefan and Daniel Wolf.\n\n1.1.0 (2016-10-18)\n==================\n\n* Cookiecutterize the project.\n\n1.0.5 (2015-03-31)\n==================\n\n* I don't remember.\n\n1.0.3 (2015-03-12)\n==================\n\n* Switch README to rst.\n* Fix manifest rules.\n\n1.0.2 (2015-03-12)\n==================\n\n* Change package name from django_zxcvbn_password to zxcvbn_password.\n\n1.0.0 (2015-02-21)\n==================\n\n* Beta release on PyPI.\n\n0.1.0 (2015-02-01)\n==================\n\n* Alpha release on PyPI.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Pawamoy/django-zxcvbn-password", "keywords": "django,zxcvbn,password", "license": "ISC", "maintainer": "", "maintainer_email": "", "name": "django-zxcvbn-password", "package_url": "https://pypi.org/project/django-zxcvbn-password/", "platform": "", "project_url": "https://pypi.org/project/django-zxcvbn-password/", "project_urls": { "Homepage": "https://github.com/Pawamoy/django-zxcvbn-password" }, "release_url": "https://pypi.org/project/django-zxcvbn-password/2.0.3/", "requires_dist": [ "zxcvbn" ], "requires_python": "", "summary": "Back-end and Front-end password validation with ZXCVBN.", "version": "2.0.3" }, "last_serial": 4850301, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "83d335dd67533256ce46099d7d8fb880", "sha256": "0602e2acf6fb8a3c2ef3a2201b7ad6dd4c101c8c6b75357fd2d3bf7d511e4b36" }, "downloads": -1, "filename": "django-zxcvbn-password-1.0.1.tar.gz", "has_sig": false, "md5_digest": "83d335dd67533256ce46099d7d8fb880", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2538, "upload_time": "2015-03-12T13:31:40", "url": "https://files.pythonhosted.org/packages/3d/b9/b44c6315d0c3a4df833436dc105246feceaefb123fd9b66588e1c831de7e/django-zxcvbn-password-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "60651dd5c2191e8ae1bb927f02fb8d59", "sha256": "f0d11020006ee6c21af5d4a76e71deb8a57054a2209f838aa1805e2f1ef6db43" }, "downloads": -1, "filename": "django-zxcvbn-password-1.0.2.tar.gz", "has_sig": false, "md5_digest": "60651dd5c2191e8ae1bb927f02fb8d59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2542, "upload_time": "2015-03-12T13:41:01", "url": "https://files.pythonhosted.org/packages/23/05/a3646ed398f967ef47149ce58f6ee7244d7fe3c3d44da448603c272cc427/django-zxcvbn-password-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "dfd3635bb2e71b464d74d842958bc1df", "sha256": "d395e4ca2ff29b4bcc1c3b0ab5bf2bee3e6bc5f9ddcfed3c2d37d0f1ca33646d" }, "downloads": -1, "filename": "django-zxcvbn-password-1.0.3.tar.gz", "has_sig": false, "md5_digest": "dfd3635bb2e71b464d74d842958bc1df", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 335111, "upload_time": "2015-03-12T15:56:29", "url": "https://files.pythonhosted.org/packages/ee/9d/69252f4af25c4b84eb4d4ee6fea9395b356ed04b8e585fbed9e92346de33/django-zxcvbn-password-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "56b6832762b8f22ad8695c42b87603b2", "sha256": "6f431ac7e219e0cae39d90e7493c540705fd3a562502bd6dfc37b510aed164e3" }, "downloads": -1, "filename": "django-zxcvbn-password-1.0.4.tar.gz", "has_sig": false, "md5_digest": "56b6832762b8f22ad8695c42b87603b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 336104, "upload_time": "2015-03-13T10:38:06", "url": "https://files.pythonhosted.org/packages/4b/cf/d7b1cc977a31c82cc472b4c0286e3744c922df4981729268926f0f04b5bc/django-zxcvbn-password-1.0.4.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "f44859a710f3ed4d86cc2f6acef88e7b", "sha256": "353d6813188cc31894672fe853e036d83ac5608cc9a8244bf751f440aaa2a570" }, "downloads": -1, "filename": "django-zxcvbn-password-1.0.5.tar.gz", "has_sig": false, "md5_digest": "f44859a710f3ed4d86cc2f6acef88e7b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 337033, "upload_time": "2015-03-31T17:20:24", "url": "https://files.pythonhosted.org/packages/ce/a0/7d487ef46f38663ca7703d438d8d9e41a64751320467d2f22c28cef42872/django-zxcvbn-password-1.0.5.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "6378f77f3b42aafe192c6d29794ae78e", "sha256": "fde57e6b7f862e22024681b53423c0012d6f55d1260836ea9dc6679bd8dffe0f" }, "downloads": -1, "filename": "django_zxcvbn_password-2.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6378f77f3b42aafe192c6d29794ae78e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 408942, "upload_time": "2017-02-20T13:16:40", "url": "https://files.pythonhosted.org/packages/f2/79/54644a41c808ba466147e750b4285b03aaef63b99288323be66cd35471a5/django_zxcvbn_password-2.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ae52e5c5bb008544def903b9be2edcb", "sha256": "a3176c92387b59f4188787ee0ea7459c7b3fbda177ef1892549e73aa8d7c5df7" }, "downloads": -1, "filename": "django-zxcvbn-password-2.0.0.tar.gz", "has_sig": false, "md5_digest": "0ae52e5c5bb008544def903b9be2edcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 416274, "upload_time": "2017-02-20T13:16:43", "url": "https://files.pythonhosted.org/packages/05/63/d904c983d72a09291cb83736b5655e14fc7b892629513535a902aafd00b3/django-zxcvbn-password-2.0.0.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "9566d5c2dcd275fd0f8ec4e7662ed919", "sha256": "b5fe567791ef2e48856a384aa63b85545d0a8cf23fda2263e9d8ac7834686589" }, "downloads": -1, "filename": "django_zxcvbn_password-2.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9566d5c2dcd275fd0f8ec4e7662ed919", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 407875, "upload_time": "2018-08-21T10:36:18", "url": "https://files.pythonhosted.org/packages/37/89/93dfaa3c325132093dac000141ac0ea90fb84224502923f9b1b290b425a5/django_zxcvbn_password-2.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "949f45254a685747fd83b8f8aa3aff78", "sha256": "53f65985d96210669135d4bf3a586a68a5f063549e0af324e2e52dcd032f2667" }, "downloads": -1, "filename": "django-zxcvbn-password-2.0.2.tar.gz", "has_sig": false, "md5_digest": "949f45254a685747fd83b8f8aa3aff78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 418873, "upload_time": "2018-08-21T10:36:20", "url": "https://files.pythonhosted.org/packages/8a/bc/35118097b5f6db04893af4449b7eb0363390de14d10063fe81469dd8ddbb/django-zxcvbn-password-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "3cfd153eb9870934417a789897001312", "sha256": "bee05ee1737f8a6c88bca08fa2fa531c4818517046faa8d3747104dc021de172" }, "downloads": -1, "filename": "django_zxcvbn_password-2.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3cfd153eb9870934417a789897001312", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 411119, "upload_time": "2019-02-21T14:10:43", "url": "https://files.pythonhosted.org/packages/fc/18/9b04ab9e96cd6f0ee6c5aa6faf2c594c37772bcbc8174c0dd52dd9da027f/django_zxcvbn_password-2.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fdd0f644349d4245b42e95e05f47aa6e", "sha256": "675b529502bea7a7546a39ebeb42d1f1b7ef839c7075a663ad5cf15ba9df6146" }, "downloads": -1, "filename": "django-zxcvbn-password-2.0.3.tar.gz", "has_sig": false, "md5_digest": "fdd0f644349d4245b42e95e05f47aa6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 417973, "upload_time": "2019-02-21T14:10:45", "url": "https://files.pythonhosted.org/packages/f2/a6/9e8895de3e7d7f02eba415ded3a13d45b2529f13891e0c1697a5e316fd86/django-zxcvbn-password-2.0.3.tar.gz" } ], "v1.0": [ { "comment_text": "", "digests": { "md5": "1c589ae22627b53e7e57084cc60b572e", "sha256": "01737f557a1c8ae70441dc7fdf37abc39ac7a26d645d5507191d76550a38e83d" }, "downloads": -1, "filename": "django-zxcvbn-password-v1.0.tar.gz", "has_sig": false, "md5_digest": "1c589ae22627b53e7e57084cc60b572e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 336198, "upload_time": "2015-02-21T12:24:08", "url": "https://files.pythonhosted.org/packages/53/78/e86b44b1cae664d3f9946995372b3667dc73472e8cedc3f9517970b27b08/django-zxcvbn-password-v1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3cfd153eb9870934417a789897001312", "sha256": "bee05ee1737f8a6c88bca08fa2fa531c4818517046faa8d3747104dc021de172" }, "downloads": -1, "filename": "django_zxcvbn_password-2.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3cfd153eb9870934417a789897001312", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 411119, "upload_time": "2019-02-21T14:10:43", "url": "https://files.pythonhosted.org/packages/fc/18/9b04ab9e96cd6f0ee6c5aa6faf2c594c37772bcbc8174c0dd52dd9da027f/django_zxcvbn_password-2.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fdd0f644349d4245b42e95e05f47aa6e", "sha256": "675b529502bea7a7546a39ebeb42d1f1b7ef839c7075a663ad5cf15ba9df6146" }, "downloads": -1, "filename": "django-zxcvbn-password-2.0.3.tar.gz", "has_sig": false, "md5_digest": "fdd0f644349d4245b42e95e05f47aa6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 417973, "upload_time": "2019-02-21T14:10:45", "url": "https://files.pythonhosted.org/packages/f2/a6/9e8895de3e7d7f02eba415ded3a13d45b2529f13891e0c1697a5e316fd86/django-zxcvbn-password-2.0.3.tar.gz" } ] }