Re-add support for API keys

This commit is contained in:
Patrick Barron
2021-06-18 18:26:58 -04:00
parent 0292936c65
commit 336ba2879f
6 changed files with 22 additions and 10 deletions

View File

@@ -1,6 +1,4 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Jellyfin.Data.Entities.Security;
@@ -43,7 +41,7 @@ namespace Jellyfin.Server.Implementations.Security
.Select(key => new AuthenticationInfo
{
AppName = key.Name,
AccessToken = key.AccessToken.ToString("N", CultureInfo.InvariantCulture),
AccessToken = key.AccessToken,
DateCreated = key.DateCreated,
DeviceId = string.Empty,
DeviceName = string.Empty,
@@ -52,7 +50,7 @@ namespace Jellyfin.Server.Implementations.Security
}
/// <inheritdoc />
public async Task DeleteApiKey(Guid accessToken)
public async Task DeleteApiKey(string accessToken)
{
await using var dbContext = _dbProvider.CreateContext();

View File

@@ -187,6 +187,19 @@ namespace Jellyfin.Server.Implementations.Security
await dbContext.SaveChangesAsync().ConfigureAwait(false);
}
}
else
{
var key = await dbContext.ApiKeys.FirstOrDefaultAsync(apiKey => apiKey.AccessToken == token).ConfigureAwait(false);
if (key != null)
{
authInfo.IsAuthenticated = true;
authInfo.Client = key.Name;
authInfo.Token = key.AccessToken;
authInfo.DeviceId = string.Empty;
authInfo.Device = string.Empty;
authInfo.Version = string.Empty;
}
}
return authInfo;
}