def confirm(request, user_id, secret, request_id=None): if request.user.is_authenticated(): messages.add_message(request, messages.ERROR, _('You are logged in and cannot use a confirmation link.')) return redirect('account-show') user = get_object_or_404(auth.models.User, pk=int(user_id)) if user.is_active: return redirect('account-login') account_manager = AccountManager(user) if account_manager.confirm_account(secret, request_id): messages.add_message(request, messages.WARNING, _('Your email address is now confirmed and you are logged in. You should change your password now by filling out the form below.')) login_user(request, user) if request_id is not None: foirequest = FoiRequest.confirmed_request(user, request_id) if foirequest: messages.add_message(request, messages.SUCCESS, _('Your request "%s" has now been sent') % foirequest.title) next = request.GET.get('next', request.session.get('next')) if next: if 'next' in request.session: del request.session['next'] return redirect(next) return redirect(reverse('account-show') + "?new#change-password-now") else: messages.add_message(request, messages.ERROR, _('You can only use the confirmation link once, please login with your password.')) return redirect('account-login')
def confirm(request, user_id, secret, request_id=None): if request.user.is_authenticated: if request.user.id != user_id: messages.add_message( request, messages.ERROR, _('You are logged in and cannot use a confirmation link.')) return redirect('account-show') user = get_object_or_404(auth.get_user_model(), pk=int(user_id)) if user.is_active or (not user.is_active and user.email is None): return redirect('account-login') account_service = AccountService(user) result = account_service.confirm_account(secret, request_id) if not result: messages.add_message( request, messages.ERROR, _('You can only use the confirmation link once, ' 'please login with your password.')) return redirect('account-login') auth.login(request, user) params = {} if request.GET.get('ref'): params['ref'] = request.GET['ref'] if request_id is not None: foirequest = FoiRequest.confirmed_request(user, request_id) if foirequest: params['request'] = str(foirequest.pk).encode('utf-8') default_url = reverse('account-confirmed') + urlencode(params) return get_redirect(request, default=default_url, params=params)