diff --git a/core/lib/Thelia/Core/Security/SecurityContext.php b/core/lib/Thelia/Core/Security/SecurityContext.php index c5051af67..e97a19877 100755 --- a/core/lib/Thelia/Core/Security/SecurityContext.php +++ b/core/lib/Thelia/Core/Security/SecurityContext.php @@ -177,14 +177,18 @@ class SecurityContext continue; } + if(!array_key_exists('module', $userPermissions)) { + return false; + } + $module = strtolower($module); - if (!array_key_exists($module, $userPermissions)) { + if (!array_key_exists($module, $userPermissions['module'])) { return false; } foreach ($accesses as $access) { - if (!$userPermissions[$module]->can($access)) { + if (!$userPermissions['module'][$module]->can($access)) { return false; } } diff --git a/core/lib/Thelia/Model/Admin.php b/core/lib/Thelia/Model/Admin.php index 84fb65b35..7c88ee8d2 100755 --- a/core/lib/Thelia/Model/Admin.php +++ b/core/lib/Thelia/Model/Admin.php @@ -35,15 +35,24 @@ class Admin extends BaseAdmin implements UserInterface return AdminResources::SUPERADMINISTRATOR; } - $userPermissionsQuery = ProfileResourceQuery::create() + $userResourcePermissionsQuery = ProfileResourceQuery::create() ->joinResource("resource", Criteria::LEFT_JOIN) ->withColumn('resource.code', 'code') ->filterByProfileId($profileId) ->find(); + $userModulePermissionsQuery = ProfileModuleQuery::create() + ->joinModule("module", Criteria::LEFT_JOIN) + ->withColumn('module.code', 'code') + ->filterByProfileId($profileId) + ->find(); + $userPermissions = array(); - foreach($userPermissionsQuery as $userPermission) { - $userPermissions[$userPermission->getVirtualColumn('code')] = new AccessManager($userPermission->getAccess()); + foreach($userResourcePermissionsQuery as $userResourcePermission) { + $userPermissions[$userResourcePermission->getVirtualColumn('code')] = new AccessManager($userResourcePermission->getAccess()); + } + foreach($userModulePermissionsQuery as $userModulePermission) { + $userPermissions['module'][strtolower($userModulePermission->getVirtualColumn('code'))] = new AccessManager($userModulePermission->getAccess()); } return $userPermissions; diff --git a/install/insert.sql b/install/insert.sql index c49f3e210..42470c72b 100755 --- a/install/insert.sql +++ b/install/insert.sql @@ -47,8 +47,7 @@ INSERT INTO `config` (`name`, `value`, `secured`, `hidden`, `created_at`, `updat INSERT INTO `module` (`id`, `code`, `type`, `activate`, `position`, `full_namespace`, `created_at`, `updated_at`) VALUES (1, 'TheliaDebugBar', 1, 1, 1, 'TheliaDebugBar\\TheliaDebugBar', NOW(), NOW()), (2, 'Colissimo', 2, 0, 1, 'Colissimo\\Colissimo', NOW(), NOW()), -(3, 'Cheque', 3, 0, 1, 'Cheque\\Cheque', NOW(), NOW()), -(4, 'FakeCB', 3, 0, 2, 'FakeCB\\FakeCB', NOW(), NOW()); +(3, 'Cheque', 3, 0, 1, 'Cheque\\Cheque', NOW(), NOW()); INSERT INTO `module_i18n` (`id`, `locale`, `title`, `description`, `chapo`, `postscriptum`) VALUES ('1', 'en_US', 'Debug bar', NULL, NULL, NULL), @@ -1225,7 +1224,7 @@ INSERT INTO resource (`id`, `code`, `created_at`, `updated_at`) VALUES (14, 'admin.configuration.language', NOW(), NOW()), (15, 'admin.configuration.mailing-system', NOW(), NOW()), (16, 'admin.configuration.message', NOW(), NOW()), -(17, 'admin.configuration.module', NOW(), NOW()), +(17, 'admin.module', NOW(), NOW()), (18, 'admin.order', NOW(), NOW()), (19, 'admin.product', NOW(), NOW()), (20, 'admin.configuration.profile', NOW(), NOW()), diff --git a/templates/admin/default/includes/module-block.html b/templates/admin/default/includes/module-block.html index d9ea61993..1cfdec3c2 100644 --- a/templates/admin/default/includes/module-block.html +++ b/templates/admin/default/includes/module-block.html @@ -50,11 +50,11 @@ {/loop*} - {loop type="auth" name="can_change" role="ADMIN" resource="admin.modules" access="UPDATE"} + {loop type="auth" name="can_change" role="ADMIN" resource="admin.module" access="UPDATE"} {/loop} - {loop type="auth" name="can_delete" role="ADMIN" resource="admin.modules" access="DELETE"} + {loop type="auth" name="can_delete" role="ADMIN" resource="admin.module" access="DELETE"} {/loop}