4 files changed, 49 insertions, 1 deletions
diff --git a/MatrixUtils.Web/Pages/HSAdmin/HSAdmin.razor b/MatrixUtils.Web/Pages/HSAdmin/HSAdmin.razor
index 409d582..09cc2cd 100644
--- a/MatrixUtils.Web/Pages/HSAdmin/HSAdmin.razor
+++ b/MatrixUtils.Web/Pages/HSAdmin/HSAdmin.razor
@@ -12,6 +12,11 @@ else {
<hr/>
<a href="/HSAdmin/RoomQuery">Query rooms</a>
}
+ else if (Homeserver is AuthenticatedHomeserverHSE) {
+ <h4>Rory&::LibMatrix.HomeserverEmulator tools</h4>
+ <hr/>
+ <a href="/HSAdmin/HSE/ManageExternalProfiles">Manage external profiles</a>
+ }
else {
<p>Homeserver type @Homeserver.GetType().Name does not have any administration tools in RMU.</p>
<p>Server info:</p>
diff --git a/MatrixUtils.Web/Pages/HSAdmin/HSE/ManageExternalProfiles.razor b/MatrixUtils.Web/Pages/HSAdmin/HSE/ManageExternalProfiles.razor
new file mode 100644
index 0000000..6d492a7
--- /dev/null
+++ b/MatrixUtils.Web/Pages/HSAdmin/HSE/ManageExternalProfiles.razor
@@ -0,0 +1,43 @@
+@page "/HSAdmin/HSE/ManageExternalProfiles"
+@using ArcaneLibs.Extensions
+@using LibMatrix.Responses
+<h3>Manage external profiles</h3>
+
+<LinkButton OnClick="AddAllLocalProfiles">Add local sessions</LinkButton>
+
+@foreach(var p in ExternalProfiles)
+{
+ <h4>@p.Key</h4>
+ <pre>@p.Value.ToJson(indent: true)</pre>
+}
+
+@code {
+ public AuthenticatedHomeserverGeneric? Homeserver { get; set; }
+ private Dictionary<string, LoginResponse> ExternalProfiles = new();
+
+ protected override async Task OnInitializedAsync()
+ {
+ Homeserver = await RmuStorage.GetCurrentSessionOrNavigate();
+ if (Homeserver is null) return;
+ await LoadProfiles();
+ await base.OnInitializedAsync();
+ }
+
+ private async Task LoadProfiles() {
+ if(Homeserver is AuthenticatedHomeserverHSE hse)
+ {
+ ExternalProfiles = await hse.GetExternalProfilesAsync();
+ }
+ StateHasChanged();
+ }
+
+ private async Task AddAllLocalProfiles() {
+ if(Homeserver is AuthenticatedHomeserverHSE hse) {
+ var sessions = await RmuStorage.GetAllTokens();
+ foreach(var session in sessions) {
+ await hse.SetExternalProfile(session.UserId, session);
+ }
+ await LoadProfiles();
+ }
+ }
+}
\ No newline at end of file
diff --git a/MatrixUtils.Web/Pages/HSAdmin/RoomQuery.razor b/MatrixUtils.Web/Pages/HSAdmin/Synapse/RoomQuery.razor
index 1e63e16..07af1dc 100644
--- a/MatrixUtils.Web/Pages/HSAdmin/RoomQuery.razor
+++ b/MatrixUtils.Web/Pages/HSAdmin/Synapse/RoomQuery.razor
@@ -1,4 +1,4 @@
-@page "/HSAdmin/RoomQuery"
+@page "/HSAdmin/Synapse/RoomQuery"
@using LibMatrix.Responses.Admin
@using LibMatrix.Filters
@using ArcaneLibs.Extensions
diff --git a/MatrixUtils.Web/Pages/HSAdmin/RoomQuery.razor.css b/MatrixUtils.Web/Pages/HSAdmin/Synapse/RoomQuery.razor.css
index e69de29..e69de29 100644
--- a/MatrixUtils.Web/Pages/HSAdmin/RoomQuery.razor.css
+++ b/MatrixUtils.Web/Pages/HSAdmin/Synapse/RoomQuery.razor.css
|