Merge pull request #204 from mcarlton00/user-switching

Fix user switching
This commit is contained in:
mcarlton00
2022-08-07 15:24:02 -04:00
committed by GitHub
3 changed files with 18 additions and 8 deletions

View File

@@ -78,6 +78,8 @@ class API:
requests.delete(url, headers=self.headers, verify=self.verify_cert)
def authenticate(self, auth_data):
# Always force create fresh headers during authentication
self.create_headers(True)
response = self.post('/Users/AuthenticateByName', auth_data)
token = response.get('AccessToken')
if token:
@@ -90,10 +92,10 @@ class API:
log.error('Unable to authenticate to Jellyfin server')
return {}
def create_headers(self):
def create_headers(self, force=False):
# If the headers already exist with an auth token, return
if self.headers and 'x-mediabrowser-token' in self.headers:
# If the headers already exist with an auth token, return unless we're regenerating
if self.headers and 'x-mediabrowser-token' in self.headers and force is False:
return
headers = {}
@@ -116,8 +118,8 @@ class API:
headers['x-emby-authorization'] = authorization
# If we have a valid token, ensure it's included in the headers
if self.token:
# If we have a valid token, ensure it's included in the headers unless we're regenerating
if self.token and force is False:
headers['x-mediabrowser-token'] = self.token
else:
# Check for updated credentials since initialization

View File

@@ -203,6 +203,8 @@ def check_server(force=False, change_user=False, notify=False):
# do we need to change the user
current_username = settings.getSetting('username')
user_details = load_user_details()
home_window = HomeWindow()
home_window.set_property('user_name', current_username)
# if asked or we have no current user then show user selection screen
if something_changed or change_user or len(current_username) == 0 or not user_details:
@@ -228,8 +230,6 @@ def check_server(force=False, change_user=False, notify=False):
secured = selected_user.getProperty("secure") == "true"
manual = selected_user.getProperty("manual") == "true"
home_window = HomeWindow()
# If using a manual login, ask for username
if manual:
kb = xbmc.Keyboard()
@@ -244,6 +244,7 @@ def check_server(force=False, change_user=False, notify=False):
return
home_window.set_property('user_name', selected_user_name)
settings.setSetting('username', selected_user_name)
user_details = load_user_details()
if not user_details:

View File

@@ -143,7 +143,10 @@ def translate_string(string_id):
def get_device_id():
window = HomeWindow()
username = window.get_property('username')
username = window.get_property('user_name')
if not username:
settings = xbmcaddon.Addon()
username = settings.getSetting('username')
client_id = window.get_property("client_id")
hashed_name = hashlib.md5(username.encode()).hexdigest()
@@ -226,6 +229,10 @@ def load_user_details():
return {}
user_data = auth_data.get(user_name, {})
# User doesn't exist yet
if not user_data:
return {}
user_id = user_data.get('user_id')
auth_token = user_data.get('token')