예제 #1
0
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')
예제 #2
0
파일: views.py 프로젝트: 1000camels/froide
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')
예제 #3
0
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)