lib.itmens/mastodon/views/threads.py
2024-07-03 03:27:33 -04:00

57 lines
1.7 KiB
Python

from django.contrib.auth.decorators import login_required
from django.http import HttpRequest
from django.shortcuts import redirect
from django.urls import reverse
from django.utils.translation import gettext as _
from django.views.decorators.http import require_http_methods
from common.views import render_error
from ..models import Threads
from .common import disconnect_identity, process_verified_account
@require_http_methods(["POST"])
def threads_login(request: HttpRequest):
"""start login process via threads"""
return redirect(Threads.generate_auth_url(request))
@require_http_methods(["POST"])
@login_required
def threads_reconnect(request: HttpRequest):
"""link another threads to an existing logged-in user"""
return redirect(Threads.generate_auth_url(request))
@require_http_methods(["POST"])
@login_required
def threads_disconnect(request):
"""unlink threads from an existing logged-in user"""
return disconnect_identity(request, request.user.threads)
@require_http_methods(["GET"])
def threads_oauth(request: HttpRequest):
"""handle redirect back from threads"""
code = request.GET.get("code")
if not code:
return render_error(
_("Authentication failed"), request.GET.get("error_description", "")
)
account = Threads.authenticate(request, code)
if not account:
return render_error(
_("Authentication failed"), _("Invalid account data from Threads.")
)
return process_verified_account(request, account)
@require_http_methods(["GET"])
def threads_uninstall(request: HttpRequest):
return redirect(reverse("users:data"))
@require_http_methods(["GET"])
def threads_delete(request: HttpRequest):
return redirect(reverse("users:data"))