diff --git a/QtCNETAPI/QtCNETAPI.csproj b/QtCNETAPI/QtCNETAPI.csproj
index 0edb883..9ee6acb 100644
--- a/QtCNETAPI/QtCNETAPI.csproj
+++ b/QtCNETAPI/QtCNETAPI.csproj
@@ -7,10 +7,11 @@
+
-
+
-
+
diff --git a/QtCNETAPI/Services/ApiService/ApiService.cs b/QtCNETAPI/Services/ApiService/ApiService.cs
index 67a2cb3..f13bc6d 100644
--- a/QtCNETAPI/Services/ApiService/ApiService.cs
+++ b/QtCNETAPI/Services/ApiService/ApiService.cs
@@ -15,6 +15,8 @@ namespace QtCNETAPI.Services.ApiService
private RestClient _client;
private LoggingService _loggingService;
+ private CredentialService _credService = new();
+
internal string? sessionToken;
internal string apiUri;
@@ -411,21 +413,23 @@ namespace QtCNETAPI.Services.ApiService
public async Task> RefreshSessionIfInvalid()
{
var tokenHandler = new JwtSecurityTokenHandler();
- var refToken = await File.ReadAllTextAsync("./session.token");
+ var refToken = _credService.GetAccessToken(); // fuck CA1416, if this is being ran on linux it should just crash (theoretically)
+
+ if (refToken == null)
+ {
+ // treat as session expired
+ return new ServiceResponse { Success = false, Message = "Refresh Token Not Found. Session Expired." };
+ }
JwtSecurityToken token = tokenHandler.ReadJwtToken(SessionToken);
if(DateTime.Compare(DateTime.UtcNow, token.ValidTo) > 0)
{
- if (!File.Exists("./session.token")) { return new ServiceResponse { Success = false, Message = "Session File Not Found. Session Expired." }; }
-
var result = await RefreshLogin(refToken);
if (result == null || result.Success == false)
{
- File.Delete("./session.token");
-
- return new ServiceResponse { Success = false, Message = "Session Expired." };
+ return new ServiceResponse { Success = false, Message = "Session Expired." }; // logging in again should overwrite old token
} else return new ServiceResponse { Success = true, Data = refToken };
} else return new ServiceResponse { Success = true, Data = refToken };
}
diff --git a/QtCNETAPI/Services/CredentialService.cs b/QtCNETAPI/Services/CredentialService.cs
new file mode 100644
index 0000000..e89c636
--- /dev/null
+++ b/QtCNETAPI/Services/CredentialService.cs
@@ -0,0 +1,26 @@
+using Meziantou.Framework.Win32;
+
+namespace QtCNETAPI.Services
+{
+ public class CredentialService()
+ {
+ public void SaveAccessToken(string username, string accessToken)
+ {
+ string applicationName = "QtC.NET";
+ if (System.Diagnostics.Debugger.IsAttached) applicationName = "QtC.NET.Development";
+
+ CredentialManager.WriteCredential(applicationName, username, accessToken, $"Access Token For User {username} On QtC.NET", CredentialPersistence.LocalMachine);
+ }
+
+ public string? GetAccessToken()
+ {
+ string applicationName = "QtC.NET";
+ if (System.Diagnostics.Debugger.IsAttached) applicationName = "QtC.NET.Development";
+
+ var credential = CredentialManager.ReadCredential(applicationName);
+ if (credential == null) return null;
+
+ return credential.Password;
+ }
+ }
+}
diff --git a/qtc-net-client-2/Forms/Login.Designer.cs b/qtc-net-client-2/Forms/Login.Designer.cs
index a26fa0d..f5be2e5 100644
--- a/qtc-net-client-2/Forms/Login.Designer.cs
+++ b/qtc-net-client-2/Forms/Login.Designer.cs
@@ -1,6 +1,6 @@
namespace qtc_net_client_2.Forms
{
- partial class llblForgotPassword
+ partial class Login
{
///
/// Required designer variable.
@@ -28,7 +28,7 @@
///
private void InitializeComponent()
{
- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(llblForgotPassword));
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Login));
pbLoginBanner = new PictureBox();
tbEmail = new TextBox();
lblEmail = new Label();
diff --git a/qtc-net-client-2/Forms/Login.cs b/qtc-net-client-2/Forms/Login.cs
index e5922cc..3f47ab3 100644
--- a/qtc-net-client-2/Forms/Login.cs
+++ b/qtc-net-client-2/Forms/Login.cs
@@ -1,4 +1,5 @@
using QtCNETAPI.Services.ApiService;
+using QtCNETAPI.Services;
using QtCNETAPI.Dtos.User;
using System;
using System.Collections.Generic;
@@ -13,11 +14,11 @@ using qtc_net_client_2.Services;
namespace qtc_net_client_2.Forms
{
- public partial class llblForgotPassword : Form
+ public partial class Login : Form
{
private IApiService _apiService;
private CredentialService _credService = new();
- public llblForgotPassword(IApiService apiService)
+ public Login(IApiService apiService)
{
_apiService = apiService;
diff --git a/qtc-net-client-2/Forms/Main.cs b/qtc-net-client-2/Forms/Main.cs
index c5377de..75b50ae 100644
--- a/qtc-net-client-2/Forms/Main.cs
+++ b/qtc-net-client-2/Forms/Main.cs
@@ -49,7 +49,7 @@ namespace qtc_net_client_2
if (_apiService.CurrentUser == null)
{
// not logged in, load the login form
- llblForgotPassword frmLogin = new llblForgotPassword(_apiService);
+ Login frmLogin = new Login(_apiService);
var result = frmLogin.ShowDialog();
if (result == DialogResult.OK)
@@ -60,7 +60,7 @@ namespace qtc_net_client_2
private async void llblSignIn_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
// just reshow the login dialog lol
- llblForgotPassword frmLogin = new llblForgotPassword(_apiService);
+ Login frmLogin = new Login(_apiService);
var result = frmLogin.ShowDialog();
if (result == DialogResult.OK)
diff --git a/qtc-net-client-2/Properties/Resources.Designer.cs b/qtc-net-client-2/Properties/Resources.Designer.cs
index 821d928..f2cc722 100644
--- a/qtc-net-client-2/Properties/Resources.Designer.cs
+++ b/qtc-net-client-2/Properties/Resources.Designer.cs
@@ -81,7 +81,7 @@ namespace qtc_net_client_2.Properties {
}
///
- /// Looks up a localized string similar to 6.3.3.
+ /// Looks up a localized string similar to 6.3.4.
///
internal static string AssemblyVersion {
get {
diff --git a/qtc-net-client-2/Properties/Resources.resx b/qtc-net-client-2/Properties/Resources.resx
index acfd7b5..8cde07c 100644
--- a/qtc-net-client-2/Properties/Resources.resx
+++ b/qtc-net-client-2/Properties/Resources.resx
@@ -173,7 +173,7 @@
..\Icons\MessageIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
- 6.3.3
+ 6.3.4
..\Resources\cobalt_sittingatputer.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/qtc-net-client-2/Services/CredentialService.cs b/qtc-net-client-2/Services/CredentialService.cs
deleted file mode 100644
index 3b31574..0000000
--- a/qtc-net-client-2/Services/CredentialService.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Meziantou.Framework.Win32;
-
-namespace qtc_net_client_2.Services
-{
- public class CredentialService()
- {
- public void SaveAccessToken(string username, string accessToken) => CredentialManager.WriteCredential("QtC.NET", username, accessToken, $"Access Token For User {username} On QtC.NET", CredentialPersistence.LocalMachine);
-
- public string? GetAccessToken()
- {
- var credential = CredentialManager.ReadCredential("QtC.NET");
- if (credential == null) return null;
-
- return credential.Password;
- }
- }
-}
diff --git a/qtc-net-client-2/qtc-net-client-2.csproj b/qtc-net-client-2/qtc-net-client-2.csproj
index d5283ce..4b9aa01 100644
--- a/qtc-net-client-2/qtc-net-client-2.csproj
+++ b/qtc-net-client-2/qtc-net-client-2.csproj
@@ -18,7 +18,6 @@
-