diff --git a/QtCNETAPI/Services/ApiService/ApiService.cs b/QtCNETAPI/Services/ApiService/ApiService.cs index 6c714ef..67a2cb3 100644 --- a/QtCNETAPI/Services/ApiService/ApiService.cs +++ b/QtCNETAPI/Services/ApiService/ApiService.cs @@ -235,9 +235,9 @@ namespace QtCNETAPI.Services.ApiService } } - public async Task> LoginAsync(UserLoginDto userLoginDto) + public async Task> LoginAsync(UserLoginDto userLoginDto) { - var serviceResponse = new ServiceResponse(); + var serviceResponse = new ServiceResponse(); try { @@ -257,13 +257,11 @@ namespace QtCNETAPI.Services.ApiService { SessionToken = response.Data!; - await File.WriteAllTextAsync("./session.token", response.Message); - var user = await SetCurrentUser(); serviceResponse.Success = true; if (response.Message != null) serviceResponse.Message = response.Message; - serviceResponse.Data = user; + serviceResponse.Data = response.Message; } else { diff --git a/QtCNETAPI/Services/ApiService/IApiService.cs b/QtCNETAPI/Services/ApiService/IApiService.cs index 0af2644..edc6f5b 100644 --- a/QtCNETAPI/Services/ApiService/IApiService.cs +++ b/QtCNETAPI/Services/ApiService/IApiService.cs @@ -23,7 +23,7 @@ namespace QtCNETAPI.Services.ApiService public Task>> GetOnlineUsersAsync(); public Task>> GetAllUsersAsync(); public Task> DeleteUserById(string id); - public Task> LoginAsync(UserLoginDto userLoginDto); + public Task> LoginAsync(UserLoginDto userLoginDto); public Task> ResendVerificationEmail(string email); public Task> SendPasswordResetEmail(string email); public Task> ResetPassword(UserPasswordResetDto request); diff --git a/qtc-net-client-2/Forms/Login.cs b/qtc-net-client-2/Forms/Login.cs index 828fec0..e5922cc 100644 --- a/qtc-net-client-2/Forms/Login.cs +++ b/qtc-net-client-2/Forms/Login.cs @@ -9,12 +9,14 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using qtc_net_client_2.Services; namespace qtc_net_client_2.Forms { public partial class llblForgotPassword : Form { private IApiService _apiService; + private CredentialService _credService = new(); public llblForgotPassword(IApiService apiService) { _apiService = apiService; @@ -24,14 +26,14 @@ namespace qtc_net_client_2.Forms private async void frmLogin_Load(object sender, EventArgs e) { - if (File.Exists("./session.token")) + string? accessToken = _credService.GetAccessToken(); + + if (accessToken != null) { ToggleControls(false, false); - // try logging in with the token in the file - string token = File.ReadAllText("./session.token"); - - var result = await _apiService.RefreshLogin(token); + // try logging in with the token in cred storage + var result = await _apiService.RefreshLogin(accessToken); if (result.Success) { DialogResult = DialogResult.OK; @@ -55,8 +57,9 @@ namespace qtc_net_client_2.Forms RememberMe = cbRememberMe.Checked }); - if (result.Success) + if (result.Success && result.Data != null) { + _credService.SaveAccessToken(_apiService.CurrentUser.Username, result.Data); DialogResult = DialogResult.OK; Close(); } diff --git a/qtc-net-client-2/Properties/Resources.Designer.cs b/qtc-net-client-2/Properties/Resources.Designer.cs index 233c629..821d928 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.2. + /// Looks up a localized string similar to 6.3.3. /// internal static string AssemblyVersion { get { diff --git a/qtc-net-client-2/Properties/Resources.resx b/qtc-net-client-2/Properties/Resources.resx index fbbe167..acfd7b5 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.2 + 6.3.3 ..\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 new file mode 100644 index 0000000..3b31574 --- /dev/null +++ b/qtc-net-client-2/Services/CredentialService.cs @@ -0,0 +1,17 @@ +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 4b9aa01..d5283ce 100644 --- a/qtc-net-client-2/qtc-net-client-2.csproj +++ b/qtc-net-client-2/qtc-net-client-2.csproj @@ -18,6 +18,7 @@ +