mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-10 09:19:24 +01:00
Make Role Permissions more human legible (#6191)
Had to rename `CanModifyStoreWebhooks` to `CanModifyWebhooks` for this, but the value stayed the same, so I don't think it's a big deal. Closes #6183.
This commit is contained in:
parent
f59751853a
commit
3342122be2
6 changed files with 21 additions and 9 deletions
|
@ -1,8 +1,10 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace BTCPayServer.Client
|
namespace BTCPayServer.Client
|
||||||
{
|
{
|
||||||
|
@ -16,7 +18,7 @@ namespace BTCPayServer.Client
|
||||||
public const string CanUseLightningNodeInStore = "btcpay.store.canuselightningnode";
|
public const string CanUseLightningNodeInStore = "btcpay.store.canuselightningnode";
|
||||||
public const string CanModifyServerSettings = "btcpay.server.canmodifyserversettings";
|
public const string CanModifyServerSettings = "btcpay.server.canmodifyserversettings";
|
||||||
public const string CanModifyStoreSettings = "btcpay.store.canmodifystoresettings";
|
public const string CanModifyStoreSettings = "btcpay.store.canmodifystoresettings";
|
||||||
public const string CanModifyStoreWebhooks = "btcpay.store.webhooks.canmodifywebhooks";
|
public const string CanModifyWebhooks = "btcpay.store.webhooks.canmodifywebhooks";
|
||||||
public const string CanModifyStoreSettingsUnscoped = "btcpay.store.canmodifystoresettings:";
|
public const string CanModifyStoreSettingsUnscoped = "btcpay.store.canmodifystoresettings:";
|
||||||
public const string CanViewStoreSettings = "btcpay.store.canviewstoresettings";
|
public const string CanViewStoreSettings = "btcpay.store.canviewstoresettings";
|
||||||
public const string CanViewReports = "btcpay.store.canviewreports";
|
public const string CanViewReports = "btcpay.store.canviewreports";
|
||||||
|
@ -48,7 +50,7 @@ namespace BTCPayServer.Client
|
||||||
yield return CanViewInvoices;
|
yield return CanViewInvoices;
|
||||||
yield return CanCreateInvoice;
|
yield return CanCreateInvoice;
|
||||||
yield return CanModifyInvoices;
|
yield return CanModifyInvoices;
|
||||||
yield return CanModifyStoreWebhooks;
|
yield return CanModifyWebhooks;
|
||||||
yield return CanModifyServerSettings;
|
yield return CanModifyServerSettings;
|
||||||
yield return CanModifyStoreSettings;
|
yield return CanModifyStoreSettings;
|
||||||
yield return CanViewStoreSettings;
|
yield return CanViewStoreSettings;
|
||||||
|
@ -104,6 +106,16 @@ namespace BTCPayServer.Client
|
||||||
{
|
{
|
||||||
return policy.StartsWith("btcpay.user", StringComparison.OrdinalIgnoreCase);
|
return policy.StartsWith("btcpay.user", StringComparison.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static readonly CultureInfo _culture = new (CultureInfo.InvariantCulture.Name);
|
||||||
|
public static string DisplayName(string policy)
|
||||||
|
{
|
||||||
|
var p = policy.Split(".");
|
||||||
|
if (p.Length < 3 || p[0] != "btcpay") return policy;
|
||||||
|
var constName = typeof(Policies).GetFields().Select(f => f.Name).FirstOrDefault(f => f.Equals(p[^1], StringComparison.OrdinalIgnoreCase));
|
||||||
|
var perm = string.IsNullOrEmpty(constName) ? string.Join(' ', p[2..]) : Regex.Replace(constName, "([A-Z])", " $1", RegexOptions.Compiled).Trim();
|
||||||
|
return $"{_culture.TextInfo.ToTitleCase(p[1])}: {_culture.TextInfo.ToTitleCase(perm)}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PermissionSet
|
public class PermissionSet
|
||||||
|
@ -247,7 +259,7 @@ namespace BTCPayServer.Client
|
||||||
Policies.CanManagePullPayments,
|
Policies.CanManagePullPayments,
|
||||||
Policies.CanModifyInvoices,
|
Policies.CanModifyInvoices,
|
||||||
Policies.CanViewStoreSettings,
|
Policies.CanViewStoreSettings,
|
||||||
Policies.CanModifyStoreWebhooks,
|
Policies.CanModifyWebhooks,
|
||||||
Policies.CanModifyPaymentRequests,
|
Policies.CanModifyPaymentRequests,
|
||||||
Policies.CanManagePayouts,
|
Policies.CanManagePayouts,
|
||||||
Policies.CanUseLightningNodeInStore);
|
Policies.CanUseLightningNodeInStore);
|
||||||
|
|
|
@ -1711,7 +1711,7 @@ namespace BTCPayServer.Tests
|
||||||
var user = tester.NewAccount();
|
var user = tester.NewAccount();
|
||||||
user.GrantAccess();
|
user.GrantAccess();
|
||||||
user.RegisterDerivationScheme("BTC");
|
user.RegisterDerivationScheme("BTC");
|
||||||
var clientProfile = await user.CreateClient(Policies.CanModifyStoreWebhooks, Policies.CanCreateInvoice);
|
var clientProfile = await user.CreateClient(Policies.CanModifyWebhooks, Policies.CanCreateInvoice);
|
||||||
var hook = await clientProfile.CreateWebhook(user.StoreId, new CreateStoreWebhookRequest()
|
var hook = await clientProfile.CreateWebhook(user.StoreId, new CreateStoreWebhookRequest()
|
||||||
{
|
{
|
||||||
Url = fakeServer.ServerUri.AbsoluteUri,
|
Url = fakeServer.ServerUri.AbsoluteUri,
|
||||||
|
|
|
@ -527,7 +527,7 @@ retry:
|
||||||
{
|
{
|
||||||
var server = new FakeServer();
|
var server = new FakeServer();
|
||||||
await server.Start();
|
await server.Start();
|
||||||
var client = await CreateClient(Policies.CanModifyStoreWebhooks);
|
var client = await CreateClient(Policies.CanModifyWebhooks);
|
||||||
var wh = await client.CreateWebhook(StoreId, new CreateStoreWebhookRequest()
|
var wh = await client.CreateWebhook(StoreId, new CreateStoreWebhookRequest()
|
||||||
{
|
{
|
||||||
AutomaticRedelivery = false,
|
AutomaticRedelivery = false,
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace BTCPayServer.Controllers.Greenfield
|
||||||
{
|
{
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Greenfield,
|
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Greenfield,
|
||||||
Policy = Policies.CanModifyStoreWebhooks)]
|
Policy = Policies.CanModifyWebhooks)]
|
||||||
[EnableCors(CorsPolicies.All)]
|
[EnableCors(CorsPolicies.All)]
|
||||||
public class GreenfieldStoreWebhooksController : ControllerBase
|
public class GreenfieldStoreWebhooksController : ControllerBase
|
||||||
{
|
{
|
||||||
|
|
|
@ -513,8 +513,8 @@ namespace BTCPayServer.Controllers
|
||||||
{Policies.CanDeleteUser, ("Delete user", "Allows deleting the user to whom it is assigned. Admin users can delete any user without this permission.")},
|
{Policies.CanDeleteUser, ("Delete user", "Allows deleting the user to whom it is assigned. Admin users can delete any user without this permission.")},
|
||||||
{Policies.CanModifyStoreSettings, ("Modify your stores", "Allows managing invoices on all your stores and modify their settings.")},
|
{Policies.CanModifyStoreSettings, ("Modify your stores", "Allows managing invoices on all your stores and modify their settings.")},
|
||||||
{$"{Policies.CanModifyStoreSettings}:", ("Manage selected stores", "Allows managing invoices on the selected stores and modify their settings.")},
|
{$"{Policies.CanModifyStoreSettings}:", ("Manage selected stores", "Allows managing invoices on the selected stores and modify their settings.")},
|
||||||
{Policies.CanModifyStoreWebhooks, ("Modify stores webhooks", "Allows modifying the webhooks of all your stores.")},
|
{Policies.CanModifyWebhooks, ("Modify stores webhooks", "Allows modifying the webhooks of all your stores.")},
|
||||||
{$"{Policies.CanModifyStoreWebhooks}:", ("Modify selected stores' webhooks", "Allows modifying the webhooks of the selected stores.")},
|
{$"{Policies.CanModifyWebhooks}:", ("Modify selected stores' webhooks", "Allows modifying the webhooks of the selected stores.")},
|
||||||
{Policies.CanViewStoreSettings, ("View your stores", "Allows viewing stores settings.")},
|
{Policies.CanViewStoreSettings, ("View your stores", "Allows viewing stores settings.")},
|
||||||
{$"{Policies.CanViewStoreSettings}:", ("View your stores", "Allows viewing the selected stores' settings.")},
|
{$"{Policies.CanViewStoreSettings}:", ("View your stores", "Allows viewing the selected stores' settings.")},
|
||||||
{Policies.CanViewReports, ("View your reports", "Allows viewing reports.")},
|
{Policies.CanViewReports, ("View your reports", "Allows viewing reports.")},
|
||||||
|
|
|
@ -96,7 +96,7 @@
|
||||||
{
|
{
|
||||||
@foreach (var policy in role.Permissions)
|
@foreach (var policy in role.Permissions)
|
||||||
{
|
{
|
||||||
<code class="d-block text-break">@policy</code>
|
<code class="d-block text-break">@Policies.DisplayName(policy)</code>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</td>
|
</td>
|
||||||
|
|
Loading…
Add table
Reference in a new issue