improved permissions trait

This commit is contained in:
Denis Duliçi 2020-07-19 12:09:17 +03:00
parent f2522a4c78
commit 1cd85d446c

View File

@ -33,17 +33,17 @@ trait Permissions
public function attachPermissionsToAdminRoles($permissions) public function attachPermissionsToAdminRoles($permissions)
{ {
$this->attachPermissionsToAllRoles($permissions, 'read-admin-panel'); $this->applyPermissionsToRoles($this->getDefaultAdminRoles(), 'attach', $permissions);
} }
public function attachPermissionsToPortalRoles($permissions) public function attachPermissionsToPortalRoles($permissions)
{ {
$this->attachPermissionsToAllRoles($permissions, 'read-client-portal'); $this->applyPermissionsToRoles($this->getDefaultPortalRoles(), 'attach', $permissions);
} }
public function attachPermissionsToAllRoles($permissions, $require = 'read-admin-panel') public function attachPermissionsToAllRoles($permissions, $require = 'read-admin-panel')
{ {
$this->applyPermissionsToAllRoles('attach', $permissions, $require); $this->applyPermissionsToRoles($this->getRoles($require), 'attach', $permissions);
} }
public function detachPermissionsByRoleNames($roles) public function detachPermissionsByRoleNames($roles)
@ -57,22 +57,22 @@ trait Permissions
public function detachPermissionsFromAdminRoles($permissions) public function detachPermissionsFromAdminRoles($permissions)
{ {
$this->detachPermissionsFromAllRoles($permissions, 'read-admin-panel'); $this->applyPermissionsToRoles($this->getDefaultAdminRoles(), 'detach', $permissions);
} }
public function detachPermissionsFromPortalRoles($permissions) public function detachPermissionsFromPortalRoles($permissions)
{ {
$this->detachPermissionsFromAllRoles($permissions, 'read-client-portal'); $this->applyPermissionsToRoles($this->getDefaultPortalRoles(), 'detach', $permissions);
} }
public function detachPermissionsFromAllRoles($permissions, $require = 'read-admin-panel') public function detachPermissionsFromAllRoles($permissions, $require = 'read-admin-panel')
{ {
$this->applyPermissionsToAllRoles('detach', $permissions, $require); $this->applyPermissionsToRoles($this->getRoles($require), 'detach', $permissions, $require);
} }
public function applyPermissionsToAllRoles($apply, $permissions, $require = 'read-admin-panel') public function applyPermissionsToRoles($roles, $apply, $permissions)
{ {
$this->getRoles($require)->each(function ($role) use ($apply, $permissions) { $roles->each(function ($role) use ($apply, $permissions) {
$f1 = $apply . 'PermissionsByAction'; $f1 = $apply . 'PermissionsByAction';
$f2 = $apply . 'Permission'; $f2 = $apply . 'Permission';
@ -113,7 +113,7 @@ trait Permissions
} }
} }
public function attachDefaultModulePermissions($module, $require = 'read-admin-panel') public function attachDefaultModulePermissions($module, $require = null)
{ {
$this->attachModuleReportPermissions($module, $require); $this->attachModuleReportPermissions($module, $require);
@ -122,7 +122,7 @@ trait Permissions
$this->attachModuleSettingPermissions($module, $require); $this->attachModuleSettingPermissions($module, $require);
} }
public function attachModuleReportPermissions($module, $require = 'read-admin-panel') public function attachModuleReportPermissions($module, $require = null)
{ {
if (is_string($module)) { if (is_string($module)) {
$module = module($module); $module = module($module);
@ -142,10 +142,12 @@ trait Permissions
$permissions[] = $this->createModuleReportPermission($module, $class); $permissions[] = $this->createModuleReportPermission($module, $class);
} }
$this->attachPermissionsToAllRoles($permissions, $require); $require
? $this->attachPermissionsToAllRoles($permissions, $require)
: $this->attachPermissionsToAdminRoles($permissions);
} }
public function attachModuleWidgetPermissions($module, $require = 'read-admin-panel') public function attachModuleWidgetPermissions($module, $require = null)
{ {
if (is_string($module)) { if (is_string($module)) {
$module = module($module); $module = module($module);
@ -165,10 +167,12 @@ trait Permissions
$permissions[] = $this->createModuleWidgetPermission($module, $class); $permissions[] = $this->createModuleWidgetPermission($module, $class);
} }
$this->attachPermissionsToAllRoles($permissions, $require); $require
? $this->attachPermissionsToAllRoles($permissions, $require)
: $this->attachPermissionsToAdminRoles($permissions);
} }
public function attachModuleSettingPermissions($module, $require = 'read-admin-panel') public function attachModuleSettingPermissions($module, $require = null)
{ {
if (is_string($module)) { if (is_string($module)) {
$module = module($module); $module = module($module);
@ -183,7 +187,9 @@ trait Permissions
$permissions[] = $this->createModuleSettingPermission($module, 'read'); $permissions[] = $this->createModuleSettingPermission($module, 'read');
$permissions[] = $this->createModuleSettingPermission($module, 'update'); $permissions[] = $this->createModuleSettingPermission($module, 'update');
$this->attachPermissionsToAllRoles($permissions, $require); $require
? $this->attachPermissionsToAllRoles($permissions, $require)
: $this->attachPermissionsToAdminRoles($permissions);
} }
public function createModuleReportPermission($module, $class) public function createModuleReportPermission($module, $class)
@ -359,4 +365,26 @@ trait Permissions
return $require ? $role->hasPermission($require) : true; return $require ? $role->hasPermission($require) : true;
}); });
} }
public function getDefaultAdminRoles($custom = null)
{
$roles = Role::whereIn('name', $custom ?? ['admin', 'manager'])->get();
if ($roles->isNotEmpty()) {
return $roles;
}
return $this->getRoles('read-admin-panel');
}
public function getDefaultPortalRoles($custom = null)
{
$roles = Role::whereIn('name', $custom ?? ['customer'])->get();
if ($roles->isNotEmpty()) {
return $roles;
}
return $this->getRoles('read-client-portal');
}
} }