Merge pull request #1271 from croneter/fix-users
Fix PKC suddenly using main Plex user's credentials, e.g. when the PMS address changed
This commit is contained in:
commit
73955357e1
6 changed files with 13 additions and 32 deletions
|
@ -14,6 +14,8 @@ class Account(object):
|
||||||
self.plex_username = None
|
self.plex_username = None
|
||||||
self.plex_user_id = None
|
self.plex_user_id = None
|
||||||
self.plex_token = None
|
self.plex_token = None
|
||||||
|
# Personal access token per specific user and PMS
|
||||||
|
# As a rule of thumb, always use this token!
|
||||||
self.pms_token = None
|
self.pms_token = None
|
||||||
self.avatar = None
|
self.avatar = None
|
||||||
self.myplexlogin = None
|
self.myplexlogin = None
|
||||||
|
|
|
@ -280,7 +280,6 @@ class InitialSetup(object):
|
||||||
}
|
}
|
||||||
or None if unsuccessful
|
or None if unsuccessful
|
||||||
"""
|
"""
|
||||||
server = None
|
|
||||||
# If no server is set, let user choose one
|
# If no server is set, let user choose one
|
||||||
if not app.CONN.server or not app.CONN.machine_identifier:
|
if not app.CONN.server or not app.CONN.machine_identifier:
|
||||||
showDialog = True
|
showDialog = True
|
||||||
|
@ -428,7 +427,6 @@ class InitialSetup(object):
|
||||||
utils.settings('plex_servername', server['name'])
|
utils.settings('plex_servername', server['name'])
|
||||||
utils.settings('plex_serverowned',
|
utils.settings('plex_serverowned',
|
||||||
'true' if server['owned'] else 'false')
|
'true' if server['owned'] else 'false')
|
||||||
utils.settings('accessToken', server['token'])
|
|
||||||
# Careful to distinguish local from remote PMS
|
# Careful to distinguish local from remote PMS
|
||||||
if server['local']:
|
if server['local']:
|
||||||
scheme = server['scheme']
|
scheme = server['scheme']
|
||||||
|
|
|
@ -157,7 +157,7 @@ def check_connection(url, token=None, verifySSL=None):
|
||||||
def discover_pms(token=None):
|
def discover_pms(token=None):
|
||||||
"""
|
"""
|
||||||
Optional parameter:
|
Optional parameter:
|
||||||
token token for plex.tv
|
token token for plex.tv - WARNING: for the main Plex user only!
|
||||||
|
|
||||||
Returns a list of available PMS to connect to, one entry is the dict:
|
Returns a list of available PMS to connect to, one entry is the dict:
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,18 +34,6 @@ class HomeUser(utils.AttributeDict):
|
||||||
return self.restricted == '1'
|
return self.restricted == '1'
|
||||||
|
|
||||||
|
|
||||||
def homeuser_to_settings(user):
|
|
||||||
"""
|
|
||||||
Writes one HomeUser to the Kodi settings file
|
|
||||||
"""
|
|
||||||
utils.settings('myplexlogin', 'true')
|
|
||||||
utils.settings('plexLogin', user.title)
|
|
||||||
utils.settings('plexToken', user.authToken)
|
|
||||||
utils.settings('plexid', user.id)
|
|
||||||
utils.settings('plexAvatar', user.thumb)
|
|
||||||
utils.settings('plex_status', value=utils.lang(39227))
|
|
||||||
|
|
||||||
|
|
||||||
def switch_home_user(userid, pin, token, machine_identifier):
|
def switch_home_user(userid, pin, token, machine_identifier):
|
||||||
"""
|
"""
|
||||||
Retrieves Plex home token for a Plex home user. Returns None if this fails
|
Retrieves Plex home token for a Plex home user. Returns None if this fails
|
||||||
|
@ -58,8 +46,6 @@ def switch_home_user(userid, pin, token, machine_identifier):
|
||||||
Output:
|
Output:
|
||||||
usertoken Might be empty strings if no token found
|
usertoken Might be empty strings if no token found
|
||||||
for the machine_identifier that was chosen
|
for the machine_identifier that was chosen
|
||||||
|
|
||||||
utils.settings('userid') and utils.settings('username') with new plex token
|
|
||||||
"""
|
"""
|
||||||
LOG.info('Switching to user %s', userid)
|
LOG.info('Switching to user %s', userid)
|
||||||
url = 'https://plex.tv/api/home/users/%s/switch' % userid
|
url = 'https://plex.tv/api/home/users/%s/switch' % userid
|
||||||
|
@ -78,16 +64,6 @@ def switch_home_user(userid, pin, token, machine_identifier):
|
||||||
username = xml.get('title', '')
|
username = xml.get('title', '')
|
||||||
token = xml.get('authenticationToken', '')
|
token = xml.get('authenticationToken', '')
|
||||||
|
|
||||||
# Write to settings file
|
|
||||||
utils.settings('username', username)
|
|
||||||
utils.settings('accessToken', token)
|
|
||||||
utils.settings('userid', xml.get('id', ''))
|
|
||||||
utils.settings('plex_restricteduser',
|
|
||||||
'true' if xml.get('restricted', '0') == '1'
|
|
||||||
else 'false')
|
|
||||||
app.CONN.restricted_user = True if \
|
|
||||||
xml.get('restricted', '0') == '1' else False
|
|
||||||
|
|
||||||
# Get final token to the PMS we've chosen
|
# Get final token to the PMS we've chosen
|
||||||
url = 'https://plex.tv/api/resources?includeHttps=1'
|
url = 'https://plex.tv/api/resources?includeHttps=1'
|
||||||
xml = DU().downloadUrl(url,
|
xml = DU().downloadUrl(url,
|
||||||
|
@ -100,15 +76,14 @@ def switch_home_user(userid, pin, token, machine_identifier):
|
||||||
# Set to empty iterable list for loop
|
# Set to empty iterable list for loop
|
||||||
xml = []
|
xml = []
|
||||||
|
|
||||||
found = 0
|
|
||||||
LOG.debug('Our machine_identifier is %s', machine_identifier)
|
LOG.debug('Our machine_identifier is %s', machine_identifier)
|
||||||
for device in xml:
|
for device in xml:
|
||||||
identifier = device.attrib.get('clientIdentifier')
|
identifier = device.attrib.get('clientIdentifier')
|
||||||
LOG.debug('Found the Plex clientIdentifier: %s', identifier)
|
LOG.debug('Found the Plex clientIdentifier: %s', identifier)
|
||||||
if identifier == machine_identifier:
|
if identifier == machine_identifier:
|
||||||
found += 1
|
|
||||||
token = device.attrib.get('accessToken')
|
token = device.attrib.get('accessToken')
|
||||||
if found == 0:
|
break
|
||||||
|
else:
|
||||||
LOG.info('No tokens found for your server! Using empty string')
|
LOG.info('No tokens found for your server! Using empty string')
|
||||||
token = ''
|
token = ''
|
||||||
LOG.info('Plex.tv switch HomeUser change successfull for user %s',
|
LOG.info('Plex.tv switch HomeUser change successfull for user %s',
|
||||||
|
@ -231,7 +206,11 @@ def sign_in_with_pin():
|
||||||
if xml is None:
|
if xml is None:
|
||||||
return
|
return
|
||||||
user = HomeUser(xml.attrib)
|
user = HomeUser(xml.attrib)
|
||||||
homeuser_to_settings(user)
|
utils.settings('myplexlogin', 'true')
|
||||||
|
utils.settings('plex_status', value=utils.lang(39227))
|
||||||
|
utils.settings('plexLogin', user.title)
|
||||||
|
utils.settings('plexid', user.id)
|
||||||
|
utils.settings('plexToken', user.authToken)
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -414,8 +414,11 @@ class Service(object):
|
||||||
utils.settings('username', value=username)
|
utils.settings('username', value=username)
|
||||||
utils.settings('userid', value=user_id)
|
utils.settings('userid', value=user_id)
|
||||||
utils.settings('accessToken', value=token)
|
utils.settings('accessToken', value=token)
|
||||||
|
utils.settings('plex_restricteduser',
|
||||||
|
'true' if user.isManaged else 'false')
|
||||||
app.ACCOUNT.load()
|
app.ACCOUNT.load()
|
||||||
app.ACCOUNT.set_authenticated()
|
app.ACCOUNT.set_authenticated()
|
||||||
|
app.CONN.restricted_user = user.isManaged
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def ServiceEntryPoint(self):
|
def ServiceEntryPoint(self):
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
"""
|
"""
|
||||||
:module: plexkodiconnect.userselect
|
|
||||||
:synopsis: Prompts the user to add network paths and username passwords for
|
:synopsis: Prompts the user to add network paths and username passwords for
|
||||||
e.g. smb paths
|
e.g. smb paths
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue