diff --git a/Classes/Controller/WorkspaceController.php b/Classes/Controller/WorkspaceController.php index 25df93f..7e80fde 100644 --- a/Classes/Controller/WorkspaceController.php +++ b/Classes/Controller/WorkspaceController.php @@ -213,9 +213,10 @@ public function reviewAction(WorkspaceName $workspace): void $workspaceMetadata = $this->workspaceService->getWorkspaceMetadata($contentRepositoryId, $workspace); $baseWorkspaceMetadata = null; $baseWorkspacePermissions = null; - if ($workspaceObj->baseWorkspaceName !== null) { - $baseWorkspace = $contentRepository->findWorkspaceByName($workspaceObj->baseWorkspaceName); - assert($baseWorkspace !== null); + $baseWorkspace = $workspaceObj->baseWorkspaceName !== null + ? $contentRepository->findWorkspaceByName($workspaceObj->baseWorkspaceName) + : null; + if ($baseWorkspace !== null) { $baseWorkspaceMetadata = $this->workspaceService->getWorkspaceMetadata($contentRepositoryId, $baseWorkspace->workspaceName); $baseWorkspacePermissions = $this->authorizationService->getWorkspacePermissions($contentRepositoryId, $baseWorkspace->workspaceName, $this->securityContext->getRoles(), $currentUser->getId()); } @@ -225,7 +226,7 @@ public function reviewAction(WorkspaceName $workspace): void 'baseWorkspaceName' => $workspaceObj->baseWorkspaceName, 'baseWorkspaceLabel' => $baseWorkspaceMetadata?->title->value, 'canPublishToBaseWorkspace' => $baseWorkspacePermissions?->write ?? false, - 'canPublishToWorkspace' => $workspacePermissions?->write ?? false, + 'canPublishToWorkspace' => $workspacePermissions->write, 'siteChanges' => $this->computeSiteChanges($workspaceObj, $contentRepository), 'contentDimensions' => $contentRepository->getContentDimensionSource()->getContentDimensionsOrderedByPriority() ]); @@ -369,10 +370,10 @@ public function updateAction( ); // Update Base Workspace - $this->workspaceService->setBaseWorkspace( + $this->workspacePublishingService->changeBaseWorkspace( $contentRepositoryId, $workspaceName, - $baseWorkspace, + $baseWorkspace ); $this->addFlashMessage( @@ -495,9 +496,9 @@ public function editWorkspaceRoleAssignmentsAction(WorkspaceName $workspaceName) $workspaceRoleAssignments = []; foreach ($this->workspaceService->getWorkspaceRoleAssignments($contentRepositoryId, $workspaceName) as $workspaceRoleAssignment) { - $subjectLabel = match ($workspaceRoleAssignment->subjectType) { + $subjectLabel = match ($workspaceRoleAssignment->subject->type) { WorkspaceRoleSubjectType::USER => $this->userService->findUserById(UserId::fromString($workspaceRoleAssignment->subject->value))?->getLabel(), - default => $workspaceRoleAssignment->subject->value, + WorkspaceRoleSubjectType::GROUP => $workspaceRoleAssignment->subject->value, }; $roleLabel = $workspaceRoleAssignment->role->value; @@ -505,9 +506,9 @@ public function editWorkspaceRoleAssignmentsAction(WorkspaceName $workspaceName) $workspaceRoleAssignments[] = new RoleAssignmentListItem( subjectValue: $workspaceRoleAssignment->subject->value, subjectLabel: $subjectLabel, - subjectTypeValue: $workspaceRoleAssignment->subjectType->value, + subjectTypeValue: $workspaceRoleAssignment->subject->type->value, roleLabel: $roleLabel, - subjectType: $workspaceRoleAssignment->subjectType->value, + subjectType: $workspaceRoleAssignment->subject->type->value, ); } @@ -572,8 +573,8 @@ public function addWorkspaceRoleAssignmentAction( { // TODO: Validate if user can add role assignment to workspace - $subject = WorkspaceRoleSubject::fromString($subjectValue); $subjectType = WorkspaceRoleSubjectType::from($subjectTypeValue); + $subject = WorkspaceRoleSubject::create($subjectType, $subjectValue); $role = WorkspaceRole::from($roleValue); if ($subjectType === WorkspaceRoleSubjectType::USER) { @@ -612,8 +613,10 @@ public function deleteWorkspaceRoleAssignmentAction(WorkspaceName $workspaceName $this->workspaceService->unassignWorkspaceRole( $contentRepositoryId, $workspaceName, - WorkspaceRoleSubjectType::from($subjectType), - WorkspaceRoleSubject::fromString($subjectValue), + WorkspaceRoleSubject::create( + WorkspaceRoleSubjectType::from($subjectType), + $subjectValue + ) ); } catch (\Exception $e) { // TODO: error handling @@ -1535,7 +1538,7 @@ private function addUserRoleAssignment(WorkspaceName $workspaceName, WorkspaceRo ); } - private function addGroupRoleAssignment(WorkspaceName $workspaceName, WorkspaceRoleSubject $subject, WorkspaceRole $role) + private function addGroupRoleAssignment(WorkspaceName $workspaceName, WorkspaceRoleSubject $subject, WorkspaceRole $role): void { // TODO check if group exists? $this->workspaceService->assignWorkspaceRole( diff --git a/Classes/ViewModel/RoleAssignmentListItem.php b/Classes/ViewModel/RoleAssignmentListItem.php index bc054aa..3d827a9 100644 --- a/Classes/ViewModel/RoleAssignmentListItem.php +++ b/Classes/ViewModel/RoleAssignmentListItem.php @@ -27,13 +27,13 @@ #[Flow\Proxy(false)] final readonly class RoleAssignmentListItem { + // todo $subjectType and $subjectTypeValue are exact the same??? public function __construct( public string $subjectValue, public string $subjectLabel, public string $subjectTypeValue, public string $roleLabel, public string $subjectType, - ) - { + ) { } }