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} })
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)
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}})
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, }, } )
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)
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)