|
@@ -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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|