aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-12 13:46:25 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-12 13:46:25 -0400
commit7763b51623ba5a8d711101ba76e4871ceec54a76 (patch)
tree2534ff7b54f6ca336b395b5c1bab09149c88e307
parentcce120d8d325a9186d4e79efdf7009ad72638e81 (diff)
update authorization refreshing
-rw-r--r--MediaBrowser.Server.Implementations/Connect/ConnectManager.cs38
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);
+ }
+ }
+ }
+ }
+
+
}
}
}