mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-01-19 05:33:31 +01:00
fc9d4f96a7
* Design system updates * Icon fix * Add new icons, replace show/hide * Icon replacements * Test fix * Icon replacements in Vault * More icon replacements * Final icon replacements, remove Font Awesome
131 lines
5.4 KiB
Plaintext
131 lines
5.4 KiB
Plaintext
@using BTCPayServer.Views.Server
|
|
@using BTCPayServer.Views.Stores
|
|
@using Microsoft.AspNetCore.Mvc.TagHelpers
|
|
@using BTCPayServer.Client
|
|
@model BTCPayServer.Models.ServerViewModels.RolesViewModel
|
|
@{
|
|
Layout = "_NavLayout.cshtml";
|
|
var storeId = Context.GetRouteValue("storeId") as string;
|
|
var controller = ViewContext.RouteData.Values["controller"].ToString().TrimEnd("Controller", StringComparison.InvariantCultureIgnoreCase);
|
|
if (string.IsNullOrEmpty(storeId))
|
|
ViewData.SetActivePage(ServerNavPages.Roles);
|
|
else
|
|
ViewData.SetActivePage(StoreNavPages.Roles);
|
|
var permission = string.IsNullOrEmpty(storeId) ? Policies.CanModifyServerSettings : Policies.CanModifyStoreSettings;
|
|
var nextRoleSortOrder = (string) ViewData["NextRoleSortOrder"];
|
|
var roleSortOrder = nextRoleSortOrder switch
|
|
{
|
|
"asc" => "desc",
|
|
"desc" => "asc",
|
|
_ => null
|
|
};
|
|
|
|
const string sortByDesc = "Sort by name descending...";
|
|
const string sortByAsc = "Sort by name ascending...";
|
|
var showInUseColumn = !Model.Roles.Any(r => r.IsUsed is null);
|
|
}
|
|
|
|
<div class="d-flex align-items-center justify-content-between mb-3">
|
|
<h3 class="mb-0">@ViewData["Title"]</h3>
|
|
<a class="btn btn-primary" role="button" id="CreateRole" asp-controller="@controller" asp-action="CreateOrEditRole" asp-route-role="create" asp-route-storeId="@storeId" permission="@permission">Add Role</a>
|
|
</div>
|
|
|
|
<div class="table-responsive">
|
|
<table class="table table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th>
|
|
<a
|
|
asp-controller="@controller"
|
|
asp-action="ListRoles"
|
|
asp-route-storeId="@storeId"
|
|
asp-route-sortOrder="@(nextRoleSortOrder ?? "asc")"
|
|
class="text-nowrap"
|
|
title="@(nextRoleSortOrder == "desc" ? sortByAsc : sortByDesc)">
|
|
Role
|
|
<vc:icon symbol="actions-sort-alpha-@(roleSortOrder ?? nextRoleSortOrder ?? "desc")" />
|
|
</a>
|
|
</th>
|
|
<th>Scope</th>
|
|
<th>Permissions</th>
|
|
@if (showInUseColumn)
|
|
{
|
|
<th class="text-center">In use</th>
|
|
}
|
|
<th class="actions-col" permission="@permission">Actions</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var role in Model.Roles)
|
|
{
|
|
<tr>
|
|
<td>
|
|
<div class="d-flex flex-wrap align-items-center gap-2">
|
|
<span>@role.Role</span>
|
|
@if (Model.DefaultRole == role.Id)
|
|
{
|
|
<span class="badge bg-info">
|
|
Default
|
|
</span>
|
|
}
|
|
</div>
|
|
</td>
|
|
<td>
|
|
@if (role.IsServerRole)
|
|
{
|
|
<span class="badge bg-dark">
|
|
Server-wide
|
|
</span>
|
|
}
|
|
else
|
|
{
|
|
<span class="badge bg-light">
|
|
Store-level
|
|
</span>
|
|
}
|
|
</td>
|
|
<td>
|
|
@if (!role.Permissions.Any())
|
|
{
|
|
<span class="info-note text-warning">
|
|
<vc:icon symbol="warning"/>
|
|
No policies
|
|
</span>
|
|
}
|
|
else
|
|
{
|
|
@foreach (var policy in role.Permissions)
|
|
{
|
|
<code class="d-block text-break">@policy</code>
|
|
}
|
|
}
|
|
</td>
|
|
@if (showInUseColumn)
|
|
{
|
|
<td class="text-center">
|
|
@if (role.IsUsed is true)
|
|
{
|
|
<vc:icon symbol="checkmark" css-class="text-success"/>
|
|
}
|
|
else
|
|
{
|
|
<vc:icon symbol="cross" css-class="text-danger"/>
|
|
}
|
|
</td>
|
|
}
|
|
<td class="actions-col" permission="@permission">
|
|
<div class="d-inline-flex align-items-center gap-3">
|
|
@if (role.IsServerRole && Model.DefaultRole != role.Id)
|
|
{
|
|
<a permission="@Policies.CanModifyServerSettings" asp-action="SetDefaultRole" asp-route-role="@role.Role" asp-controller="UIServer" id="SetDefault">Set as default</a>
|
|
}
|
|
<a permission="@(role.IsServerRole ? Policies.CanModifyServerSettings : Policies.CanModifyStoreSettings)" asp-action="CreateOrEditRole" asp-route-storeId="@storeId" asp-route-role="@role.Role" asp-controller="@(role.IsServerRole ? "UIServer" : "UIStores")">Edit</a>
|
|
<a permission="@(role.IsServerRole ? Policies.CanModifyServerSettings : Policies.CanModifyStoreSettings)" asp-action="DeleteRole" asp-route-storeId="@storeId" asp-route-role="@role.Role" asp-controller="@(role.IsServerRole ? "UIServer" : "UIStores")">Remove</a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|