Force users to authenticate in Playnite plugin. More graceful handling of validating connections.
This commit is contained in:
parent
55ab125c80
commit
b7f4141175
3 changed files with 18 additions and 17 deletions
|
@ -35,6 +35,11 @@ namespace LANCommander.PlaynitePlugin
|
||||||
|
|
||||||
public override void Install(InstallActionArgs args)
|
public override void Install(InstallActionArgs args)
|
||||||
{
|
{
|
||||||
|
while (!Plugin.ValidateConnection())
|
||||||
|
{
|
||||||
|
Plugin.ShowAuthenticationWindow();
|
||||||
|
}
|
||||||
|
|
||||||
var gameId = Guid.Parse(Game.GameId);
|
var gameId = Guid.Parse(Game.GameId);
|
||||||
|
|
||||||
var game = Plugin.LANCommander.GetGame(gameId);
|
var game = Plugin.LANCommander.GetGame(gameId);
|
||||||
|
|
|
@ -131,9 +131,15 @@ namespace LANCommander.PlaynitePlugin
|
||||||
|
|
||||||
public bool ValidateToken(AuthToken token)
|
public bool ValidateToken(AuthToken token)
|
||||||
{
|
{
|
||||||
|
if (token == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
var request = new RestRequest("/api/Auth/Validate")
|
var request = new RestRequest("/api/Auth/Validate")
|
||||||
.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
.AddHeader("Authorization", $"Bearer {token.AccessToken}");
|
||||||
|
|
||||||
|
if (String.IsNullOrEmpty(token.AccessToken) || String.IsNullOrEmpty(token.RefreshToken))
|
||||||
|
return false;
|
||||||
|
|
||||||
var response = Client.Post(request);
|
var response = Client.Post(request);
|
||||||
|
|
||||||
return response.StatusCode == HttpStatusCode.OK;
|
return response.StatusCode == HttpStatusCode.OK;
|
||||||
|
|
|
@ -61,28 +61,18 @@ namespace LANCommander.PlaynitePlugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool ValidateConnection()
|
||||||
|
{
|
||||||
|
return LANCommander.ValidateToken(LANCommander.Token);
|
||||||
|
}
|
||||||
|
|
||||||
public override IEnumerable<GameMetadata> GetGames(LibraryGetGamesArgs args)
|
public override IEnumerable<GameMetadata> GetGames(LibraryGetGamesArgs args)
|
||||||
{
|
{
|
||||||
var gameMetadata = new List<GameMetadata>();
|
var gameMetadata = new List<GameMetadata>();
|
||||||
|
|
||||||
if (LANCommander.Token == null || !LANCommander.ValidateToken(LANCommander.Token))
|
while (!ValidateConnection())
|
||||||
{
|
{
|
||||||
try
|
ShowAuthenticationWindow();
|
||||||
{
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
Loading…
Add table
Reference in a new issue