yavsc/src/Yavsc/Pages/ServerSideSessions/Index.cshtml
2024-02-25 18:05:10 +00:00

147 lines
8.1 KiB
Text

@page
@model Yavsc.Pages.ServerSideSessions.IndexModel
<div class="users-page">
<div class="row">
<div class="col">
<div class="card">
<div class="card-header">
<h2>User Sessions</h2>
</div>
<div class="card-body">
@if (Model.UserSessions != null)
{
<div class="row">
<div class="col-1 text-center">
@if (Model.UserSessions.HasPrevResults)
{
<a class="btn btn-primary" asp-page="/ServerSideSessions/Index"
asp-route-prev="true"
asp-route-token="@Model.UserSessions.ResultsToken"
asp-route-DisplayNameFilter="@Model.DisplayNameFilter"
asp-route-SubjectIdFilter="@Model.SubjectIdFilter"
asp-route-SessionIdFilter="@Model.SessionIdFilter"
>Prev</a>
}
</div>
<div class="col">
<form class="form">
<div class="form-group row">
<label asp-for="@Model.DisplayNameFilter" class="col-2 col-form-label">Name:</label>
<input type="search" asp-for="@Model.DisplayNameFilter" class="col form-control" autofocus />
</div>
<div class="form-group row">
<label asp-for="@Model.SessionIdFilter" class="col-2 col-form-label">Session Id:</label>
<input type="search" asp-for="@Model.SessionIdFilter" class="col form-control" autofocus />
</div>
<div class="form-group row">
<label asp-for="@Model.SubjectIdFilter" class="col-2 col-form-label">Subject Id:</label>
<input type="search" asp-for="@Model.SubjectIdFilter" class="col form-control" autofocus />
</div>
<div class="form-group row justify-content-end">
<button type="submit" class="form-control btn btn-success col-1">Filter</button>
</div>
</form>
</div>
<div class="col-1 text-center">
@if (Model.UserSessions.HasNextResults)
{
<a class="btn btn-primary" asp-page="/ServerSideSessions/Index"
asp-route-token="@Model.UserSessions.ResultsToken"
asp-route-DisplayNameFilter="@Model.DisplayNameFilter"
asp-route-SubjectIdFilter="@Model.SubjectIdFilter"
asp-route-SessionIdFilter="@Model.SessionIdFilter"
>Next</a>
}
</div>
</div>
@if (Model.UserSessions.TotalCount.HasValue)
{
<div class="text-center">
@if (Model.UserSessions.CurrentPage.HasValue && Model.UserSessions.TotalPages.HasValue)
{
<text>
Total Results: @Model.UserSessions.TotalCount,
Page @Model.UserSessions.CurrentPage of @Model.UserSessions.TotalPages
</text>
}
else
{
<text>
Total Results: @Model.UserSessions.TotalCount
</text>
}
</div>
}
<br />
@if (Model.UserSessions.Results.Any())
{
<div>
<table class="table table-bordered table-striped table-sm">
<thead>
<tr>
<th>Subject Id</th>
<th>Session Id</th>
<th>Display Name</th>
<th>Created</th>
<th>Expires</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var session in Model.UserSessions.Results)
{
<tr>
<td>@session.SubjectId</td>
<td>@session.SessionId</td>
<td>@session.DisplayName</td>
<td>@session.Created</td>
<td>@session.Expires</td>
<td>
<form method="post">
<input type="hidden" name="SessionId" value="@session.SessionId" />
<button type="submit" class="btn btn-danger">Delete</button>
</form>
</td>
</tr>
<tr><td colspan="6">
<strong>Clients:</strong>
@if (session.ClientIds?.Any() == true)
{
@(session.ClientIds.Aggregate((x, y) => $"{x}, {y}"))
}
else
{
@("None")
}
</td></tr>
}
</tbody>
</table>
</div>
}
else
{
<div class="text-center">No User Sessions</div>
}
}
else
{
<div class="row">
<div class="col">
You do not have server-side sessions enabled.
To do so, use <i>AddServerSideSessions</i> on your IdentityServer configuration.
See the <a href="https://docs.duendesoftware.com/identityserver/v6/ui/server_side_sessions">documentation</a> for more information.
</div>
</div>
}
</div>
</div>
</div>
</div>
</div>