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}