fix stuff + module management
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()),
|
||||
|
||||
@@ -50,11 +50,11 @@
|
||||
<a class="btn btn-default btn-xs" title="{intl l='Read the documentation of this module'}" href="{url path="/admin/module/documentation/$ID"}"><span class="glyphicon glyphicon-book"></span></a>
|
||||
{/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"}
|
||||
<a class="btn btn-default btn-xs" title="{intl l='Edit this module'}" href="{url path="/admin/module/update/$ID"}"><span class="glyphicon glyphicon-edit"></span></a>
|
||||
{/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"}
|
||||
<a class="btn btn-default btn-xs module-delete-action" title="{intl l='Delete this module'}" href="#delete_module_dialog" data-id="{$ID}" data-toggle="modal"><span class="glyphicon glyphicon-trash"></span></a>
|
||||
{/loop}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user