ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: Plane live access и logout handoff

This commit is contained in:
DCCONSTRUCTIONS
2026-05-04 18:54:21 +03:00
parent 55318f14e5
commit 3b13e5be52
15 changed files with 435 additions and 36 deletions
@@ -0,0 +1,44 @@
import os
from django.contrib.auth import logout
from django.http import HttpResponse, HttpResponseRedirect
from django.utils import timezone
from django.views import View
from plane.authentication.utils.host import user_ip
from plane.db.models import User
def get_nodedc_global_logout_url():
value = os.environ.get("PLANE_NODEDC_GLOBAL_LOGOUT_URL", "").strip()
return value or None
def get_logout_redirect_url(default_url):
return get_nodedc_global_logout_url() or default_url
def logout_current_user(request):
if request.user and request.user.is_authenticated:
try:
user = User.objects.get(pk=request.user.id)
user.last_logout_ip = user_ip(request=request)
user.last_logout_time = timezone.now()
user.save()
except Exception:
pass
logout(request)
class NodeDCFrontChannelLogoutEndpoint(View):
def get(self, request):
logout_current_user(request)
return HttpResponse(
"<!doctype html><html><head><meta charset='utf-8'></head><body>NODE.DC Task session closed.</body></html>",
content_type="text/html",
)
def post(self, request):
logout_current_user(request)
return HttpResponseRedirect(get_logout_redirect_url("/"))