]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/views/auth.py
Adds the option to create static pages with several options to customize its behaviour.
[osqa.git] / forum / views / auth.py
index 26ce783161ccae5c422424d06037600ec30f0e63..ebccf0eefdc5669a8953537eb71ffb7788f94d1a 100644 (file)
@@ -12,9 +12,9 @@ from django.http import get_host
 import types
 import datetime
 
-from forum.authentication.forms import SimpleRegistrationForm, SimpleEmailSubscribeForm, \
+from forum.forms import SimpleRegistrationForm, SimpleEmailSubscribeForm, \
         TemporaryLoginRequestForm, ChangePasswordForm, SetPasswordForm
-from forum.utils.mail import send_email
+from forum.utils.mail import send_email, send_template_email
 
 from forum.authentication.base import InvalidAuthentication
 from forum.authentication import AUTH_PROVIDERS
@@ -152,9 +152,6 @@ def external_register(request):
             user_.save()
             UserJoinsAction(user=user_, ip=request.META['REMOTE_ADDR']).save()
 
-            if not user_.email_isvalid:
-                send_validation_email(user_)
-
             try:
                 assoc_key = request.session['assoc_key']
                 auth_provider = request.session['auth_provider']
@@ -172,7 +169,7 @@ def external_register(request):
             del request.session['assoc_key']
             del request.session['auth_provider']
 
-            return login_and_forward(request, user_)
+            return login_and_forward(request, user_, message=_("A welcome email has been sent to your email address. "))
     else:
         provider_class = AUTH_PROVIDERS[request.session['auth_provider']].consumer
         user_data = provider_class.get_user_data(request.session['assoc_key'])
@@ -218,10 +215,7 @@ def request_temp_login(request):
             except:
                 hash = ValidationHash.objects.create_new(user, 'templogin', [user.id])
 
-            send_email(_("Temporary login link"), [(user.username, user.email)], "auth/temp_login_email.html", {
-                'temp_login_code': hash,
-                'user': user
-            })
+            send_template_email([user], "auth/temp_login_email.html", {'temp_login_code': hash})
 
             request.user.message_set.create(message=_("An email has been sent with your temporary login key"))
 
@@ -241,14 +235,7 @@ def temp_signin(request, user, code):
                 _("You are logged in with a temporary access key, please take the time to fix your issue with authentication."))
     else:
         raise Http404()
-
-def send_validation_email(user):
-    hash = ValidationHash.objects.create_new(user, 'email', [user.email])
-    send_email(_("Email Validation"), [(user.username, user.email)], "auth/email_validation.html", {
-        'validation_code': hash,
-        'user': user
-    })
-
+    
 def validate_email(request, user, code):
     user = get_object_or_404(User, id=user)
 
@@ -268,25 +255,28 @@ def auth_settings(request, id):
 
     auth_keys = user_.auth_keys.all()
 
-    if user_.has_usable_password():
-        FormClass = ChangePasswordForm
-    else:
+    if request.user.is_superuser or (not user_.has_usable_password()):
         FormClass = SetPasswordForm
+    else:
+        FormClass = ChangePasswordForm
 
     if request.POST:
         form = FormClass(request.POST, user=user_)
         if form.is_valid():
-            if user_.has_usable_password():
-                request.user.message_set.create(message=_("Your password was changed"))
-            else:
-                request.user.message_set.create(message=_("New password set"))
-                FormClass = ChangePasswordForm
-                
+            is_new_pass = not user_.has_usable_password()
             user_.set_password(form.cleaned_data['password1'])
             user_.save()
+
+            if is_new_pass:
+                request.user.message_set.create(message=_("New password set"))
+                if not request.user.is_superuser:
+                    form = ChangePasswordForm(user=user_)
+            else:
+                request.user.message_set.create(message=_("Your password was changed"))
+
             return HttpResponseRedirect(reverse('user_authsettings', kwargs={'id': user_.id}))
-    
-    form = FormClass(user=user_)
+    else:
+        form = FormClass(user=user_)
 
     auth_keys_list = []