namespace Tests\Helpers;
-use BookStack\Auth\Permissions\EntityPermission;
-use BookStack\Auth\Permissions\RolePermission;
-use BookStack\Auth\Role;
-use BookStack\Auth\User;
use BookStack\Entities\Models\Entity;
+use BookStack\Permissions\Models\EntityPermission;
+use BookStack\Permissions\Models\RolePermission;
+use BookStack\Settings\SettingService;
+use BookStack\Users\Models\Role;
+use BookStack\Users\Models\User;
class PermissionsProvider
{
- protected UserRoleProvider $userRoleProvider;
+ public function __construct(
+ protected UserRoleProvider $userRoleProvider
+ ) {
+ }
- public function __construct(UserRoleProvider $userRoleProvider)
+ public function makeAppPublic(): void
{
- $this->userRoleProvider = $userRoleProvider;
+ $settings = app(SettingService::class);
+ $settings->put('app-public', 'true');
}
/**
if (!$inherit) {
// Set default permissions to not allow actions so that only the provided role permissions are at play.
- $permissions[] = ['role_id' => null, 'user_id' => null, 'view' => false, 'create' => false, 'update' => false, 'delete' => false];
+ $permissions[] = ['role_id' => 0, 'view' => false, 'create' => false, 'update' => false, 'delete' => false];
}
foreach ($roles as $role) {
$this->addEntityPermissionEntries($entity, $permissions);
}
- public function addEntityPermission(Entity $entity, array $actionList, ?Role $role = null, ?User $user = null)
+ public function addEntityPermission(Entity $entity, array $actionList, Role $role)
+ {
+ $permissionData = $this->actionListToEntityPermissionData($actionList, $role->id);
+ $this->addEntityPermissionEntries($entity, [$permissionData]);
+ }
+
+ public function setFallbackPermissions(Entity $entity, array $actionList)
{
- $permissionData = $this->actionListToEntityPermissionData($actionList, $role->id ?? null, $user->id ?? null);
+ $entity->permissions()->where('role_id', '=', 0)->delete();
+ $permissionData = $this->actionListToEntityPermissionData($actionList, 0);
$this->addEntityPermissionEntries($entity, [$permissionData]);
}
*/
public function disableEntityInheritedPermissions(Entity $entity): void
{
- $entity->permissions()->whereNull(['user_id', 'role_id'])->delete();
+ $entity->permissions()->where('role_id', '=', 0)->delete();
$fallback = $this->actionListToEntityPermissionData([]);
$this->addEntityPermissionEntries($entity, [$fallback]);
}
* the format to entity permission data, where permission is granted if the action is in the
* given actionList array.
*/
- protected function actionListToEntityPermissionData(array $actionList, int $roleId = null, int $userId = null): array
+ protected function actionListToEntityPermissionData(array $actionList, int $roleId = 0): array
{
- $permissionData = ['role_id' => $roleId, 'user_id' => $userId];
+ $permissionData = ['role_id' => $roleId];
foreach (EntityPermission::PERMISSIONS as $possibleAction) {
$permissionData[$possibleAction] = in_array($possibleAction, $actionList);
}