diff --git a/data/interfaces/default/history.html b/data/interfaces/default/history.html index 3dd92650..c34cf652 100644 --- a/data/interfaces/default/history.html +++ b/data/interfaces/default/history.html @@ -163,7 +163,7 @@ } var media_type = null; - var selected_user_id = "${_session['user_id']}" == "None" ? null : "${_session['user_id']}"; + var selected_user_id = "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}"; loadHistoryTable(media_type, selected_user_id); % if _session['user_group'] == 'admin': diff --git a/data/interfaces/default/info.html b/data/interfaces/default/info.html index ef653a47..93632bcc 100644 --- a/data/interfaces/default/info.html +++ b/data/interfaces/default/info.html @@ -552,7 +552,7 @@ DOCUMENTATION :: END return { json_data: JSON.stringify( d ), grandparent_rating_key: "${data['rating_key']}", - user_id: "${_session['user_id']}" == "None" ? null : "${_session['user_id']}" + user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}" }; } } @@ -568,7 +568,7 @@ DOCUMENTATION :: END return { json_data: JSON.stringify( d ), parent_rating_key: "${data['rating_key']}", - user_id: "${_session['user_id']}" == "None" ? null : "${_session['user_id']}" + user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}" }; } } @@ -584,7 +584,7 @@ DOCUMENTATION :: END return { json_data: JSON.stringify( d ), rating_key: "${data['rating_key']}", - user_id: "${_session['user_id']}" == "None" ? null : "${_session['user_id']}" + user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}" }; } } diff --git a/data/interfaces/default/library.html b/data/interfaces/default/library.html index 97c5ea14..7d2b6481 100644 --- a/data/interfaces/default/library.html +++ b/data/interfaces/default/library.html @@ -379,7 +379,7 @@ DOCUMENTATION :: END return { json_data: JSON.stringify( d ), section_id: section_id, - user_id: "${_session['user_id']}" == "None" ? null : "${_session['user_id']}" + user_id: "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}" }; } }; diff --git a/data/interfaces/default/sync.html b/data/interfaces/default/sync.html index 952e4ca6..3197b01b 100644 --- a/data/interfaces/default/sync.html +++ b/data/interfaces/default/sync.html @@ -134,7 +134,7 @@ }); } - var selected_user_id = "${_session['user_id']}" == "None" ? null : "${_session['user_id']}"; + var selected_user_id = "${_session['user_group']}" == "admin" ? null : "${_session['user_id']}"; loadSyncTable(selected_user_id); % if _session['user_group'] == 'admin': diff --git a/plexpy/session.py b/plexpy/session.py index 4fe0d014..a3c150f1 100644 --- a/plexpy/session.py +++ b/plexpy/session.py @@ -38,14 +38,14 @@ def get_session_user(): Returns the user_id for the current logged in session """ _session = get_session_info() - return _session['user'] if _session and _session['user'] else None + return _session['user'] if _session['user_group'] == 'guest' and _session['user'] else None def get_session_user_id(): """ Returns the user_id for the current logged in session """ _session = get_session_info() - return str(_session['user_id']) if _session and _session['user_id'] else None + return str(_session['user_id']) if _session['user_group'] == 'guest' and _session['user_id'] else None def get_session_shared_libraries(): """ diff --git a/plexpy/webauth.py b/plexpy/webauth.py index 4d3bb5c8..adaef3d7 100644 --- a/plexpy/webauth.py +++ b/plexpy/webauth.py @@ -106,10 +106,10 @@ def check_credentials(username, password, admin_login='0'): if plexpy.CONFIG.HTTP_PASSWORD: if plexpy.CONFIG.HTTP_HASHED_PASSWORD and \ username == plexpy.CONFIG.HTTP_USERNAME and check_hash(password, plexpy.CONFIG.HTTP_PASSWORD): - return True, 'admin' + return True, 'tautulli admin' elif not plexpy.CONFIG.HTTP_HASHED_PASSWORD and \ username == plexpy.CONFIG.HTTP_USERNAME and password == plexpy.CONFIG.HTTP_PASSWORD: - return True, 'admin' + return True, 'tautulli admin' if plexpy.CONFIG.HTTP_PLEX_ADMIN or (not admin_login == '1' and plexpy.CONFIG.ALLOW_GUEST_ACCESS): plex_login = user_login(username, password) @@ -220,7 +220,12 @@ class AuthController(object): # Save login to the database ip_address = cherrypy.request.headers.get('X-Forwarded-For', cherrypy.request.headers.get('Remote-Addr')) - host = cherrypy.request.headers.get('Host', cherrypy.request.headers.get('Origin')) + host = None #cherrypy.request.headers.get('Origin') + if not host: + scheme = cherrypy.request.headers.get('X-Forwarded-Proto', 'http') + address = cherrypy.request.headers.get('X-Forwarded-Host', cherrypy.request.headers.get('Host')) + host = "{}://{}".format(scheme, address) + user_agent = cherrypy.request.headers.get('User-Agent') Users().set_user_login(user_id=user_id, @@ -293,15 +298,16 @@ class AuthController(object): valid_login, user_group = check_credentials(username, password, admin_login) if valid_login: - if user_group == 'guest': + if user_group == 'tautulli admin': + user_group = 'admin' + user_id = None + else: if re.match(r"[^@]+@[^@]+\.[^@]+", username): user_details = Users().get_details(email=username) else: user_details = Users().get_details(user=username) user_id = user_details['user_id'] - else: - user_id = None time_delta = timedelta(days=30) if remember_me == '1' else timedelta(minutes=60) expiry = datetime.utcnow() + time_delta