aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-12 13:52:43 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-12 13:52:43 -0400
commit97582cef4f1afd9022a56c73ef927faa755b2f89 (patch)
tree19b5012bc9a4659103e9b7ca87142e2326cc8ae5
parent7763b51623ba5a8d711101ba76e4871ceec54a76 (diff)
refresh authorizations
-rw-r--r--MediaBrowser.Server.Implementations/Connect/ConnectManager.cs32
1 files changed, 26 insertions, 6 deletions
diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs
index 9b49c111f..12a05c5b5 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<List<ServerUserAuthorizationResponse>>(stream);
- RefreshAuthorizations(list);
+ await RefreshAuthorizations(list).ConfigureAwait(false);
}
}
catch (Exception ex)
@@ -473,10 +473,8 @@ namespace MediaBrowser.Server.Implementations.Connect
}
}
- private void RefreshAuthorizations(List<ServerUserAuthorizationResponse> list)
+ private async Task 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
@@ -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
+ }
+ }
+ }
}
}
}