Force users to authenticate in Playnite plugin. More graceful handling of validating connections.

This commit is contained in:
Pat Hartl 2023-03-17 02:07:25 -05:00
parent 55ab125c80
commit b7f4141175
3 changed files with 18 additions and 17 deletions

View file

@ -35,6 +35,11 @@ namespace LANCommander.PlaynitePlugin
public override void Install(InstallActionArgs args)
{
while (!Plugin.ValidateConnection())
{
Plugin.ShowAuthenticationWindow();
}
var gameId = Guid.Parse(Game.GameId);
var game = Plugin.LANCommander.GetGame(gameId);

View file

@ -131,9 +131,15 @@ namespace LANCommander.PlaynitePlugin
public bool ValidateToken(AuthToken token)
{
if (token == null)
return false;
var request = new RestRequest("/api/Auth/Validate")
.AddHeader("Authorization", $"Bearer {token.AccessToken}");
if (String.IsNullOrEmpty(token.AccessToken) || String.IsNullOrEmpty(token.RefreshToken))
return false;
var response = Client.Post(request);
return response.StatusCode == HttpStatusCode.OK;

View file

@ -61,28 +61,18 @@ namespace LANCommander.PlaynitePlugin
}
}
public bool ValidateConnection()
{
return LANCommander.ValidateToken(LANCommander.Token);
}
public override IEnumerable<GameMetadata> GetGames(LibraryGetGamesArgs args)
{
var gameMetadata = new List<GameMetadata>();
if (LANCommander.Token == null || !LANCommander.ValidateToken(LANCommander.Token))
while (!ValidateConnection())
{
try
{
var response = LANCommander.RefreshToken(LANCommander.Token);
LANCommander.Token.AccessToken = response.AccessToken;
LANCommander.Token.RefreshToken = response.RefreshToken;
if (!LANCommander.ValidateToken(LANCommander.Token))
{
throw new Exception();
}
}
catch
{
ShowAuthenticationWindow();
}
ShowAuthenticationWindow();
}
try