fromimportlibimportimport_modulefromdjango.confimportsettingsfromdjango.contribimportmessagesfromdjango.contrib.authimportlogoutfromdjango.contrib.auth.decoratorsimportlogin_requiredfromdjango.shortcutsimportredirect,renderfromdjango.utilsimporttimezonefrom.helpersimporttrust_sessionfrom.modelsimportTrustedSession# Create your views here.SessionStore=import_module(settings.SESSION_ENGINE).SessionStore
[docs]@login_requireddefindex_view(request):# Delete expired trusted sessions# There isn't really a much better place to do this.TrustedSession.delete_expired_sessions(user=request.user)context={"trusted_sessions":TrustedSession.objects.filter(user=request.user),"cur_session_trusted":TrustedSession.objects.filter(session_key=request.session.session_key).exists(),}returnrender(request,"sessionmgmt/index.html",context)
[docs]@login_requireddefrevoke_session_view(request):ifrequest.method=="POST"and"session_key"inrequest.POST:try:trusted_session=TrustedSession.objects.get(user=request.user,session_key=request.POST.get("session_key",""))exceptTrustedSession.DoesNotExist:messages.error(request,"You've already revoked that session.")returnredirect("sessionmgmt")session_store=SessionStore(session_key=trusted_session.session_key)session_store.delete()trusted_session.delete()ifrequest.session.session_key==trusted_session.session_key:logout(request)# Without this, it doesn't seem to work properly (maybe because the session is re-saved?)returnredirect("index")returnredirect("sessionmgmt")