Ejemplo n.º 1
0
def activate_account(request, user_id, token):
    User = auth.get_user_model()

    try:
        user = User.objects.get(pk=user_id)
    except User.DoesNotExist:
        message = _("Activation link is invalid. Please try again.")
        return Response({'detail': message}, status=status.HTTP_400_BAD_REQUEST)

    if not is_activation_token_valid(user, token):
        message = _("Activation link is invalid. Please try again.")
        return Response({'detail': message},
                        status=status.HTTP_400_BAD_REQUEST)

    form = ResendActivationForm()
    try:
        form.confirm_user_not_banned(user)
    except ValidationError:
        message = _("Activation link has expired. Please request new one.")
        return Response({'detail': message},
                        status=status.HTTP_400_BAD_REQUEST)

    try:
        form.confirm_can_be_activated(user)
    except ValidationError as e:
        return Response({'detail': e.messages[0]},
                        status=status.HTTP_400_BAD_REQUEST)

    user.requires_activation = False
    user.save(update_fields=['requires_activation'])

    message = _("%(user)s, your account has been activated.")
    return Response({
            'detail': message % {'user': user.username}
        })
Ejemplo n.º 2
0
    def decorator(request, *args, **kwargs):
        if 'user_id' in kwargs:
            User = get_user_model()
            user = get_object_or_404(User.objects, pk=kwargs.pop('user_id'))
            kwargs['user'] = user

            if not is_activation_token_valid(user, kwargs['token']):
                message = _("Your link is invalid. Please try again.")
                return Response({'detail': message},
                                status=status.HTTP_404_NOT_FOUND)

            form = ResendActivationForm()
            try:
                form.confirm_user_not_banned(user)
            except ValidationError:
                message = _("Your link has expired. Please request new one.")
                return Response({'detail': message},
                                status=status.HTTP_404_NOT_FOUND)

            try:
                form.confirm_can_be_activated(user)
            except ValidationError as e:
                return Response({'detail': e.messages[0]},
                                status=status.HTTP_404_NOT_FOUND)

        return f(request, *args, **kwargs)
Ejemplo n.º 3
0
def activate_account(request, user_id, token):
    User = auth.get_user_model()

    try:
        user = User.objects.get(pk=user_id)
    except User.DoesNotExist:
        message = _("Activation link is invalid. Please try again.")
        return Response({'detail': message}, status=status.HTTP_400_BAD_REQUEST)

    if not is_activation_token_valid(user, token):
        message = _("Activation link is invalid. Please try again.")
        return Response({'detail': message},
                        status=status.HTTP_400_BAD_REQUEST)

    form = ResendActivationForm()
    try:
        form.confirm_user_not_banned(user)
    except ValidationError:
        message = _("Activation link has expired. Please request new one.")
        return Response({'detail': message},
                        status=status.HTTP_400_BAD_REQUEST)

    try:
        form.confirm_can_be_activated(user)
    except ValidationError as e:
        return Response({'detail': e.messages[0]},
                        status=status.HTTP_400_BAD_REQUEST)

    user.requires_activation = False
    user.save(update_fields=['requires_activation'])

    message = _("%(user)s, your account has been activated.")
    return Response({
            'detail': message % {'user': user.username}
        })
Ejemplo n.º 4
0
    def decorator(request, *args, **kwargs):
        if 'user_id' in kwargs:
            User = get_user_model()
            user = get_object_or_404(User.objects, pk=kwargs.pop('user_id'))
            kwargs['user'] = user

            if not is_activation_token_valid(user, kwargs['token']):
                message = _("Your link is invalid. Please try again.")
                return Response({'detail': message},
                                status=status.HTTP_404_NOT_FOUND)

            form = ResendActivationForm()
            try:
                form.confirm_user_not_banned(user)
            except ValidationError:
                message = _("Your link has expired. Please request new one.")
                return Response({'detail': message},
                                status=status.HTTP_404_NOT_FOUND)

            try:
                form.confirm_can_be_activated(user)
            except ValidationError as e:
                return Response({'detail': e.messages[0]},
                                status=status.HTTP_404_NOT_FOUND)

        return f(request, *args, **kwargs)
Ejemplo n.º 5
0
def activate_by_token(request, user_id, token):
    User = get_user_model()
    inactive_user = get_object_or_404(User.objects, pk=user_id)

    try:
        if not inactive_user.requires_activation:
            message = _("%(user)s, your account is already active.")
            message = message % {"user": inactive_user.username}
            raise ActivationStopped(message)

        if not is_activation_token_valid(inactive_user, token):
            message = _("%(user)s, your activation link is invalid. " "Try again or request new activation link.")
            message = message % {"user": inactive_user.username}
            raise ActivationError(message)

        ban = get_user_ban(inactive_user)
        if ban:
            raise Banned(ban)
    except ActivationStopped as e:
        return render(request, "misago/activation/stopped.html", {"message": e.args[0]})
    except ActivationError as e:
        return render(request, "misago/activation/error.html", {"message": e.args[0]}, status=400)

    inactive_user.requires_activation = ACTIVATION_REQUIRED_NONE
    inactive_user.save(update_fields=["requires_activation"])

    message = _("%(user)s, your account has been activated!")

    return render(request, "misago/activation/done.html", {"message": message % {"user": inactive_user.username}})
