Fix first time guest logins failing

This commit is contained in:
JonnyWong16 2016-05-01 20:52:36 -07:00
parent b6461f4f9e
commit a1821fabf9
2 changed files with 31 additions and 41 deletions

View file

@ -267,6 +267,7 @@ class Users(object):
'do_notify': 0, 'do_notify': 0,
'keep_history': 1, 'keep_history': 1,
'allow_guest': 0, 'allow_guest': 0,
'deleted_user': 0,
'shared_libraries': () 'shared_libraries': ()
} }

View file

@ -38,8 +38,6 @@ def user_login(username=None, password=None):
if not username and not password: if not username and not password:
return None return None
user_data = Users()
# Try to login to Plex.tv to check if the user has a vaild account # Try to login to Plex.tv to check if the user has a vaild account
plex_tv = PlexTV(username=username, password=password) plex_tv = PlexTV(username=username, password=password)
plex_user = plex_tv.get_token() plex_user = plex_tv.get_token()
@ -47,25 +45,19 @@ def user_login(username=None, password=None):
user_token = plex_user['auth_token'] user_token = plex_user['auth_token']
user_id = plex_user['user_id'] user_id = plex_user['user_id']
# Retrieve user token from the database and check against the Plex.tv token. # Try to retrieve the user from the database.
# Also Make sure 'allow_guest' access is enabled for the user. # Also make sure guest access is enabled for the user and the user is not deleted.
# The user tokens should match if it is the same PlexPy install. user_data = Users()
tokens = user_data.get_tokens(user_id=user_id)
if not tokens:
# The user is not in the database
return None
elif not tokens['allow_guest'] or not user_token == tokens['user_token']:
# Guest access is disabled, or user tokens don't match
return None
# Otherwise it is a new user or token is no longer valid.
# Check if the user is in the database, not deleted, and 'allow_guest' access.
user_details = user_data.get_details(user_id=user_id) user_details = user_data.get_details(user_id=user_id)
if user_id == str(user_details['user_id']) and \ if user_id != str(user_details['user_id']):
not user_details['deleted_user'] and user_details['allow_guest']: # The user is not in the database.
return None
elif not user_details['allow_guest'] or user_details['deleted_user']:
# Guest access is disabled or the user is deleted.
return None
# The user is in the database, so try to retrieve a new server token. # The user is in the database, and guest access is enabled, so try to retrieve a server token.
# If a server token is returned, then the user is a valid friend # If a server token is returned, then the user is a valid friend of the server.
plex_tv = PlexTV(token=user_token) plex_tv = PlexTV(token=user_token)
server_token = plex_tv.get_server_token() server_token = plex_tv.get_server_token()
if server_token: if server_token:
@ -78,7 +70,7 @@ def user_login(username=None, password=None):
[user_token, server_token, user_id]) [user_token, server_token, user_id])
if result: if result:
# Refresh the users list to make sure we have all the correct permissions # Refresh the users list to make sure we have all the correct permissions.
plextv.refresh_users() plextv.refresh_users()
# Successful login # Successful login
return True return True
@ -91,9 +83,6 @@ def user_login(username=None, password=None):
else: else:
logger.warn(u"PlexPy Users :: Unable to retrieve Plex.tv server token for user '%s'." % username) logger.warn(u"PlexPy Users :: Unable to retrieve Plex.tv server token for user '%s'." % username)
return None return None
else:
logger.warn(u"PlexPy Users :: Unable to register user '%s'. User not in the database." % username)
return None
else: else:
logger.warn(u"PlexPy Users :: Unable to retrieve Plex.tv user token for user '%s'." % username) logger.warn(u"PlexPy Users :: Unable to retrieve Plex.tv user token for user '%s'." % username)
return None return None