diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-10-12 13:46:25 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-10-12 13:46:25 -0400 |
| commit | 7763b51623ba5a8d711101ba76e4871ceec54a76 (patch) | |
| tree | 2534ff7b54f6ca336b395b5c1bab09149c88e307 | |
| parent | cce120d8d325a9186d4e79efdf7009ad72638e81 (diff) | |
update authorization refreshing
| -rw-r--r-- | MediaBrowser.Server.Implementations/Connect/ConnectManager.cs | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index b3234aae5..9b49c111f 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -471,12 +471,46 @@ namespace MediaBrowser.Server.Implementations.Connect { _logger.ErrorException("Error refreshing server authorizations.", ex); } - } private void RefreshAuthorizations(List<ServerUserAuthorizationResponse> list) { - + // TODO: Handle newly added guests that we don't know about + + var users = _userManager.Users.ToList(); + + // Handle existing authorizations that were removed by the Connect server + // Handle existing authorizations whose status may have been updated + foreach (var user in users) + { + if (!string.IsNullOrWhiteSpace(user.ConnectUserId)) + { + var connectEntry = list.FirstOrDefault(i => string.Equals(i.UserId, user.ConnectUserId, StringComparison.OrdinalIgnoreCase)); + + if (connectEntry == null) + { + user.ConnectUserId = null; + user.ConnectAccessKey = null; + user.ConnectUserName = null; + + _userManager.UpdateUser(user); + } + else + { + var changed = !string.Equals(user.ConnectAccessKey, connectEntry.AccessToken, StringComparison.OrdinalIgnoreCase); + + if (changed) + { + user.ConnectUserId = connectEntry.UserId; + user.ConnectAccessKey = connectEntry.AccessToken; + + _userManager.UpdateUser(user); + } + } + } + } + + } } } |
