1 files changed, 107 insertions, 0 deletions
diff --git a/testFrontend/SafeNSound.Demo/App.razor b/testFrontend/SafeNSound.Demo/App.razor
new file mode 100644
index 0000000..551a833
--- /dev/null
+++ b/testFrontend/SafeNSound.Demo/App.razor
@@ -0,0 +1,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");
+ }
+
+}
\ No newline at end of file
|