From 1465a39ae48c998d06622526b93ecbead16ddec5 Mon Sep 17 00:00:00 2001 From: Frede Hundewadt Date: Thu, 18 May 2023 10:00:11 +0200 Subject: [PATCH] WIP --- .../Local.Services/AuthenticationService.cs | 32 ++++++++++++------- .../Local.Services/UserInfoService.cs | 2 ++ .../Local.Services/UserPreferenceService.cs | 14 ++++++-- .../Pages/AdvisorReportCreatePage.razor | 4 +-- .../Pages/AdvisorReportCreatePage.razor.cs | 5 ++- .../Pages/CrmCustomerWorkplaceListPage.razor | 20 ++++++------ .../CrmCustomerWorkplaceViewEditPage.razor | 4 +-- Wonky.Client/Shared/AuthStateProvider.cs | 1 + Wonky.Client/wwwroot/appsettings.json | 4 +-- 9 files changed, 55 insertions(+), 31 deletions(-) diff --git a/Wonky.Client/Local.Services/AuthenticationService.cs b/Wonky.Client/Local.Services/AuthenticationService.cs index d6ac4408..c9d2a05e 100644 --- a/Wonky.Client/Local.Services/AuthenticationService.cs +++ b/Wonky.Client/Local.Services/AuthenticationService.cs @@ -33,7 +33,7 @@ public class AuthenticationService : IAuthenticationService private readonly IOptions _apiConfig; private readonly ILogger _logger; private readonly IUserInfoService _infoService; - private readonly UserPreferenceService _preference; + private readonly UserPreferenceService _preferenceService; private readonly ILocalStorageService _localStorage; public AuthenticationService( @@ -42,7 +42,7 @@ public class AuthenticationService : IAuthenticationService IOptions apiConfig, ILogger logger, IUserInfoService infoService, - UserPreferenceService preference, + UserPreferenceService preferenceService, ILocalStorageService localStorage ) { @@ -51,7 +51,7 @@ public class AuthenticationService : IAuthenticationService _apiConfig = apiConfig; _logger = logger; _infoService = infoService; - _preference = preference; + _preferenceService = preferenceService; _localStorage = localStorage; } @@ -70,10 +70,12 @@ public class AuthenticationService : IAuthenticationService var resContent = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) + { return new AuthResponseView { IsSuccess = false, ErrorMessage = "Kontroller indtastning" }; + } // process response content var data = JsonSerializer.Deserialize(resContent, _options); @@ -86,8 +88,8 @@ public class AuthenticationService : IAuthenticationService _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", data.AccessToken); - var userInfo = await UserInfo(); - + var userInfo = await UserInfo(true); + await _infoService.SetUserInfo(userInfo); // notify system on state change @@ -99,9 +101,10 @@ public class AuthenticationService : IAuthenticationService public async Task RefreshToken() { var refreshToken = await _infoService.GetRefreshToken(); - await Task.Delay(250); + // await Task.Delay(250); if (string.IsNullOrWhiteSpace(refreshToken)) { + _client.DefaultRequestHeaders.Authorization = null; return string.Empty; } @@ -113,43 +116,50 @@ public class AuthenticationService : IAuthenticationService var response = await _client.PostAsync(_apiConfig.Value.ServicesAuth, new FormUrlEncodedContent(credentials)); var content = await response.Content.ReadAsStringAsync(); + if (!response.IsSuccessStatusCode || string.IsNullOrWhiteSpace(content)) { + _client.DefaultRequestHeaders.Authorization = null; return string.Empty; } - var data = JsonSerializer.Deserialize(content, _options); + var data = JsonSerializer.Deserialize(content, _options) ?? new AuthResponseView(); if (string.IsNullOrWhiteSpace(data.AccessToken)) { + _client.DefaultRequestHeaders.Authorization = null; return string.Empty; } // set default request headers using access_token _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", data.AccessToken); + await _infoService.SetAccessToken(data.AccessToken); await _infoService.SetRefreshToken(data.RefreshToken); await _infoService.SetExpiration((int)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds + data.ExpiresIn - 60); + return data.AccessToken; } public async Task Logout() { _client.DefaultRequestHeaders.Authorization = null; - var profileBackup = await _preference.GetProfile(); - var km = profileBackup.KmMorning; + var km = await _preferenceService.GetKmMorning(); await _localStorage.ClearAsync(); - await _preference.SetKmMorning(km); + await _preferenceService.SetKmMorning(km); ((AuthStateProvider)_authStateProvider).NotifyUserLogout(); } public async Task UserInfo(bool write = false) { var response = await _client.GetAsync(_apiConfig.Value.UserInfoAuth).ConfigureAwait(true); + var content = await response.Content.ReadAsStringAsync(); var userInfo = JsonSerializer.Deserialize(content, _options) ?? new UserManagerEditView(); - if(write) + if (write) + { await _infoService.SetUserInfo(userInfo); + } return userInfo; } } \ No newline at end of file diff --git a/Wonky.Client/Local.Services/UserInfoService.cs b/Wonky.Client/Local.Services/UserInfoService.cs index bfe0dbb1..592dbb6f 100644 --- a/Wonky.Client/Local.Services/UserInfoService.cs +++ b/Wonky.Client/Local.Services/UserInfoService.cs @@ -43,6 +43,8 @@ public class UserInfoService : IUserInfoService var x = await GetUserInfo(); return x.UserId; } + + public async Task IsSupervisor() { var x = await GetUserInfo(); diff --git a/Wonky.Client/Local.Services/UserPreferenceService.cs b/Wonky.Client/Local.Services/UserPreferenceService.cs index 5165d19a..c945235c 100644 --- a/Wonky.Client/Local.Services/UserPreferenceService.cs +++ b/Wonky.Client/Local.Services/UserPreferenceService.cs @@ -27,7 +27,6 @@ public record UserPreference public string ItemSort { get; set; } = "name"; public string PageSize { get; set; } = "10"; public string WorkDate { get; set; } = ""; - public int KmMorning { get; set; } public bool DateConfirmed { get; set; } } @@ -38,6 +37,7 @@ public class UserPreferenceService private const string KeyKm = "kmstart"; public event Action? OnChange; + public UserPreferenceService(ILocalStorageService localStorageService) { _localStorageService = localStorageService; @@ -46,13 +46,13 @@ public class UserPreferenceService public async Task SetKmMorning(int kmMorning) { - await _localStorageService.SetItemAsync(KeyName, kmMorning); + await _localStorageService.SetItemAsync(KeyKm, kmMorning); } public async Task GetKmMorning() { - return await _localStorageService.GetItemAsync(KeyName); + return await _localStorageService.GetItemAsync(KeyKm); } @@ -81,6 +81,7 @@ public class UserPreferenceService OnChange?.Invoke(newPreferences); } + public async Task SetWorkDate(DateTime workDate) { var preferences = await GetProfile(); @@ -93,6 +94,7 @@ public class UserPreferenceService OnChange?.Invoke(newPreferences); } + public async Task SetCompanySearch(string companySearch) { var preferences = await GetProfile(); @@ -102,6 +104,7 @@ public class UserPreferenceService OnChange?.Invoke(newPreferences); } + public async Task SetCompanySort(string companySort) { var preferences = await GetProfile(); @@ -111,6 +114,7 @@ public class UserPreferenceService OnChange?.Invoke(newPreferences); } + public async Task SetItemSearch(string itemSearch) { var preferences = await GetProfile(); @@ -120,6 +124,7 @@ public class UserPreferenceService OnChange?.Invoke(newPreferences); } + public async Task SetItemSort(string itemSort) { var preferences = await GetProfile(); @@ -129,6 +134,7 @@ public class UserPreferenceService OnChange?.Invoke(newPreferences); } + public async Task SetPageSize(string pageSize) { var preferences = await GetProfile(); @@ -138,11 +144,13 @@ public class UserPreferenceService OnChange?.Invoke(newPreferences); } + public async Task GetProfile() { return await _localStorageService.GetItemAsync(KeyName) ?? new UserPreference(); } + public async Task SetProfile(UserPreference profile) { await _localStorageService.SetItemAsync(KeyName, profile); diff --git a/Wonky.Client/Pages/AdvisorReportCreatePage.razor b/Wonky.Client/Pages/AdvisorReportCreatePage.razor index 59b1fec7..3340f869 100644 --- a/Wonky.Client/Pages/AdvisorReportCreatePage.razor +++ b/Wonky.Client/Pages/AdvisorReportCreatePage.razor @@ -76,10 +76,10 @@ } else { - Report.Figures.KmMorning = Preference.KmMorning; + Report.Figures.KmMorning = KmMorning; + @bind-Value="CheckIn" @bind-Value:event="oninput" onchange="@OnTimeChanged"/> @@ -81,6 +82,8 @@ public partial class AdvisorReportCreatePage : IDisposable PreferenceService.OnChange += ProfileServiceOnOnChange; Preference = await PreferenceService.GetProfile(); + KmMorning = await PreferenceService.GetKmMorning(); + Logger.LogDebug("{}", JsonSerializer.Serialize(Preference)); WorkDate = Preference.WorkDate; @@ -151,7 +154,7 @@ public partial class AdvisorReportCreatePage : IDisposable } else { - Report.Figures.KmMorning = Preference.KmMorning; + Report.Figures.KmMorning = KmMorning; } NoFigures = false; diff --git a/Wonky.Client/Pages/CrmCustomerWorkplaceListPage.razor b/Wonky.Client/Pages/CrmCustomerWorkplaceListPage.razor index 8e55527a..29cb075f 100644 --- a/Wonky.Client/Pages/CrmCustomerWorkplaceListPage.razor +++ b/Wonky.Client/Pages/CrmCustomerWorkplaceListPage.razor @@ -24,27 +24,27 @@
-

@Company.Name

+

@Company.Name

-
@if (Workplaces.Any()) { -
+
-
-

Navn

+
+

Arbejdssted

-
-

Beskrivelse

+
+

Beskrivelse

diff --git a/Wonky.Client/Pages/CrmCustomerWorkplaceViewEditPage.razor b/Wonky.Client/Pages/CrmCustomerWorkplaceViewEditPage.razor index 43f8eb31..06acaea0 100644 --- a/Wonky.Client/Pages/CrmCustomerWorkplaceViewEditPage.razor +++ b/Wonky.Client/Pages/CrmCustomerWorkplaceViewEditPage.razor @@ -147,10 +147,10 @@
@docView.VariantName.ToUpperInvariant()