X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/5b07c7b5b515a3b89da2cd3cfc46e1842dbdc328..80e81e8ba3e132d6b51a0bb4c794d8f2c1f600d9:/forum/views/auth.py diff --git a/forum/views/auth.py b/forum/views/auth.py index 3d61575..6b7f5d1 100644 --- a/forum/views/auth.py +++ b/forum/views/auth.py @@ -85,7 +85,9 @@ def prepare_provider_signin(request, provider): except InvalidAuthentication, e: request.session['auth_error'] = e.message - return HttpResponseRedirect(reverse('auth_signin')) + return HttpResponseRedirect(reverse('auth_signin')) + else: + raise Http404() def process_provider_signin(request, provider): @@ -115,7 +117,7 @@ def process_provider_signin(request, provider): uassoc = AuthKeyUserAssociation(user=request.user, key=assoc_key, provider=provider) uassoc.save() request.user.message_set.create(message=_('The new credentials are now associated with your account')) - return HttpResponseRedirect(reverse('user_authsettings')) + return HttpResponseRedirect(reverse('user_authsettings', args=[request.user.id])) return HttpResponseRedirect(reverse('auth_signin')) else: @@ -257,14 +259,12 @@ def validate_email(request, user, code): raise Http404() @login_required -def auth_settings(request): - """ - change password view. +def auth_settings(request, id): + user_ = get_object_or_404(User, id=id) + + if not (request.user.is_superuser or request.user == user_): + return HttpResponseForbidden() - url : /changepw/ - template: authopenid/changepw.html - """ - user_ = request.user auth_keys = user_.auth_keys.all() if user_.has_usable_password(): @@ -283,7 +283,7 @@ def auth_settings(request): user_.set_password(form.cleaned_data['password1']) user_.save() - return HttpResponseRedirect(reverse('user_authsettings')) + return HttpResponseRedirect(reverse('user_authsettings', kwargs={'id': user_.id})) form = FormClass(user=user_) @@ -304,6 +304,8 @@ def auth_settings(request): }) return render_to_response('auth/auth_settings.html', { + 'view_user': user_, + "can_view_private": (user_ == request.user) or request.user.is_superuser, 'form': form, 'has_password': user_.has_usable_password(), 'auth_keys': auth_keys_list, @@ -311,11 +313,12 @@ def auth_settings(request): def remove_external_provider(request, id): association = get_object_or_404(AuthKeyUserAssociation, id=id) - if not association.user == request.user: + if not (request.user.is_superuser or request.user == association.user): return HttpResponseForbidden() + request.user.message_set.create(message=_("You removed the association with %s") % association.provider) association.delete() - return HttpResponseRedirect(reverse('user_authsettings')) + return HttpResponseRedirect(reverse('user_authsettings', kwargs={'id': association.user.id})) def newquestion_signin_action(user): question = Question.objects.filter(author=user).order_by('-added_at')[0]