Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

72 rader
2.0 KiB

  1. @using Newtonsoft.Json
  2. @using Models.Identity
  3. @inject ILoadingSpinner _LoadingSpinner
  4. @inherits LayoutComponentBase
  5. <div class="page">
  6. <div class="sidebar">
  7. <NavMenu/>
  8. </div>
  9. <main>
  10. <article class="content px-4">
  11. @Body
  12. </article>
  13. </main>
  14. </div>
  15. @code
  16. {
  17. protected override async void OnAfterRender(bool firstRender)
  18. {
  19. if (firstRender)
  20. await CheckLogin();
  21. base.OnAfterRender(firstRender);
  22. }
  23. async Task CheckLogin()
  24. {
  25. Console.WriteLine("" + Statics.LastCheck);
  26. if (Statics.LastCheck.HasValue && DateTime.Now.Subtract(Statics.LastCheck.Value).TotalMinutes < 5)
  27. {
  28. Console.WriteLine("less than 5 minutes login check");
  29. base.OnInitialized();
  30. return;
  31. }
  32. Console.WriteLine("checking login...");
  33. Statics.LastCheck = DateTime.Now;
  34. var hasToken = await LocalStorage.ContainKeyAsync(Statics.LoginTokenKey);
  35. if (!hasToken)
  36. NavigationManager.NavigateTo("/login");
  37. else
  38. {
  39. var token = await LocalStorage.GetItemAsStringAsync(Statics.LoginTokenKey);
  40. var res = await _userUtils.CheckLogin();
  41. var result =
  42. JsonConvert.DeserializeObject<CheckLoginResponse>(
  43. await res.Content.ReadAsStringAsync());
  44. if (!res.IsSuccessStatusCode)
  45. {
  46. await _LoadingSpinner.HideLoading();
  47. await _sweetAlertService.ShowSwal(title: "", message: "Login Expired", SweetAlertIcon.Error);
  48. NavigationManager.NavigateTo("/login");
  49. }
  50. await _LoadingSpinner.HideLoading();
  51. Statics.CurrentLoginInfo = result;
  52. StateHasChanged();
  53. }
  54. }
  55. private async void SignOut()
  56. {
  57. await LocalStorage.RemoveItemAsync(Statics.LoginTokenKey);
  58. await LocalStorage.RemoveItemAsync(Statics.RefreshTokenKey);
  59. NavigationManager.NavigateTo("/login");
  60. }
  61. }