From 68fe1a2284045908d92ef06c1c26cd937ded784e Mon Sep 17 00:00:00 2001 From: Rory& Date: Sat, 20 Apr 2024 23:48:43 +0200 Subject: Add basic project management --- BugMine.Web/Pages/Auth/Auth.razor | 6 +++ BugMine.Web/Pages/Auth/LegacyLogin.razor | 71 ++++++++++++++++++++++++++++++++ BugMine.Web/Pages/Auth/Login.razor | 69 +++++++++++++++++++++++++++++++ BugMine.Web/Pages/Auth/Logout.razor | 18 ++++++++ 4 files changed, 164 insertions(+) create mode 100644 BugMine.Web/Pages/Auth/Auth.razor create mode 100644 BugMine.Web/Pages/Auth/LegacyLogin.razor create mode 100644 BugMine.Web/Pages/Auth/Login.razor create mode 100644 BugMine.Web/Pages/Auth/Logout.razor (limited to 'BugMine.Web/Pages/Auth') diff --git a/BugMine.Web/Pages/Auth/Auth.razor b/BugMine.Web/Pages/Auth/Auth.razor new file mode 100644 index 0000000..e58f47b --- /dev/null +++ b/BugMine.Web/Pages/Auth/Auth.razor @@ -0,0 +1,6 @@ +@page "/Auth" +

Auth

+ +@code { + +} \ No newline at end of file diff --git a/BugMine.Web/Pages/Auth/LegacyLogin.razor b/BugMine.Web/Pages/Auth/LegacyLogin.razor new file mode 100644 index 0000000..5257028 --- /dev/null +++ b/BugMine.Web/Pages/Auth/LegacyLogin.razor @@ -0,0 +1,71 @@ +@page "/Auth/LegacyLogin" +@using System.Text.Json.Serialization +@using LibMatrix.Services +@inject HomeserverProviderService hsProvider +

Login

+
+ + + + @@: + + + + + + + + + +
+Log in + +

Continue as guest

+
+Log in as guest + +@code { + private LoginStruct authData = new(); + + List? LoggedInSessions { get; set; } = new(); + + async Task LoginWithAuth(LoginStruct record) { + if (LoggedInSessions.Any(x => x.UserId == $"@{record.Username}:{record.Homeserver}" && x.Proxy == record.Proxy)) return; + StateHasChanged(); + try { + var result = new UserAuth(await hsProvider.Login(record.Homeserver, record.Username, record.Password, record.Proxy)) { + Proxy = record.Proxy + }; + if (result == null) { + Console.WriteLine($"Failed to login to {record.Homeserver} as {record.Username}!"); + return; + } + + Console.WriteLine($"Obtained access token for {result.UserId}!"); + + await BugMineStorage.AddToken(result); + await BugMineStorage.SetCurrentToken(result); + } + catch (Exception e) { + Console.WriteLine($"Failed to login to {record.Homeserver} as {record.Username}!"); + Console.WriteLine(e); + record.Exception = e; + } + + StateHasChanged(); + } + + private class LoginStruct { + public string? Homeserver { get; set; } = ""; + public string? Username { get; set; } = ""; + public string? Password { get; set; } = ""; + public string? Proxy { get; set; } + + [JsonIgnore] + internal Exception? Exception { get; set; } + } + +} \ No newline at end of file diff --git a/BugMine.Web/Pages/Auth/Login.razor b/BugMine.Web/Pages/Auth/Login.razor new file mode 100644 index 0000000..7b457ec --- /dev/null +++ b/BugMine.Web/Pages/Auth/Login.razor @@ -0,0 +1,69 @@ +@page "/Auth/Login" +@using ArcaneLibs.Extensions +@using LibMatrix.Homeservers +@using LibMatrix.Services +@inject HomeserverProviderService hsProvider +

Login

+
+

Notice: this doesn't work yet, please use legacy login.

+ + Homeserver: + + + +@* *@ +@* *@ +@* @@: *@ +@* *@ +@* *@ +@* *@ +@* *@ +@* *@ +@*
*@ +@* Log in *@ + +@if (Constants.Debug) { +
+ Auth client state: +
+        @Homeserver?.Auth.ToJson()
+    
+ Current stage: +
+        @CurrentStage?.ToJson()
+    
+} + +@code { + private string? _homeserverName = null; + + private string? HomeserverName { + get => _homeserverName; + set { + _homeserverName = value; + HomeserverChanged(); + } + } + + public RemoteHomeserver? Homeserver { get; set; } + public UserInteractiveAuthClient.IUIAStage CurrentStage { get; set; } = null!; + + //oninit + protected override async Task OnInitializedAsync() { + HomeserverName = "matrixunittests.rory.gay"; + } + + public async Task HomeserverChanged() { + if (string.IsNullOrWhiteSpace(HomeserverName)) return; + Homeserver = await hsProvider.GetRemoteHomeserver(HomeserverName); + CurrentStage = await Homeserver.Auth.GetAvailableFlowsAsync(enableRegister: true, enableGuest: true); + + + StateHasChanged(); + } + +} + diff --git a/BugMine.Web/Pages/Auth/Logout.razor b/BugMine.Web/Pages/Auth/Logout.razor new file mode 100644 index 0000000..dd019a1 --- /dev/null +++ b/BugMine.Web/Pages/Auth/Logout.razor @@ -0,0 +1,18 @@ +@page "/Auth/Logout" +

Logging out...

+ +@code { + + protected override async Task OnInitializedAsync() { + var client = await BugMineStorage.GetCurrentSessionOrNull(); + if (client != null) { + await client.Homeserver.Logout(); + } + + await BugMineStorage.RemoveToken(await BugMineStorage.GetCurrentToken()); + await BugMineStorage.SetCurrentToken(null); + + NavigationManager.NavigateTo("/", true); + } + +} \ No newline at end of file -- cgit 1.5.1