Added re-authentication after expiry to jf_api

This commit is contained in:
Harvey Tindall 2020-04-26 19:44:31 +01:00
parent 5b767da91f
commit 3499843878
2 changed files with 18 additions and 5 deletions

View File

@ -36,9 +36,9 @@ class Jellyfin:
"X-Emby-Authorization": self.auth "X-Emby-Authorization": self.auth
} }
def getUsers(self, username="all", id="all", public=True): def getUsers(self, username="all", id="all", public=True):
if public: if public is True:
response = requests.get(self.server+"/emby/Users/Public").json() response = requests.get(self.server+"/emby/Users/Public").json()
else: elif public is False and hasattr(self, 'username') and hasattr(self, 'password'):
response = requests.get(self.server+"/emby/Users", response = requests.get(self.server+"/emby/Users",
headers=self.header, headers=self.header,
params={'Username': self.username, params={'Username': self.username,
@ -46,7 +46,13 @@ class Jellyfin:
if response.status_code == 200: if response.status_code == 200:
response = response.json() response = response.json()
else: else:
raise self.AuthenticationRequiredError try:
self.authenticate(self.username, self.password)
return self.getUsers(username, id, public)
except self.AuthenticationError:
raise self.AuthenticationRequiredError
else:
raise self.AuthenticationRequiredError
if username == "all" and id == "all": if username == "all" and id == "all":
return response return response
elif id == "all": elif id == "all":
@ -99,7 +105,11 @@ class Jellyfin:
params={'Name': username, params={'Name': username,
'Password': password}) 'Password': password})
if response.status_code == 401: if response.status_code == 401:
raise self.AuthenticationRequiredError if hasattr(self, 'username') and hasattr(self, 'password'):
self.authenticate(self.username, self.password)
return self.newUser(username, password)
else:
raise self.AuthenticationRequiredError
return response return response
# template user's policies should be copied to each new account. # template user's policies should be copied to each new account.

View File

@ -68,7 +68,10 @@ auth = HTTPBasicAuth()
accounts = {} accounts = {}
if not config.getboolean('ui', 'jellyfin_login'): if config.getboolean('ui', 'jellyfin_login'):
log.debug('Using jellyfin for admin authentication')
else:
log.debug('Using configured login details for admin authentication')
accounts['adminAccount'] = Account(config['ui']['username'], accounts['adminAccount'] = Account(config['ui']['username'],
config['ui']['password']) config['ui']['password'])