1+ @inject IProfilesClient profilesClient
2+ @inject IPrincipalProvider principalProvider
3+ @inject IStoreClient storeClient
4+ @inject ISessionManager sessionManager
5+ @inject IIdentityClient identityClient
6+ @inject ILocalStorageGateway localStorage
7+ @inject AuthenticationStateProvider authenticationStateProvider
8+ @inject NavigationManager navigationManager
9+
10+ <CascadingAuthenticationState >
11+ <Router AppAssembly =" @typeof(App).Assembly" NotFoundPage =" typeof(Pages.NotFound)" >
12+ <Found Context =" routeData" >
13+ <AuthorizeRouteView RouteData =" @routeData" DefaultLayout =" @typeof(MainLayout)" >
14+ <NotAuthorized >
15+ <NotAuthorized />
16+ </NotAuthorized >
17+ </AuthorizeRouteView >
18+ <FocusOnNavigate RouteData =" @routeData" Selector =" h1" />
19+ </Found >
20+ </Router >
21+ </CascadingAuthenticationState >
22+
23+ @code {
24+ protected override async Task OnInitializedAsync ()
25+ {
26+ await base .OnInitializedAsync ();
27+
28+ await InitializeMockSessionAsync ();
29+ await SetPrincipalAsync ();
30+
31+ var session = await authenticationStateProvider .GetAuthenticationStateAsync ();
32+ var principal = session .User ;
33+
34+ if (principal ? .Identity ? .IsAuthenticated is true )
35+ {
36+ var identifier = principal .FindFirst (ClaimTypes .NameIdentifier )? .Value ;
37+ var owners = await profilesClient .GetOwnersAsync (new () { UserId = identifier ! });
38+
39+ var owner = owners ? .Data ? .Items .FirstOrDefault ();
40+ if (owner is null )
41+ return ;
42+
43+ var establishments = await storeClient .GetEstablishmentsAsync (new () { OwnerId = owner .Identifier });
44+ var establishment = establishments ? .Data ? .Items .FirstOrDefault ();
45+
46+ if (establishment is null )
47+ {
48+ navigationManager .NavigateTo (" /onboarding" );
49+ return ;
50+ }
51+
52+ await localStorage .SetAsync <EstablishmentScheme >(Storage .Establishment , establishment );
53+ await localStorage .SetAsync <OwnerScheme >(Storage .Merchant , owner );
54+ }
55+
56+ }
57+
58+ private async Task SetPrincipalAsync ()
59+ {
60+ var principal = await principalProvider .GetPrincipalAsync ();
61+ if (principal .IsFailure || principal .Data is null )
62+ return ;
63+
64+ await localStorage .SetAsync <PrincipalScheme >(Storage .Principal , principal .Data );
65+ }
66+
67+ private async Task InitializeMockSessionAsync ()
68+ {
69+ var authentication = await identityClient .AuthenticateAsync (new ()
70+ {
71+ Username = " jane.doe@email.com" ,
72+ Password = " password"
73+ });
74+
75+ if (authentication .IsFailure || authentication .Data is null )
76+ return ;
77+
78+ await sessionManager .SignInAsync (authentication .Data .AccessToken , authentication .Data .RefreshToken );
79+ }
80+ }
0 commit comments