From 97582cef4f1afd9022a56c73ef927faa755b2f89 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 12 Oct 2014 13:52:43 -0400 Subject: [PATCH] refresh authorizations --- .../Connect/ConnectManager.cs | 32 +++++++++++++++---- 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs index 9b49c111fc..12a05c5b5d 100644 --- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs +++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs @@ -464,7 +464,7 @@ namespace MediaBrowser.Server.Implementations.Connect { var list = _json.DeserializeFromStream>(stream); - RefreshAuthorizations(list); + await RefreshAuthorizations(list).ConfigureAwait(false); } } catch (Exception ex) @@ -473,10 +473,8 @@ namespace MediaBrowser.Server.Implementations.Connect } } - private void RefreshAuthorizations(List list) + private async Task RefreshAuthorizations(List 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 @@ -493,7 +491,14 @@ namespace MediaBrowser.Server.Implementations.Connect user.ConnectAccessKey = null; user.ConnectUserName = null; - _userManager.UpdateUser(user); + if (user.ConnectLinkType == UserLinkType.Guest) + { + await _userManager.DeleteUser(user).ConfigureAwait(false); + } + else + { + await _userManager.UpdateUser(user).ConfigureAwait(false); + } } else { @@ -504,13 +509,28 @@ namespace MediaBrowser.Server.Implementations.Connect user.ConnectUserId = connectEntry.UserId; user.ConnectAccessKey = connectEntry.AccessToken; - _userManager.UpdateUser(user); + await _userManager.UpdateUser(user).ConfigureAwait(false); } } } } + users = _userManager.Users.ToList(); + // TODO: Handle newly added guests that we don't know about + foreach (var connectEntry in list) + { + if (string.Equals(connectEntry.UserType, "guest", StringComparison.OrdinalIgnoreCase) && + string.Equals(connectEntry.AcceptStatus, "accepted", StringComparison.OrdinalIgnoreCase)) + { + var user = users.FirstOrDefault(i => string.Equals(i.ConnectUserId, connectEntry.UserId, StringComparison.OrdinalIgnoreCase)); + + if (user == null) + { + // Add user + } + } + } } } }