summaryrefslogtreecommitdiff
path: root/passlib/ext/django/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'passlib/ext/django/models.py')
-rw-r--r--passlib/ext/django/models.py84
1 files changed, 4 insertions, 80 deletions
diff --git a/passlib/ext/django/models.py b/passlib/ext/django/models.py
index 02b54cc..aaf13ee 100644
--- a/passlib/ext/django/models.py
+++ b/passlib/ext/django/models.py
@@ -6,58 +6,7 @@
and not officially documented in Passlib just yet
(though it should work).
-When this is imported on Django load,
-it automatically monkeypatches
-:class:`django.contrib.auth.models.User`
-to use a Passlib CryptContext instance in place of normal Django
-password authentication. This provides hash migration,
-ability to set stronger policies for superuser & staff passwords,
-and stronger password hashing schemes.
-
-You can set the following options in django ``settings.py``:
-
-``PASSLIB_CONTEXT``
- This may be one of a number of values:
-
- * The string ``"passlib-default"``, which will cause Passlib
- to replace Django's hash routines with a builtin policy
- that supports all existing django hashes; but as users
- log in, upgrades them all to :class:`~passlib.hash.pbkdf2_sha256`.
- It also supports stronger hashing for the superuser account.
-
- This is the default behavior if ``PASSLIB_CONTEXT`` is not set.
-
- The exact policy can be found at
- :data:`passlib.ext.django.models.passlib_default_ctx`.
-
- * ``None``, in which case this app will do nothing when django is loaded.
-
- * A :class:`~passlib.context.CryptContext`
- instance which will be used in place of the normal Django password
- hash routines.
-
- It is *strongly* recommended to use a context which will support
- the existing Django hashes.
-
- * A multiline config string suitable for passing to
- :meth:`passlib.context.CryptPolicy.from_string`.
- This will be parsed and used much like a :class:`!CryptContext` instance.
-
-``PASSLIB_GET_CATEGORY``
-
- By default, Passlib will invoke the specified context with a category
- string that's dependant on the User instance.
- superusers will be assigned to the ``superuser`` category,
- staff to the ``staff`` category, and all other accounts
- assigned to ``None``.
-
- This allows overriding that logic by specifying an alternate
- function of the format ``get_category(user) -> category|None``.
-
- .. seealso::
-
- See :ref:`user-categories` for more details about
- the category system in Passlib.
+see the Passlib documentation for details on how to use this app
"""
#===================================================================
#imports
@@ -67,33 +16,8 @@ from django.conf import settings
#pkg
from passlib.context import CryptContext, CryptPolicy
from passlib.utils import is_crypt_context, bytes
-from passlib.ext.django.utils import get_category, set_django_password_context
-
-#===================================================================
-#constants
-#===================================================================
-
-#: default context used by app
-passlib_default_ctx = """
-[passlib]
-schemes =
- pbkdf2_sha256,
- django_salted_sha1, django_salted_md5,
- django_des_crypt, hex_md5,
- django_disabled
-
-default = pbkdf2_sha256
-
-deprecated =
- django_salted_sha1, django_salted_md5,
- django_des_crypt, hex_md5
-
-all__vary_rounds = 5%%
-
-pbkdf2_sha256__default_rounds = 4000
-staff__pbkdf2_sha256__default_rounds = 8000
-superuser__pbkdf2_sha256__default_rounds = 10000
-"""
+from passlib.ext.django.utils import DEFAULT_CTX, get_category, \
+ set_django_password_context
#===================================================================
#main
@@ -107,7 +31,7 @@ def patch():
if not ctx:
return
if ctx == "passlib-default":
- ctx = passlib_default_ctx
+ ctx = DEFAULT_CTX
if isinstance(ctx, (unicode, bytes)):
ctx = CryptPolicy.from_string(ctx)
if isinstance(ctx, CryptPolicy):