First attemtps at fixing the auto-login and making it cleaner.
This commit is contained in:
parent
994e8f6fb0
commit
0ac190b6ea
4 changed files with 89 additions and 36 deletions
|
|
@ -19,25 +19,33 @@ def _shared_login(request):
|
|||
"""
|
||||
csession = request.session
|
||||
account = request.user
|
||||
sesslogin = csession.get("logged_in", None)
|
||||
# these can have 3 values:
|
||||
# None - previously unused (auto-login)
|
||||
# False - actively logged out (don't auto-login)
|
||||
# <uid> - logged in User/Account id
|
||||
website_uid = csession.get("website_authenticated_uid", None)
|
||||
webclient_uid = csession.get("webclient_authenticated_uid", None)
|
||||
|
||||
print("webclient website_uid=%s, webclient_uid=%s, session_key=%s" % (website_uid, webclient_uid, csession.session_key))
|
||||
# check if user has authenticated to website
|
||||
if csession.session_key is None:
|
||||
# this is necessary to build the sessid key
|
||||
print("Webclient created a new browser session key")
|
||||
csession.save()
|
||||
elif account.is_authenticated():
|
||||
if not sesslogin:
|
||||
# User has already authenticated to website
|
||||
csession["logged_in"] = account.id
|
||||
elif sesslogin:
|
||||
|
||||
if webclient_uid:
|
||||
# The webclient has previously registered a login to this browser_session
|
||||
account = AccountDB.objects.get(id=sesslogin)
|
||||
try:
|
||||
# calls our custom authenticate in web/utils/backends.py
|
||||
account = authenticate(autologin=account)
|
||||
login(request, account)
|
||||
except AttributeError:
|
||||
logger.log_trace()
|
||||
if not account.is_authenticated():
|
||||
# not logged into website
|
||||
if website_uid is None:
|
||||
account = AccountDB.objects.get(id=webclient_uid)
|
||||
try:
|
||||
# calls our custom authenticate in web/utils/backends.py
|
||||
account = authenticate(autologin=account)
|
||||
login(request, account)
|
||||
csession["website_authenticated_uid"] = webclient_uid
|
||||
except AttributeError:
|
||||
logger.log_trace()
|
||||
|
||||
|
||||
def webclient(request):
|
||||
|
|
|
|||
|
|
@ -28,23 +28,39 @@ def _shared_login(request):
|
|||
"""
|
||||
csession = request.session
|
||||
account = request.user
|
||||
sesslogin = csession.get("logged_in", None)
|
||||
# these can have 3 values:
|
||||
# None - previously unused (auto-login)
|
||||
# False - actively logged out (don't auto-login)
|
||||
# <uid> - logged in User/Account id
|
||||
website_uid = csession.get("website_authenticated_uid", None)
|
||||
webclient_uid = csession.get("webclient_authenticated_uid", None)
|
||||
print("website website_uid=%s, webclient_uid=%s, session_key=%s" % (website_uid, webclient_uid, csession.session_key))
|
||||
|
||||
if csession.session_key is None:
|
||||
# this is necessary to build the sessid key
|
||||
print("Website created a new browser session key")
|
||||
csession.save()
|
||||
elif account.is_authenticated():
|
||||
if not sesslogin:
|
||||
csession["logged_in"] = account.id
|
||||
elif sesslogin:
|
||||
# The webclient has previously registered a login to this csession
|
||||
account = AccountDB.objects.get(id=sesslogin)
|
||||
try:
|
||||
# calls our custom authenticate, in web/utils/backend.py
|
||||
authenticate(autologin=account)
|
||||
login(request, account)
|
||||
except AttributeError:
|
||||
logger.log_trace()
|
||||
|
||||
if account.is_authenticated():
|
||||
# Logged into website
|
||||
if not website_uid:
|
||||
# fresh website login (just from login page)
|
||||
csession["website_authenticated_uid"] = account.id
|
||||
if webclient_uid is None:
|
||||
# auto-login web client
|
||||
csession["webclient_authenticated_uid"] = account.id
|
||||
|
||||
elif webclient_uid:
|
||||
# Not logged into website, but logged into webclient
|
||||
if not website_uid:
|
||||
csession["website_authenticated_uid"] = account.id
|
||||
account = AccountDB.objects.get(id=webclient_uid)
|
||||
try:
|
||||
# calls our custom authenticate, in web/utils/backend.py
|
||||
authenticate(autologin=account)
|
||||
login(request, account)
|
||||
except AttributeError:
|
||||
logger.log_trace()
|
||||
|
||||
|
||||
def _gamestats():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue