Fixing some issues and probably solving later

This commit is contained in:
Prashant Singh 2019-03-25 15:59:37 +05:30
parent c84e76646e
commit 54d2a000c8
3 changed files with 57 additions and 3 deletions

View File

@ -9,6 +9,12 @@
"type": "project",
"require": {
"php": "^7.1.3",
"ext-openssl": "*",
"ext-pdo": "*",
"ext-mbstring": "*",
"ext-tokenizer": "*",
"ext-pdo_mysql": "*",
"ext-curl": "*",
"barryvdh/laravel-dompdf": "^0.8.0@dev",
"dimsav/laravel-translatable": "^9.0",
"doctrine/dbal": "^2.9@dev",

View File

@ -71,8 +71,56 @@ class AdminServiceProvider extends ServiceProvider
}
}
$tree->items = core()->sortItems($tree->items);
$allowedPermissions = auth()->guard('admin')->user()->role->permissions;
$withoutDots = array();
foreach ($allowedPermissions as $key => $allowedPermission) {
if (!str_contains($allowedPermission, '.')) {
array_push($withoutDots, $allowedPermission);
}
}
$levelThreeKey = function() use($allowedPermissions, $withoutDots) {
$collectSimilar = array();
foreach ($withoutDots as $key => $withoutDot) {
$group = array();
foreach ($allowedPermissions as $key1 => $allowedPermission) {
//pluck a level 3 group & match the dots
if (str_contains($allowedPermission, $withoutDot.'.')) {
array_push($group, $allowedPermission);
}
}
$collectSimilar[$key] = $group;
unset($group);
}
foreach ($collectSimilar as $collected) {
if (count($collected) > 1) {
$first = $collected[0];
$second = $collected[1];
//confirmed, level three key exists
if (str_contains($second, $first.'.')) {
//find the missing key
foreach (config('menu.admin') as $key => $menuItem) {
if ($menuItem['key'] == $first) {
if(bouncer()->hasPermission(config('menu.admin')[$key+1]['key'])) {
//condition met and now just alter the tree
}
}
}
}
}
}
};
$levelThreeKey();
$tree->items = core()->sortItems($tree->items);
$view->with('menu', $tree);
});

View File

@ -18,7 +18,7 @@ class Bouncer
if (! auth()->guard('admin')->check() || ! auth()->guard('admin')->user()->hasPermission($permission))
return false;
}
return true;
}
@ -31,6 +31,6 @@ class Bouncer
public static function allow($permission)
{
if (! auth()->guard('admin')->check() || ! auth()->guard('admin')->user()->hasPermission($permission))
abort(401, 'This action is unauthorized.');
abort(401, 'This action is unauthorized');
}
}