diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index 4e01630a..dc957f90 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -969,20 +969,11 @@
Token for Plex.tv authentication.
+Fetch a new Plex.tv account authentication token.
@@ -1622,7 +1613,7 @@ %def> @@ -2630,12 +2621,9 @@ $(document).ready(function() { }); var select_pms = $select_pms[0].selectize; - function getServerOptions(token) { + function getServerOptions() { $.ajax({ url: 'discover', - data: { - token: token - }, success: function (result) { if (result) { var existing_ip = $('#pms_ip').val(); @@ -2748,16 +2736,16 @@ $(document).ready(function() { }); function OAuthPreFunction() { - $("#token_verify").html('').fadeIn('fast'); + $("#pms-token-status").html(' Waiting for authentication...').fadeIn('fast'); } function OAuthSuccessCallback(authToken) { - $("#pms_token").val(authToken); - $("#token_verify").html('').fadeIn('fast'); - $('#token_error_bar').hide(); + $.post('save_pms_token', { token: authToken }); + $("#pms-token-status").html(' Authentication successful.').fadeIn('fast'); + $("#token_error_bar").hide(); getServerOptions(authToken); } function OAuthErrorCallback() { - $("#token_verify").html('').fadeIn('fast'); + $("#pms-token-status").html(' Error communicating with Plex.tv.').fadeIn('fast'); } $('#sign-in-plex').click(function() { diff --git a/data/interfaces/default/welcome.html b/data/interfaces/default/welcome.html index e85e146a..2c60dc36 100644 --- a/data/interfaces/default/welcome.html +++ b/data/interfaces/default/welcome.html @@ -111,9 +111,9 @@ Tautulli requires a Plex.tv account. Click the button below to sign in on Plex.tv. You may need to allow popups in your browser. - + - Sign In with Plex + @@ -308,7 +308,7 @@ var valid_pms_token = el.val(); var retValue = {}; - if (valid_pms_token === "") { + if (valid_pms_token === 0) { retValue.status = false; retValue.msg = "Please authenticate."; $("#pms-token-status").html(' Please authenticate.'); @@ -477,13 +477,9 @@ $(document).ready(function() { }); var select_pms = $select_pms[0].selectize; - function getServerOptions(token) { - /* Set token and returns server options */ + function getServerOptions() { $.ajax({ url: 'discover', - data: { - token: token - }, success: function (result) { if (result) { var existing_ip = $('#pms_ip').val(); @@ -557,11 +553,12 @@ $(document).ready(function() { }); function OAuthPreFunction() { - $("#pms_token").val(''); $("#pms-token-status").html(' Waiting for authentication...').fadeIn('fast'); } function OAuthSuccessCallback(authToken) { - $("#pms_token").val(authToken); + $.post('save_pms_token', { token: authToken }, function () { + $("#pms_token_validated").val(1); + }); $("#pms-token-status").html(' Authentication successful.').fadeIn('fast'); authenticated = true; getServerOptions(authToken); diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 586c5c27..668d2426 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -214,7 +214,6 @@ class WebInterface(object): "pms_is_remote": plexpy.CONFIG.PMS_IS_REMOTE, "pms_ssl": plexpy.CONFIG.PMS_SSL, "pms_is_cloud": plexpy.CONFIG.PMS_IS_CLOUD, - "pms_token": plexpy.CONFIG.PMS_TOKEN, "pms_name": plexpy.CONFIG.PMS_NAME, "logging_ignore_interval": plexpy.CONFIG.LOGGING_IGNORE_INTERVAL } @@ -226,11 +225,19 @@ class WebInterface(object): else: return serve_template(templatename="welcome.html", title="Welcome", config=config) + @cherrypy.expose + @cherrypy.tools.json_out() + @requireAuth(member_of("admin")) + def save_pms_token(self, token=None, **kwargs): + if token is not None: + plexpy.CONFIG.PMS_TOKEN = token + plexpy.CONFIG.write() + @cherrypy.expose @cherrypy.tools.json_out() @requireAuth(member_of("admin")) @addtoapi("get_server_list") - def discover(self, token=None, include_cloud=True, all_servers=True, **kwargs): + def discover(self, include_cloud=True, all_servers=True, **kwargs): """ Get all your servers that are published to Plex.tv. ``` @@ -255,11 +262,6 @@ class WebInterface(object): ] ``` """ - if token: - # Need to set token so result doesn't return http 401 - plexpy.CONFIG.__setattr__('PMS_TOKEN', token) - plexpy.CONFIG.write() - include_cloud = not (include_cloud == 'false') all_servers = not (all_servers == 'false') @@ -3182,7 +3184,6 @@ class WebInterface(object): "pms_ip": plexpy.CONFIG.PMS_IP, "pms_logs_folder": plexpy.CONFIG.PMS_LOGS_FOLDER, "pms_port": plexpy.CONFIG.PMS_PORT, - "pms_token": plexpy.CONFIG.PMS_TOKEN, "pms_ssl": plexpy.CONFIG.PMS_SSL, "pms_is_remote": plexpy.CONFIG.PMS_IS_REMOTE, "pms_is_cloud": plexpy.CONFIG.PMS_IS_CLOUD,