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( "NODE.DC Task session closed.", content_type="text/html", ) def post(self, request): logout_current_user(request) return HttpResponseRedirect(get_logout_redirect_url("/"))