mirror of
https://github.com/evennia/evennia.git
synced 2026-03-16 21:06:30 +01:00
Update AJAX client with the corrected Autologin functionality
This commit is contained in:
parent
8eff4678b4
commit
2d030afb36
3 changed files with 34 additions and 11 deletions
|
|
@ -294,9 +294,9 @@ if WEBSERVER_ENABLED:
|
|||
# create ajax client processes at /webclientdata
|
||||
from evennia.server.portal import webclient_ajax
|
||||
|
||||
webclient = webclient_ajax.WebClient()
|
||||
webclient.sessionhandler = PORTAL_SESSIONS
|
||||
web_root.putChild("webclientdata", webclient)
|
||||
ajax_webclient = webclient_ajax.AjaxWebClient()
|
||||
ajax_webclient.sessionhandler = PORTAL_SESSIONS
|
||||
web_root.putChild("webclientdata", ajax_webclient)
|
||||
webclientstr = "\n + webclient (ajax only)"
|
||||
|
||||
if WEBSOCKET_CLIENT_ENABLED and not websocket_started:
|
||||
|
|
|
|||
|
|
@ -93,7 +93,6 @@ class WebSocketClient(Protocol, Session):
|
|||
csession = self.get_client_session()
|
||||
|
||||
if csession:
|
||||
print("In disconnect: csession uid=%s" % csession.get("webclient_authenticated_uid", None))
|
||||
csession["webclient_authenticated_uid"] = None
|
||||
csession.save()
|
||||
self.logged_in = False
|
||||
|
|
|
|||
|
|
@ -53,11 +53,11 @@ def jsonify(obj):
|
|||
|
||||
|
||||
#
|
||||
# WebClient resource - this is called by the ajax client
|
||||
# AjaxWebClient resource - this is called by the ajax client
|
||||
# using POST requests to /webclientdata.
|
||||
#
|
||||
|
||||
class WebClient(resource.Resource):
|
||||
class AjaxWebClient(resource.Resource):
|
||||
"""
|
||||
An ajax/comet long-polling transport
|
||||
|
||||
|
|
@ -163,13 +163,13 @@ class WebClient(resource.Resource):
|
|||
remote_addr = request.getClientIP()
|
||||
host_string = "%s (%s:%s)" % (_SERVERNAME, request.getRequestHostname(), request.getHost().port)
|
||||
|
||||
sess = WebClientSession()
|
||||
sess = AjaxWebClientSession()
|
||||
sess.client = self
|
||||
sess.init_session("ajax/comet", remote_addr, self.sessionhandler)
|
||||
|
||||
sess.csessid = csessid
|
||||
csession = _CLIENT_SESSIONS(session_key=sess.csessid)
|
||||
uid = csession and csession.get("logged_in", False)
|
||||
uid = csession and csession.get("webclient_authenticated_uid", False)
|
||||
if uid:
|
||||
# the client session is already logged in
|
||||
sess.uid = uid
|
||||
|
|
@ -292,14 +292,26 @@ class WebClient(resource.Resource):
|
|||
# web client interface.
|
||||
#
|
||||
|
||||
class WebClientSession(session.Session):
|
||||
class AjaxWebClientSession(session.Session):
|
||||
"""
|
||||
This represents a session running in a webclient.
|
||||
This represents a session running in an AjaxWebclient.
|
||||
"""
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.protocol_name = "ajax/comet"
|
||||
super(WebClientSession, self).__init__(*args, **kwargs)
|
||||
super(AjaxWebClientSession, self).__init__(*args, **kwargs)
|
||||
|
||||
def get_client_session(self):
|
||||
"""
|
||||
Get the Client browser session (used for auto-login based on browser session)
|
||||
|
||||
Returns:
|
||||
csession (ClientSession): This is a django-specific internal representation
|
||||
of the browser session.
|
||||
|
||||
"""
|
||||
if self.csessid:
|
||||
return _CLIENT_SESSIONS(session_key=self.csessid)
|
||||
|
||||
def disconnect(self, reason="Server disconnected."):
|
||||
"""
|
||||
|
|
@ -308,10 +320,22 @@ class WebClientSession(session.Session):
|
|||
Args:
|
||||
reason (str): Motivation for the disconnect.
|
||||
"""
|
||||
csession = self.get_client_session()
|
||||
|
||||
if csession:
|
||||
csession["webclient_authenticated_uid"] = None
|
||||
csession.save()
|
||||
self.logged_in = False
|
||||
self.client.lineSend(self.csessid, ["connection_close", [reason], {}])
|
||||
self.client.client_disconnect(self.csessid)
|
||||
self.sessionhandler.disconnect(self)
|
||||
|
||||
def at_login(self):
|
||||
csession = self.get_client_session()
|
||||
if csession:
|
||||
csession["webclient_authenticated_uid"] = self.uid
|
||||
csession.save()
|
||||
|
||||
def data_out(self, **kwargs):
|
||||
"""
|
||||
Data Evennia -> User
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue