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