Browse Source

Fix Plex buttons in main settings, add db pass update if changed

Christopher Johnson 8 years ago
parent
commit
c390f839c2

+ 11 - 1
api/functions/api-functions.php

@@ -50,8 +50,18 @@ function login($array){
             if($result['username']){
                 $userExists = true;
 				$username = $result['username'];
+                $passwordMatches = (password_verify($password, $result['password'])) ? true : false;
             }
 			if ($userExists) {
+                //does org password need to be updated
+                if(!$passwordMatches){
+                    $database->query('
+                    	UPDATE users SET', [
+                    		'password' => password_hash($password, PASSWORD_BCRYPT)
+                    	], '
+                    	WHERE id=?', $result['id']);
+                    writeLog('success', 'Login Function - User Password updated from backend', $username);
+                }
 				// authentication passed - 1) mark active and update token
                 if(createToken($result['username'],$result['email'],$result['image'],$result['group'],$result['group_id'],$GLOBALS['organizrHash'],$days)){
                     writeLoginLog($username, 'success');
@@ -64,7 +74,7 @@ function login($array){
 			} else {
 				// Create User
                 ssoCheck($username, $password, $token);
-                return authRegister($username,$password,'',(is_array($authSuccess) && isset($authSuccess['email']) ? $authSuccess['email'] : ''));
+                return authRegister((is_array($authSuccess) && isset($authSuccess['username']) ? $authSuccess['username'] : $username),$password,'',(is_array($authSuccess) && isset($authSuccess['email']) ? $authSuccess['email'] : ''));
 			}
 		} else {
 			// authentication failed

+ 31 - 0
api/pages/settings-settings-main.php

@@ -14,4 +14,35 @@ $pageSettingsSettingsMain = '
         </div>
     </div>
 </div>
+<form id="auth-plex-token-form" class="mfp-hide white-popup-block mfp-with-anim">
+    <h1 lang="en">Get Plex Token</h1>
+    <div class="panel authPlexTokenHeader">
+        <div class="panel-heading authPlexTokenMessage" lang="en">Enter Plex Details</div>
+    </div>
+    <fieldset style="border:0;">
+        <div class="form-group">
+            <label class="control-label" for="auth-plex-token-form-username" lang="en">Plex Username</label>
+            <input type="text" class="form-control" id="auth-plex-token-form-username" name="username" required="" autofocus>
+        </div>
+        <div class="form-group">
+            <label class="control-label" for="auth-plex-token-form-password" lang="en">Plex Password</label>
+            <input type="password" class="form-control" id="auth-plex-token-form-password" name="password"  required="">
+        </div>
+    </fieldset>
+    <button class="btn btn-sm btn-info btn-rounded waves-effect waves-light pull-right row b-none getauthPlexToken" type="button"><span class="btn-label"><i class="fa fa-ticket"></i></span><span lang="en">Grab It</span></button>
+    <div class="clearfix"></div>
+</form>
+<form id="auth-plex-machine-form" class="mfp-hide white-popup-block mfp-with-anim">
+    <h1 lang="en">Get Plex Machine</h1>
+    <div class="panel authPlexMachineHeader">
+        <div class="panel-heading authPlexMachineMessage" lang="en"></div>
+    </div>
+    <fieldset style="border:0;">
+        <div class="form-group">
+            <label class="control-label" for="auth-plex-machine-form-machine" lang="en">Plex Machine</label>
+            <div class="authPlexMachineListing"></div>
+        </div>
+    </fieldset>
+    <div class="clearfix"></div>
+</form>
 ';

+ 1 - 1
api/pages/settings-settings-sso.php

@@ -25,7 +25,7 @@ $pageSettingsSettingsSSO = '
             <input type="text" class="form-control" id="sso-plex-token-form-username" name="username" required="" autofocus>
         </div>
         <div class="form-group">
-            <label class="control-label" for="nsso-plex-token-form-password" lang="en">Plex Password</label>
+            <label class="control-label" for="sso-plex-token-form-password" lang="en">Plex Password</label>
             <input type="password" class="form-control" id="sso-plex-token-form-password" name="password"  required="">
         </div>
     </fieldset>

+ 0 - 5
bootstrap/CHANGELOG.md

@@ -1,5 +0,0 @@
-Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs.
-
-See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
-
-Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.

+ 86 - 0
js/custom.js

@@ -1246,6 +1246,92 @@ $(document).on('change', '#ssoPlexMachineSelector', function(e) {
     $('#sso-form [name=plexID]').val($(this).val());
     $('#sso-form [name=plexID]').change();
 });
+$(document).on("click", ".getauthPlexToken", function () {
+    $('.authPlexTokenMessage').text("Grabbing Token");
+    $('.authPlexTokenHeader').addClass('panel-info').removeClass('panel-warning').removeClass('panel-danger');
+    var plex_username = $('#auth-plex-token-form [name=username]').val().trim();
+    var plex_password = $('#auth-plex-token-form [name=password]').val().trim();
+    if ((plex_password !== '') && (plex_password !== '')) {
+        $.ajax({
+            type: 'POST',
+            headers: {
+                'X-Plex-Product':'Organizr',
+                'X-Plex-Version':'2.0',
+                'X-Plex-Client-Identifier':'01010101-10101010'
+            },
+            url: 'https://plex.tv/users/sign_in.json',
+            data: {
+                'user[login]': plex_username,
+                'user[password]': plex_password,
+                force: true
+            },
+            cache: false,
+            async: true,
+            complete: function(xhr, status) {
+                var result = $.parseJSON(xhr.responseText);
+                if (xhr.status === 201) {
+                    $('.authPlexTokenMessage').text(xhr.statusText);
+                    $('.authPlexTokenHeader').addClass('panel-success').removeClass('panel-info').removeClass('panel-warning').removeClass('panel-danger');
+                    $('#settings-main-form [name=plexToken]').val(result.user.authToken);
+                    $('#settings-main-form [name=plexToken]').change();
+                } else {
+                    $('.authPlexTokenMessage').text(xhr.statusText);
+                    $('.authPlexTokenHeader').addClass('panel-danger').removeClass('panel-info').removeClass('panel-warning');
+                }
+            }
+        });
+    } else {
+        $('.authPlexTokenMessage').text("Enter Username and Password");
+        $('.authPlexTokenHeader').addClass('panel-warning').removeClass('panel-info').removeClass('panel-danger');
+    }
+});
+$(document).on("click", ".getPlexMachineAuth", function () {
+    var plex_token = $('#settings-main-form [name=plexToken]').val().trim();
+    if (plex_token !== '') {
+        $('.authPlexMachineMessage').text("Grabbing List");
+        $('.authPlexMachineHeader').addClass('panel-info').removeClass('panel-warning').removeClass('panel-danger');
+        $.ajax({
+            type: 'GET',
+            headers: {
+                'X-Plex-Product':'Organizr',
+                'X-Plex-Version':'2.0',
+                'X-Plex-Client-Identifier':'01010101-10101010',
+                'X-Plex-Token':plex_token,
+            },
+            url: 'https://plex.tv/pms/servers.xml',
+            cache: false,
+            async: true,
+            complete: function(xhr, status) {
+                var result = $.parseXML(xhr.responseText);
+                if (xhr.status === 200) {
+                    $('.authPlexMachineMessage').text('Choose Plex Server');
+                    $('.authPlexMachineHeader').addClass('panel-success').removeClass('panel-info').removeClass('panel-warning');
+                    var machines = '<option lang="en">Choose Plex Machine</option>';
+                    $('Server', result).each(function(){
+                        if($(this).attr('owned') == 1){
+                            var name = $(this).attr('name');
+                            var machine = $(this).attr('machineIdentifier');
+                            machines += '<option value="'+machine+'">'+name+'</option>';
+                        }
+                    })
+                    var listing = `<select class="form-control" id="authPlexMachineSelector" data-type="select">`+machines+`</select>`;
+                    $('.authPlexMachineListing').html(listing);
+                } else {
+                    $('.authPlexTokenMessage').text(xhr.statusText);
+                    $('.authPlexTokenHeader').addClass('panel-danger').removeClass('panel-info').removeClass('panel-warning');
+                }
+            }
+        });
+    } else {
+        $('.authPlexMachineMessage').text("Plex Token Needed");
+        $('.authPlexMachineHeader').addClass('panel-warning').removeClass('panel-info').removeClass('panel-danger');
+    }
+});
+$(document).on('change', '#authPlexMachineSelector', function(e) {
+    $('#settings-main-form [name=plexID]').val($(this).val());
+    $('#settings-main-form [name=plexID]').change();
+});
+
 $(document).on("click", ".closeErrorPage", function () {
     $('.error-page').html('');
     $('.error-page').fadeOut();