|
@@ -1509,35 +1509,20 @@ namespace Emby.Server.Implementations.Session
|
|
new DeviceQuery
|
|
new DeviceQuery
|
|
{
|
|
{
|
|
DeviceId = deviceId,
|
|
DeviceId = deviceId,
|
|
- UserId = user.Id,
|
|
|
|
- Limit = 1
|
|
|
|
- }).ConfigureAwait(false)).Items.FirstOrDefault();
|
|
|
|
-
|
|
|
|
- var allExistingForDevice = (await _deviceManager.GetDevices(
|
|
|
|
- new DeviceQuery
|
|
|
|
- {
|
|
|
|
- DeviceId = deviceId
|
|
|
|
|
|
+ UserId = user.Id
|
|
}).ConfigureAwait(false)).Items;
|
|
}).ConfigureAwait(false)).Items;
|
|
|
|
|
|
- foreach (var auth in allExistingForDevice)
|
|
|
|
|
|
+ foreach (var auth in existing)
|
|
{
|
|
{
|
|
- if (existing is null || !string.Equals(auth.AccessToken, existing.AccessToken, StringComparison.Ordinal))
|
|
|
|
|
|
+ try
|
|
{
|
|
{
|
|
- try
|
|
|
|
- {
|
|
|
|
- await Logout(auth).ConfigureAwait(false);
|
|
|
|
- }
|
|
|
|
- catch (Exception ex)
|
|
|
|
- {
|
|
|
|
- _logger.LogError(ex, "Error while logging out.");
|
|
|
|
- }
|
|
|
|
|
|
+ // Logout any existing sessions for the user on this device
|
|
|
|
+ await Logout(auth).ConfigureAwait(false);
|
|
|
|
+ }
|
|
|
|
+ catch (Exception ex)
|
|
|
|
+ {
|
|
|
|
+ _logger.LogError(ex, "Error while logging out existing session.");
|
|
}
|
|
}
|
|
- }
|
|
|
|
-
|
|
|
|
- if (existing is not null)
|
|
|
|
- {
|
|
|
|
- _logger.LogInformation("Reissuing access token: {Token}", existing.AccessToken);
|
|
|
|
- return existing.AccessToken;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
_logger.LogInformation("Creating new access token for user {0}", user.Id);
|
|
_logger.LogInformation("Creating new access token for user {0}", user.Id);
|