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");
}
}
|