diff --git a/Program/Layout/MainLayout.razor.cs b/Program/Layout/MainLayout.razor.cs index 25dc258..4b56792 100644 --- a/Program/Layout/MainLayout.razor.cs +++ b/Program/Layout/MainLayout.razor.cs @@ -25,11 +25,27 @@ public partial class MainLayout : LayoutComponentBase, IDisposable // protected bool isIntro => Navigation.ToBaseRelativePath(Navigation.Uri).Equals("am/intro", StringComparison.OrdinalIgnoreCase); - protected override void OnInitialized() + // protected override void OnInitialized() + protected override async Task OnInitializedAsync() { LoadingService.OnChange += StateHasChanged; Navigation.LocationChanged += HandleLocationChanged; HandleLocationChanged(this, new LocationChangedEventArgs(Navigation.Uri, false)); + if (isAcademy) + { + if(!UserStateService.isLogin || UserStateService.UserData == null) + { + Console.WriteLine("로그인 상태가 아닙니다. 초기로 돌립니다."); + if (isIntro) + { + } //await UserStateService.ClearUserStateAsnyc(); + else + { + await UserStateService.ClearUserStateAsnyc(); + Navigation.NavigateTo("/"); + } + } + } } // 페이지의 URL이 변경될 때마다 실행되는 이벤트 핸들러 diff --git a/Program/Services/UserStateService.cs b/Program/Services/UserStateService.cs index 717ffad..00dd1d7 100644 --- a/Program/Services/UserStateService.cs +++ b/Program/Services/UserStateService.cs @@ -93,23 +93,31 @@ public class UserStateService(StorageService _storageService, SecureService _sec } } - public async Task ClearUserData() + public async Task ClearUserStateAsnyc() { try { - await _storageService.RemoveItemAsync("UsDt"); - await _storageService.RemoveItemAsync("IsLogin"); - Console.WriteLine("사용자 데이터 삭제 성공"); - isLogin = false; - // return true; + string[] keys = { "UsDt", "IsLogin", "UsAcDt" }; + foreach (var key in keys) + { + var remove = await _storageService.RemoveItemAsync(key); + Console.WriteLine("사용자 데이터 삭제" + (remove ? "성공 :" : "실패 :") + key); + } + ClearStateData(); } catch (Exception ex) { Console.WriteLine($"사용자 데이터 삭제 중 오류: {ex.Message}"); - // return false; } } + private void ClearStateData() + { + isLogin = false; + UserData = new UserData(); + academyItems = Array.Empty(); + } + public async Task<(bool success, UserData? userData)> GetUserDataFromServerAsync() { var data = await _APIService.GetConnectServerAsnyc("/api/v1/in/user"); @@ -125,33 +133,4 @@ public class UserStateService(StorageService _storageService, SecureService _sec await _storageService.SetItemAsync("UsAcDt", data.json); return (data.success, data.data); } - // - // var headerValue = await _storageService.GetItemAsync("Web-AM-Connect-Key"); - // if (string.IsNullOrEmpty(headerValue)) return (false, null); - // - // var args = new { - // url = "/api/v1/in/user/academy", - // method = "GET", - // headerKey = "Web-AM-Connect-Key", - // headerValue = headerValue, - // token = "VO00" - // }; - // - // var response = await _js.InvokeAsync( - // "fetchWithHeaderAndReturnUrl", - // args - // ); - // - // Console.WriteLine($"JSON 응답: {response.ToString()}"); - // - // if (response.TryGetProperty("data", out var dataElement)) - // { - // try - // { - // // 전체 데이터 암호화 저장 - // var userDataJson = dataElement.ToString(); - // var userData = JsonSerializer.Deserialize(userDataJson, - // new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); - // } - // } - } \ No newline at end of file +} \ No newline at end of file diff --git a/Program/Views/Academy/AcademyIntro.razor.cs b/Program/Views/Academy/AcademyIntro.razor.cs index 69e8390..cfd347b 100644 --- a/Program/Views/Academy/AcademyIntro.razor.cs +++ b/Program/Views/Academy/AcademyIntro.razor.cs @@ -16,9 +16,6 @@ public partial class AcademyIntro : ComponentBase, IDisposable private bool _isProcessing = false; - - - protected override async void OnInitialized() { try diff --git a/Program/Views/Academy/Common/TopNavAcademy.razor b/Program/Views/Academy/Common/TopNavAcademy.razor index de259c5..f670922 100644 --- a/Program/Views/Academy/Common/TopNavAcademy.razor +++ b/Program/Views/Academy/Common/TopNavAcademy.razor @@ -1,5 +1,5 @@ -
-
+
+