summaryrefslogtreecommitdiff
path: root/testapp/myauthentication
diff options
context:
space:
mode:
authorPrabhu Ramachandran2014-06-06 17:28:57 +0530
committerPrabhu Ramachandran2014-06-06 17:28:57 +0530
commite50eb8426d5f22fd35a2575cd3f4617226bc1a01 (patch)
treeaf75e47255f39402c79ded6f75399a47084584ff /testapp/myauthentication
parent8b5d13df2a8f4ac3acc075c522128722b987e57b (diff)
parent77caf5d44ab14d56efd4acbc65a6dd2d78c1c1a6 (diff)
downloadonline_test-e50eb8426d5f22fd35a2575cd3f4617226bc1a01.tar.gz
online_test-e50eb8426d5f22fd35a2575cd3f4617226bc1a01.tar.bz2
online_test-e50eb8426d5f22fd35a2575cd3f4617226bc1a01.zip
Merge pull request #24 from prathamesh920/spoken_tutorial
Spoken tutorial authentication
Diffstat (limited to 'testapp/myauthentication')
-rw-r--r--testapp/myauthentication/README12
-rw-r--r--testapp/myauthentication/__init__.py0
-rw-r--r--testapp/myauthentication/backend.py43
-rw-r--r--testapp/myauthentication/models_spoken_tutorial.py26
-rw-r--r--testapp/myauthentication/router.py12
-rw-r--r--testapp/myauthentication/tests.py5
-rw-r--r--testapp/myauthentication/urls.py0
-rw-r--r--testapp/myauthentication/views.py1
8 files changed, 99 insertions, 0 deletions
diff --git a/testapp/myauthentication/README b/testapp/myauthentication/README
new file mode 100644
index 0000000..4aef3c5
--- /dev/null
+++ b/testapp/myauthentication/README
@@ -0,0 +1,12 @@
+To use authentication from external source, follow the instructions given below:
+
+1. In settings.py,
+ Uncomment AUTHENTICATION_BACKENDS = ('myauthentication.backend.MyBackend',)
+ Uncomment AUTHENTICATION_BACKENDS = ('myauthentication.backend.MyBackend',)
+ Enter database name, username and password for the spoken tutorial database.
+
+2. From login.html template comment 'New User? Sign-Up' link.
+ This is to be done so that user will register only from external
+ application and their details will be stored in the external database.
+
+3. In urls.py comment 'register' url pattern.
diff --git a/testapp/myauthentication/__init__.py b/testapp/myauthentication/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testapp/myauthentication/__init__.py
diff --git a/testapp/myauthentication/backend.py b/testapp/myauthentication/backend.py
new file mode 100644
index 0000000..721fe54
--- /dev/null
+++ b/testapp/myauthentication/backend.py
@@ -0,0 +1,43 @@
+import hashlib
+from django.contrib.auth.models import User, check_password
+from models_spoken_tutorial import MoodleUser
+
+
+class MyBackend:
+ supports_object_permissions = False
+ supports_anonymous_user = False
+ supports_inactive_user = False
+
+ def authenticate(self, username=None, password=None):
+ '''
+ Checks username and password with external User table.
+ If valid then adds the user details in django User table
+ and authenticates the user.
+ '''
+ try:
+ user = MoodleUser.objects.get(username=username)
+ pwd = user.password
+ uid = user.id
+ firstname = user.firstname
+ lastname = user.lastname
+ email_id = user.email
+ p = hashlib.md5(password)
+ pwd_valid = (pwd == p.hexdigest())
+ if user and pwd_valid:
+ try:
+ user = User.objects.get(username=username)
+ return user
+ except Exception, e:
+ user = User(id=uid, username=username, password=pwd,
+ first_name=firstname, last_name=lastname,
+ email=email_id)
+ user.save()
+ return user
+ except Exception, e:
+ return None
+
+ def get_user(self, user_id):
+ try:
+ return User.objects.get(pk=user_id)
+ except Exception, e:
+ return None
diff --git a/testapp/myauthentication/models_spoken_tutorial.py b/testapp/myauthentication/models_spoken_tutorial.py
new file mode 100644
index 0000000..d333400
--- /dev/null
+++ b/testapp/myauthentication/models_spoken_tutorial.py
@@ -0,0 +1,26 @@
+# This is an auto-generated Django model module.
+# You'll have to do the following manually to clean this up:
+# * Rearrange models' order
+# * Make sure each model has one field with primary_key=True
+# Feel free to rename the models, but don't rename db_table values or field names.
+#
+# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'
+# into your database.
+
+from django.db import models
+
+class MoodleUser(models.Model):
+ id = models.BigIntegerField(primary_key=True)
+ username = models.CharField(unique=True, max_length=300)
+ password = models.CharField(max_length=96)
+ idnumber = models.CharField(max_length=765)
+ firstname = models.CharField(max_length=300)
+ lastname = models.CharField(max_length=300)
+ email = models.CharField(max_length=300)
+ institution = models.CharField(max_length=120)
+ department = models.CharField(max_length=90)
+ address = models.CharField(max_length=210)
+ city = models.CharField(max_length=360)
+ country = models.CharField(max_length=6)
+ class Meta:
+ db_table = u'mdl_user'
diff --git a/testapp/myauthentication/router.py b/testapp/myauthentication/router.py
new file mode 100644
index 0000000..3d9c330
--- /dev/null
+++ b/testapp/myauthentication/router.py
@@ -0,0 +1,12 @@
+class MyDatabaseRouter(object):
+ """
+ A router to manage database operations in the myauthentication app.
+ """
+ def db_for_read(self, model, **hints):
+ """
+ Point all read operations on myauthentication app to spoken
+ database.
+ """
+ if model._meta.app_label == 'myauthentication':
+ return 'spoken_tutorial'
+ return None
diff --git a/testapp/myauthentication/tests.py b/testapp/myauthentication/tests.py
new file mode 100644
index 0000000..4103038
--- /dev/null
+++ b/testapp/myauthentication/tests.py
@@ -0,0 +1,5 @@
+#This file demonstrates writing tests using the unittest module. These will pass
+#when you run "manage.py test".
+
+#Write appropriate tests for the application.
+
diff --git a/testapp/myauthentication/urls.py b/testapp/myauthentication/urls.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/testapp/myauthentication/urls.py
diff --git a/testapp/myauthentication/views.py b/testapp/myauthentication/views.py
new file mode 100644
index 0000000..60f00ef
--- /dev/null
+++ b/testapp/myauthentication/views.py
@@ -0,0 +1 @@
+# Create your views here.