Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Core/Grand.Domain/Permissions/StandardPermission.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public static partial class StandardPermission
{
//admin area permissions
public static readonly Permission ManageAccessAdminPanel = new() {
Name = "Access admin",
Name = "Access Admin Panel",
SystemName = PermissionSystemName.AccessAdminPanel,
Area = "Admin area",
Category = "Access Admin"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public static readonly Permission ManageProducts = new() {
Name = "Manage Products",
SystemName = PermissionSystemName.Products,
Area = "Admin area",

Check warning on line 8 in src/Core/Grand.Domain/Permissions/StandardPermissionCatalog.cs

View workflow job for this annotation

GitHub Actions / Build and analyze

Define a constant instead of using this literal 'Admin area' 9 times.
Category = CategoryCatalog,
Actions = new List<string> {
PermissionActionName.List, PermissionActionName.Create, PermissionActionName.Edit,
Expand Down Expand Up @@ -95,7 +95,7 @@
};

public static readonly Permission ManageContactAttribute = new() {
Name = "Manage Contact Attribute",
Name = "Manage Contact Attributes",
SystemName = PermissionSystemName.ContactAttributes,
Area = "Admin area",
Category = CategoryCatalog,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public static readonly Permission ManageAffiliates = new() {
Name = "Manage Affiliates",
SystemName = PermissionSystemName.Affiliates,
Area = "Admin area",

Check warning on line 8 in src/Core/Grand.Domain/Permissions/StandardPermissionMarketing.cs

View workflow job for this annotation

GitHub Actions / Build and analyze

Define a constant instead of using this literal 'Admin area' 7 times.
Category = CategoryMarketing,
Actions = new List<string> {
PermissionActionName.List, PermissionActionName.Create, PermissionActionName.Edit,
Expand All @@ -14,7 +14,7 @@
};

public static readonly Permission ManagePushEvents = new() {
Name = "Manage Push Events",
Name = "Manage Push Notifications",
SystemName = PermissionSystemName.PushNotifications,
Area = "Admin area",
Category = CategoryMarketing,
Expand Down
6 changes: 3 additions & 3 deletions src/Core/Grand.Domain/Permissions/StandardPermissionOrder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public static readonly Permission ManageOrders = new() {
Name = "Manage Orders",
SystemName = PermissionSystemName.Orders,
Area = "Admin area",

Check warning on line 8 in src/Core/Grand.Domain/Permissions/StandardPermissionOrder.cs

View workflow job for this annotation

GitHub Actions / Build and analyze

Define a constant instead of using this literal 'Admin area' 9 times.
Category = "Orders",
Actions = new List<string> {
PermissionActionName.List, PermissionActionName.Edit, PermissionActionName.Payments,
Expand All @@ -26,7 +26,7 @@
};

public static readonly Permission ManageOrderStatus = new() {
Name = "Manage Order status",
Name = "Manage Order Status",
SystemName = PermissionSystemName.OrderStatus,
Area = "Admin area",
Category = CategoryOrder
Expand All @@ -44,7 +44,7 @@
};

public static readonly Permission ManageGiftVouchers = new() {
Name = "Manage Gift vouchers",
Name = "Manage Gift Vouchers",
SystemName = PermissionSystemName.GiftVouchers,
Area = "Admin area",
Category = CategoryOrder,
Expand All @@ -66,7 +66,7 @@
};

public static readonly Permission ManagePaymentTransactions = new() {
Name = "Manage Payment Transaction",
Name = "Manage Payment Transactions",
SystemName = PermissionSystemName.PaymentTransactions,
Area = "Admin area",
Category = CategoryOrder,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,40 +5,40 @@
public static readonly Permission DisplayPrices = new() {
Name = "Display Prices",
SystemName = PermissionSystemName.DisplayPrices,
Area = "Public store",

Check warning on line 8 in src/Core/Grand.Domain/Permissions/StandardPermissionPublicStore.cs

View workflow job for this annotation

GitHub Actions / Build and analyze

Define a constant instead of using this literal 'Public store' 6 times.
Category = CategoryPublicStore
};

public static readonly Permission EnableShoppingCart = new() {
Name = "Enable shopping cart",
Name = "Enable Shopping Cart",
SystemName = PermissionSystemName.EnableShoppingCart,
Area = "Public store",
Category = CategoryPublicStore
};

public static readonly Permission EnableWishlist = new() {
Name = "Enable wishlist",
Name = "Enable Wishlist",
SystemName = PermissionSystemName.EnableWishlist,
Area = "Public store",
Category = CategoryPublicStore
};

public static readonly Permission PublicStoreAllowNavigation = new() {
Name = "Allow navigation",
Name = "Allow Navigation",
SystemName = PermissionSystemName.PublicStoreAllowNavigation,
Area = "Public store",
Category = CategoryPublicStore
};

public static readonly Permission AccessClosedStore = new() {
Name = "Access a closed store",
Name = "Access Closed Store",
SystemName = PermissionSystemName.AccessClosedStore,
Area = "Public store",
Category = CategoryPublicStore
};

public static readonly Permission AllowUseApi = new() {
Name = "Allow to use api for web",
Name = "Allow Web API Access",
SystemName = PermissionSystemName.AllowUseApi,
Area = "Public store",
Category = CategoryPublicStore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public static partial class StandardPermission
{
//admin area permissions
public static readonly Permission ManageAccessStoreManagerPanel = new() {
Name = "Access store manager panel",
Name = "Access Store Manager Panel",
SystemName = PermissionSystemName.AccessStorePanel,
Area = "Store area",
Category = "Access Store"
Expand Down
4 changes: 2 additions & 2 deletions src/Core/Grand.Domain/Permissions/StandardPermissionSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public static readonly Permission ManageMessageQueue = new() {
Name = "Manage Message Queue",
SystemName = PermissionSystemName.MessageQueue,
Area = "Admin area",

Check warning on line 8 in src/Core/Grand.Domain/Permissions/StandardPermissionSystem.cs

View workflow job for this annotation

GitHub Actions / Build and analyze

Define a constant instead of using this literal 'Admin area' 8 times.
Category = CategorySystem,
Actions = new List<string> {
PermissionActionName.List, PermissionActionName.Create, PermissionActionName.Edit,
Expand All @@ -14,7 +14,7 @@
};

public static readonly Permission ManageMessageContactForm = new() {
Name = "Manage Message Contact form",
Name = "Manage Message Contact Form",
SystemName = PermissionSystemName.MessageContactForm,
Area = "Admin area",
Category = CategorySystem,
Expand Down Expand Up @@ -51,7 +51,7 @@
};

public static readonly Permission HtmlEditorManagePictures = new() {
Name = "HTML Editor. Manage pictures",
Name = "Manage HTML Editor Pictures",
SystemName = PermissionSystemName.HtmlEditor,
Area = "Admin area",
Category = "Configuration"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public static partial class StandardPermission
{
//admin area permissions
public static readonly Permission ManageAccessVendorPanel = new() {
Name = "Access vendor panel",
Name = "Access Vendor Panel",
SystemName = PermissionSystemName.AccessVendorPanel,
Area = "Vendor area",
Category = "Access Vendor"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
using Grand.Data;
using Grand.Domain.Localization;
using Grand.Domain.Permissions;
using Grand.Infrastructure.Migrations;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

namespace Grand.Module.Migration.Migrations._2._4;

/// <summary>
/// Fixes inconsistent wording of a set of standard permission names (mixed casing, singular/plural
/// mismatches, leftover typos) that were baked into already-installed databases at install time.
/// New installations already get the corrected wording from <see cref="StandardPermission" />.
/// </summary>
public class MigrationUpdateStandardPermissionNames : IMigration
{
//permissions whose display Name was inconsistent; the corrected Name/Area now live on the
//StandardPermission constants themselves, so we reuse them here instead of duplicating strings
private static readonly Permission[] RenamedPermissions = [
StandardPermission.ManageAccessAdminPanel,
StandardPermission.ManageAccessVendorPanel,
StandardPermission.ManageAccessStoreManagerPanel,
StandardPermission.ManageOrderStatus,
StandardPermission.ManageGiftVouchers,
StandardPermission.ManagePaymentTransactions,
StandardPermission.ManageContactAttribute,
StandardPermission.ManageMessageContactForm,
StandardPermission.HtmlEditorManagePictures,
StandardPermission.ManagePushEvents,
StandardPermission.EnableShoppingCart,
StandardPermission.EnableWishlist,
StandardPermission.PublicStoreAllowNavigation,
StandardPermission.AccessClosedStore,
StandardPermission.AllowUseApi
];

public int Priority => 2;
public DbVersion Version => new(2, 4);
public Guid Identity => new("DAEE04E0-573A-4001-9613-E682BE45BCE3");
public string Name => "Unify wording of standard permission names (casing, plurals, typos)";

public bool UpgradeProcess(IServiceProvider serviceProvider)
{
var permissionRepository = serviceProvider.GetRequiredService<IRepository<Permission>>();
var translationRepository = serviceProvider.GetRequiredService<IRepository<TranslationResource>>();
var logService = serviceProvider.GetRequiredService<ILogger<MigrationUpdateStandardPermissionNames>>();

foreach (var renamed in RenamedPermissions)
try
{
var permission = permissionRepository.Table.FirstOrDefault(x => x.SystemName == renamed.SystemName);
if (permission != null && permission.Name != renamed.Name)
{
permission.Name = renamed.Name;
permissionRepository.Update(permission);
}

//the display text is also cached as a translation resource, under a couple of historical
//key/casing variants - update every variant we can find so the corrected text actually shows up
var candidateKeys = new[] {
$"Permission.{renamed.SystemName}",
$"permission.{renamed.SystemName}",
$"permission.{renamed.SystemName}".ToLowerInvariant()
};

var translations = translationRepository.Table
.Where(x => candidateKeys.Contains(x.Name))
.ToList();

var prefix = $"{renamed.Area}. ";
foreach (var translation in translations)
{
//some rows carried an "{Area}. " prefix for the grouped ACL view - keep that prefix
//where it was already there, drop it otherwise, instead of guessing per permission
var newValue = translation.Value.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)
? prefix + renamed.Name
: renamed.Name;

if (translation.Value == newValue) continue;

translation.Value = newValue;
translationRepository.Update(translation);
}
}
catch (Exception ex)
{
logService.LogError(ex, "UpgradeProcess - MigrationUpdateStandardPermissionNames ({SystemName})",
renamed.SystemName);
}

return true;
}
}
Binary file modified src/Web/Grand.Web/App_Data/Resources/DefaultLanguage.xml
Binary file not shown.
Loading