@page "/Auth"

Auth

User:
Username (L?, R):
Email (L? R):
Password (L, R):
Type (R): (one of user|monitor|admin)
Randomise Register Login Who Am I Delete Register superadmin

Monitor:
User ID:
Get Add Remove

Devices:
@if (CurrentDevice is not null) { Device ID: @CurrentDevice.Id
Log in date: @CurrentDevice.CreatedAt
Last seen: @CurrentDevice.LastSeen
Device name:
Get Update Delete Get all } @if (Exception != null) {
Error:
            @Exception
        
} @if (Result != null) {
Result:
            @Result.ToJson(indent: true)
        
} @code { private RegisterDto AuthData { get; set; } = new() { Username = string.Empty, UserType = string.Empty, Email = String.Empty, Password = string.Empty }; private DeviceDto? CurrentDevice { get; set; } private string TargetUserId { get; set; } = string.Empty; private Exception? Exception { get; set; } private object? Result { get; set; } private async Task Randomise() { AuthData.Username = Guid.NewGuid().ToString(); AuthData.Email = Guid.NewGuid() + "@example.com"; AuthData.Password = Guid.NewGuid().ToString(); AuthData.UserType = Random.Shared.GetItems(["user", "monitor", "admin"], 1)[0]; StateHasChanged(); } private async Task Register() { Result = null; Exception = null; try { await Authentication.Register(new() { Username = AuthData.Username, Password = AuthData.Password, Email = AuthData.Email, UserType = AuthData.UserType }); } catch (Exception ex) { Exception = ex; } StateHasChanged(); } private async Task Login() { Result = null; Exception = null; try { AuthResult result; Result = result = await Authentication.Login(new() { Username = AuthData.Username, Password = AuthData.Password, Email = AuthData.Email }); App.Client = new SafeNSoundClient(Config, result.AccessToken); CurrentDevice = await App.Client.GetDevice( (await App.Client.WhoAmI()).DeviceId ); } catch (Exception ex) { Exception = ex; } StateHasChanged(); } private async Task Delete() { Result = null; Exception = null; try { await Authentication.Delete(new() { Username = AuthData.Username, Password = AuthData.Password, Email = AuthData.Email }); } catch (Exception ex) { Exception = ex; } StateHasChanged(); } private async Task WhoAmI() { Result = null; Exception = null; try { Result = await App.Client!.WhoAmI(); } catch (Exception ex) { Exception = ex; } StateHasChanged(); } private async Task GetAssignedUsers() { Result = null; Exception = null; try { Result = await App.Client!.GetAssignedUsers(); } catch (Exception ex) { Exception = ex; } StateHasChanged(); } private async Task AddAssignedUser() { Result = null; Exception = null; try { await App.Client!.AddAssignedUser(TargetUserId); await GetAssignedUsers(); } catch (Exception ex) { Exception = ex; } StateHasChanged(); } private async Task RemoveAssignedUser() { Result = null; Exception = null; try { await App.Client!.RemoveAssignedUser(TargetUserId); await GetAssignedUsers(); } catch (Exception ex) { Exception = ex; } StateHasChanged(); } private async Task MakeFullAdmin() { Result = null; Exception = null; try { AuthResult result; RegisterDto auth = new() { Username = Guid.NewGuid().ToString(), Password = Guid.NewGuid().ToString(), Email = Guid.NewGuid() + "@example.com", UserType = "admin" }; await Authentication.Register(auth); Result = result = await Authentication.Login(auth); App.Client = new SafeNSoundClient(Config, result.AccessToken); await App.Client.MonitorAllUsers(); } catch (Exception ex) { Exception = ex; } StateHasChanged(); } private async Task GetDevice() { Result = CurrentDevice = await App.Client!.GetDevice(CurrentDevice!.Id!); StateHasChanged(); } private async Task UpdateDevice() { await App.Client!.UpdateDevice(CurrentDevice!.Id!, new() { Name = CurrentDevice.Name }); await GetDevice(); } private async Task DeleteDevice() { await App.Client!.DeleteDevice(CurrentDevice!.Id!); } private async Task GetAllDevices() { Result = await App.Client!.GetDevices(); StateHasChanged(); } }