summary refs log tree commit diff
path: root/testFrontend/SafeNSound.Demo/App.razor
blob: 551a833ad274be97c255e762fc69dc0e034a5ea1 (plain) (blame)
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
@inject SafeNSoundConfiguration Config
@if (_isInitialized) {
    <Router AppAssembly="@typeof(App).Assembly">
        <Found Context="routeData">
            <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)"/>
            <FocusOnNavigate RouteData="@routeData" Selector="h1"/>
        </Found>
        <NotFound>
            <PageTitle>Not found</PageTitle>
            <LayoutView Layout="@typeof(MainLayout)">
                <p role="alert">Sorry, there's nothing at this address.</p>
            </LayoutView>
        </NotFound>
    </Router>
}
else {
    <h1>Registering new accounts, please wait...</h1>
    <div class="alert alert-info">
        <strong>Log:</strong>
        <ul>
            @foreach (var log in Enumerable.Reverse(Log)) {
                <li>@log</li>
            }
        </ul>
    </div>
}

@code {

    private bool _isInitialized = false;
    private List<string> Log { get; set; } = [];

    public static SafeNSoundClient UserClient { get; set; } = null!;
    public static SafeNSoundClient MonitorClient { get; set; } = null!;
    public static SafeNSoundClient AdminClient { get; set; } = null!;
    
    public static RegisterDto UserAuth { get; set; } = null!;
    public static RegisterDto MonitorAuth { get; set; } = null!;
    public static RegisterDto AdminAuth { get; set; } = null!;

    private void DoLog(string text) {
        Log.Add(text);
        StateHasChanged();
    }

    protected override async Task OnInitializedAsync() {
        await RegisterUser();
        await RegisterMonitor();
        await RegisterAdmin();
        
        DoLog("Done!");
        await Task.Delay(500);
        _isInitialized = true;
    }

    private async Task RegisterUser() {
        RegisterDto auth = UserAuth = new() {
            Username = Guid.NewGuid().ToString(),
            Password = Guid.NewGuid().ToString(),
            Email = Guid.NewGuid() + "@example.com",
            UserType = "user"
        };
        await Authentication.Register(auth);
        DoLog("Registered user: " + auth.Username);
        var result = await Authentication.Login(auth);
        DoLog("Logged in user: " + auth.Username);
        UserClient = new SafeNSoundClient(Config, result.AccessToken);
        DoLog("Created SafeNSoundClient for user: " + auth.Username);
    }

    private async Task RegisterMonitor() {
        RegisterDto auth = MonitorAuth = new() {
            Username = Guid.NewGuid().ToString(),
            Password = Guid.NewGuid().ToString(),
            Email = Guid.NewGuid() + "@example.com",
            UserType = "monitor"
        };
        await Authentication.Register(auth);
        DoLog("Registered monitor: " + auth.Username);
        var result = await Authentication.Login(auth);
        DoLog("Logged in monitor: " + auth.Username);
        MonitorClient = new SafeNSoundClient(Config, result.AccessToken);
        DoLog("Created SafeNSoundClient for monitor: " + auth.Username);
        await MonitorClient.AddAssignedUser((await UserClient.WhoAmI()).UserId);
        DoLog("Monitor now assigned to user");
    }

    private async Task RegisterAdmin() {
        RegisterDto auth = AdminAuth = new() {
            Username = Guid.NewGuid().ToString(),
            Password = Guid.NewGuid().ToString(),
            Email = Guid.NewGuid() + "@example.com",
            UserType = "admin"
        };
        await Authentication.Register(auth);
        DoLog("Registered admin: " + auth.Username);
        var result = await Authentication.Login(auth);
        DoLog("Logged in admin: " + auth.Username);
        AdminClient = new SafeNSoundClient(Config, result.AccessToken);
        DoLog("Created SafeNSoundClient for admin: " + auth.Username);
        await AdminClient.AddAssignedUser((await MonitorClient.WhoAmI()).UserId);
        DoLog("Admin now assigned to user");
        await AdminClient.AddAssignedUser((await UserClient.WhoAmI()).UserId);
        DoLog("Admin now assigned to monitor");
    }

}