summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/contrib/auth/backends.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/django/contrib/auth/backends.py b/django/contrib/auth/backends.py
new file mode 100644
index 0000000000..bc3db2f663
--- /dev/null
+++ b/django/contrib/auth/backends.py
@@ -0,0 +1,51 @@
+from django.conf import settings
+from django.contrib.auth.models import User, check_password
+
+class SettingsBackend:
+ """
+ Authenticate against vars in settings.py Use the login name, and a hash
+ of the password.
+
+ ADMIN_LOGIN = 'admin'
+ ADMIN_PASSWORD = 'sha1$4e987$afbcf42e21bd417fb71db8c66b321e9fc33051de'
+ """
+ def authenticate(self, username=None, password=None):
+ login_valid = (settings.ADMIN_LOGIN == username)
+ pwd_valid = check_password(password, settings.ADMIN_PASSWORD)
+ if login_valid and pwd_valid:
+ # TODO: This should be abstracted out someplace else.
+ try:
+ user = User.objects.get(username=username)
+ except User.DoesNotExist:
+ user = User(username=username, password='')
+ user.is_staff = True
+ user.is_superuser = True
+ user.save()
+ return user
+ return None
+
+ def get_user(self, user_id):
+ try:
+ return User.objects.get(pk=user_id)
+ except User.DoesNotExist:
+ return None
+
+class ModelBackend:
+ """
+ Authenticate against django.contrib.auth.models.User
+ """
+ # TODO: Model, login attribute name and password attribute name should be
+ # configurable.
+ def authenticate(self, username=None, password=None):
+ try:
+ user = User.objects.get(username=username)
+ if user.check_password(password):
+ return user
+ except User.DoesNotExist:
+ return None
+
+ def get_user(self, user_id):
+ try:
+ return User.objects.get(pk=user_id)
+ except User.DoesNotExist:
+ return None