diff --git a/student/models.py b/student/models.py index e70d2170a3e4dc16d70068bf3f3848615eec416b..c6592391ae42237e1e4c10dd435e32d87d36fa58 100644 --- a/student/models.py +++ b/student/models.py @@ -65,7 +65,7 @@ class PendingNameChange(models.Model): class PendingEmailChange(models.Model): user = models.OneToOneField(User, unique=True, db_index=True) - new_email = models.CharField(blank=True, max_length=255) + new_email = models.CharField(blank=True, max_length=255, db_index=True) #cache_relation(User.profile) diff --git a/student/views.py b/student/views.py index 4fe31816be2ed55d18bbc91d5c2dc8d116a827fd..c3c3d4447cce068ef073c6e0e2b093f5b0498de5 100644 --- a/student/views.py +++ b/student/views.py @@ -264,7 +264,20 @@ def change_email_request(request): ## Maske sure it checks for existing e-mail conflicts if not request.user.is_authenticated: raise Http404 - pass + + if not request.user.check_password(request.POST['password']): + return HttpResponse(json.dumps({'success':False, + 'error':'Invalid password'})) + + new_email = request.POST['new_email'] + if len(User.objects.filter(email = new_email)) != 0: + ## CRITICAL TODO: Handle case for e-mails + return HttpResponse(json.dumps({'success':False, + 'error':'An account with this e-mail already exists.'})) + + + + request.POST['new_email'] @ensure_csrf_cookie def change_email_confirm(request): diff --git a/urls.py b/urls.py index cf0132ababbdd42ce294c977864e6fc98a939648..ed669a3e941ed6d9ca711d8ec8ae173d94d7d59e 100644 --- a/urls.py +++ b/urls.py @@ -8,6 +8,8 @@ import django.contrib.auth.views # admin.autodiscover() urlpatterns = ('', + url(r'^email_change$', 'student.views.change_email_request'), + url(r'^email_confirm$', 'student.views.change_email_confirm'), url(r'^gradebook$', 'courseware.views.gradebook'), url(r'^event$', 'track.views.user_track'), url(r'^t/(?P<template>[^/]*)$', 'static_template_view.views.index'), @@ -17,9 +19,8 @@ urlpatterns = ('', url(r'^login/(?P<error>[^/]*)$', 'student.views.login_user'), url(r'^create_account$', 'student.views.create_account'), url(r'^activate/(?P<key>[^/]*)$', 'student.views.activate_account'), + url(r'^reactivate/(?P<key>[^/]*)$', 'student.views.reactivation_email'), url(r'^$', 'student.views.index'), -# url(r'^password_reset/$', 'django.contrib.auth.views.password_reset', -# dict(from_email='registration@mitx.mit.edu'),name='auth_password_reset'), url(r'^password_reset/$', 'student.views.password_reset'), url(r'^password_change/$',django.contrib.auth.views.password_change,name='auth_password_change'), url(r'^password_change_done/$',django.contrib.auth.views.password_change_done,name='auth_password_change_done'),