module permissions for reports/settings/widgets
This commit is contained in:
@ -8,6 +8,20 @@ use App\Http\Requests\Setting\Module as Request;
|
||||
|
||||
class Modules extends Controller
|
||||
{
|
||||
/**
|
||||
* Instantiate a new controller instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$alias = request()->segment(1);
|
||||
|
||||
// Add CRUD permission check
|
||||
$this->middleware('permission:create-' . $alias . '-settings')->only(['create', 'store', 'duplicate', 'import']);
|
||||
$this->middleware('permission:read-' . $alias . '-settings')->only(['index', 'show', 'edit', 'export']);
|
||||
$this->middleware('permission:update-' . $alias . '-settings')->only(['update', 'enable', 'disable']);
|
||||
$this->middleware('permission:delete-' . $alias . '-settings')->only('destroy');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the form for editing the specified resource.
|
||||
*
|
||||
|
@ -43,14 +43,24 @@ class Settings extends Controller
|
||||
$modules->settings[$m->getAlias()] = [
|
||||
'name' => $m->getName(),
|
||||
'description' => $m->getDescription(),
|
||||
'url' => 'settings/' . $m->getAlias(),
|
||||
'url' => $m->getAlias() . '/settings',
|
||||
'icon' => $m->get('icon', 'fa fa-cog'),
|
||||
];
|
||||
}
|
||||
|
||||
event(new \App\Events\Module\SettingShowing($modules));
|
||||
|
||||
return view('settings.settings.index', ['modules' => $modules->settings]);
|
||||
$settings = [];
|
||||
|
||||
foreach ($modules->settings as $alias => $setting) {
|
||||
if (!user()->can('read-' . $alias . '-settings')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$settings[$alias] = $setting;
|
||||
}
|
||||
|
||||
return view('settings.settings.index', ['modules' => $settings]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -699,6 +699,8 @@ class Version200 extends Listener
|
||||
'common-search' => 'r',
|
||||
'common-widgets' => 'c,r,u,d',
|
||||
'modules-api-key' => 'c,u',
|
||||
'offline-payments-settings' => 'r,u,d',
|
||||
'paypal-standard-settings' => 'r,u',
|
||||
'settings-appearance' => 'r,u',
|
||||
'settings-company' => 'r',
|
||||
'settings-defaults' => 'r',
|
||||
@ -721,6 +723,8 @@ class Version200 extends Listener
|
||||
'common-reports' => 'c,r,u,d',
|
||||
'common-search' => 'r',
|
||||
'common-widgets' => 'r',
|
||||
'offline-payments-settings' => 'r,u,d',
|
||||
'paypal-standard-settings' => 'r,u',
|
||||
'settings-company' => 'r',
|
||||
'settings-defaults' => 'r',
|
||||
'settings-email' => 'r',
|
||||
|
@ -95,9 +95,20 @@ class Reports
|
||||
|
||||
public static function getPermission($class)
|
||||
{
|
||||
$class_name = (new \ReflectionClass($class))->getShortName();
|
||||
$arr = explode('\\', $class);
|
||||
|
||||
$permission = 'read-reports-' . Str::kebab($class_name);
|
||||
$prefix = 'read-';
|
||||
|
||||
// Add module
|
||||
if (strtolower($arr[0]) == 'modules') {
|
||||
$prefix .= Str::kebab($arr[1]) . '-';
|
||||
}
|
||||
|
||||
$prefix .= 'reports-';
|
||||
|
||||
$class_name = end($arr);
|
||||
|
||||
$permission = $prefix . Str::kebab($class_name);
|
||||
|
||||
return $permission;
|
||||
}
|
||||
|
@ -76,9 +76,20 @@ class Widgets
|
||||
|
||||
public static function getPermission($class)
|
||||
{
|
||||
$class_name = (new \ReflectionClass($class))->getShortName();
|
||||
$arr = explode('\\', $class);
|
||||
|
||||
$permission = 'read-widgets-' . Str::kebab($class_name);
|
||||
$prefix = 'read-';
|
||||
|
||||
// Add module
|
||||
if (strtolower($arr[0]) == 'modules') {
|
||||
$prefix .= Str::kebab($arr[1]) . '-';
|
||||
}
|
||||
|
||||
$prefix .= 'widgets-';
|
||||
|
||||
$class_name = end($arr);
|
||||
|
||||
$permission = $prefix . Str::kebab($class_name);
|
||||
|
||||
return $permission;
|
||||
}
|
||||
|
Reference in New Issue
Block a user