Ejemplo n.º 6
0
def activate_by_token(request, pk, token):
    inactive_user = get_object_or_404(UserModel, pk=pk, is_active=True)

    try:
        if not inactive_user.requires_activation:
            message = _("%(user)s, your account is already active.")
            raise ActivationStopped(message % {'user': inactive_user.username})

        if not is_activation_token_valid(inactive_user, token):
            message = _(
                "%(user)s, your activation link is invalid. "
                "Try again or request new activation link."
            )
            raise ActivationError(message % {'user': inactive_user.username})

        ban = get_user_ban(inactive_user)
        if ban:
            raise Banned(ban)
    except ActivationStopped as e:
        return render(request, 'misago/activation/stopped.html', {
            'message': e.args[0],
        })
    except ActivationError as e:
        return render(
            request,
            'misago/activation/error.html',
            {
                'message': e.args[0],
            },
            status=400,
        )

    inactive_user.requires_activation = UserModel.ACTIVATION_NONE
    inactive_user.save(update_fields=['requires_activation'])

    message = _("%(user)s, your account has been activated!")

    return render(
        request, 'misago/activation/done.html', {
            'message': message % {
                'user': inactive_user.username,
            },
        }
    )
Ejemplo n.º 7
0
def activate_by_token(request, user_id, token):
    User = get_user_model()
    inactive_user = get_object_or_404(User.objects, pk=user_id)

    try:
        if not inactive_user.requires_activation:
            message = _("%(user)s, your account is already active.")
            message = message % {'user': inactive_user.username}
            raise ActivationStopped(message)
        if inactive_user.requires_activation_by_admin:
            message = _("%(user)s, your account can be activated "
                        "only by one of the administrators.")
            message = message % {'user': inactive_user.username}
            raise ActivationStopped(message)
        if get_user_ban(inactive_user):
            message = _("%(user)s, your account is banned "
                        "and can't be activated.")
            message = message % {'user': inactive_user.username}
            raise ActivationError(message)
        if not is_activation_token_valid(inactive_user, token):
            message = _("%(user)s, your activation link is invalid. "
                        "Try again or request new activation message.")
            message = message % {'user': inactive_user.username}
            raise ActivationError(message)
    except ActivationStopped as e:
        messages.info(request, e.args[0])
        return redirect('misago:index')
    except ActivationError as e:
        messages.error(request, e.args[0])
        return redirect('misago:request_activation')

    inactive_user.requires_activation = ACTIVATION_REQUIRED_NONE
    inactive_user.save(update_fields=['requires_activation'])

    message = _("%(user)s, your account has been activated!")
    message = message % {'user': inactive_user.username}
    messages.success(request, message)

    return redirect(settings.LOGIN_URL)
Ejemplo n.º 8
0
def activate_by_token(request, user_id, token):
    User = get_user_model()
    inactive_user = get_object_or_404(User.objects, pk=user_id)

    try:
        if not inactive_user.requires_activation:
            message = _("%(user)s, your account is already active.")
            message = message % {"user": inactive_user.username}
            raise ActivationStopped(message)
        if inactive_user.requires_activation_by_admin:
            message = _("%(user)s, your account can be activated " "only by one of the administrators.")
            message = message % {"user": inactive_user.username}
            raise ActivationStopped(message)
        if get_user_ban(inactive_user):
            message = _("%(user)s, your account is banned " "and can't be activated.")
            message = message % {"user": inactive_user.username}
            raise ActivationError(message)
        if not is_activation_token_valid(inactive_user, token):
            message = _("%(user)s, your activation link is invalid. " "Try again or request new activation message.")
            message = message % {"user": inactive_user.username}
            raise ActivationError(message)
    except ActivationStopped as e:
        messages.info(request, e.args[0])
        return redirect("misago:index")
    except ActivationError as e:
        messages.error(request, e.args[0])
        return redirect("misago:request_activation")

    inactive_user.requires_activation = ACTIVATION_REQUIRED_NONE
    inactive_user.save(update_fields=["requires_activation"])

    message = _("%(user)s, your account has been activated!")
    message = message % {"user": inactive_user.username}
    messages.success(request, message)

    return redirect(settings.LOGIN_URL)