public function onControllerSelected(FilterControllerEvent $event) { if (null !== $this->workspace) { return; } $ctrl = $event->getController(); if (is_array($ctrl)) { $ctrl = $ctrl[0]; } if ($ctrl instanceof WorkspaceAwareInterface) { $this->workspaceController = $ctrl; $this->workspace = $ctrl->createWorkspace(); $membershipLoader = $this->workspace->getMembershipLoader(); $membership = null; if (null !== $membershipLoader) { try { $user = $this->tokenStorage->getToken()->getUser(); $membership = $membershipLoader->findMembership($event->getRequest()->get('slug'), $user); if (!$membership instanceof Membership) { throw new LogicException('The membership loader did not return \'Membership\' instance.'); } $project = $membershipLoader->findProjectForEntity($membership->getItem()); $user->addRole($membership->getRole()->getAuthRole()); User::installMembershipInformation($user, $membership); $this->projectSettings->setProject($project); $this->tokenStorage->setToken(new MembershipToken($this->tokenStorage->getToken(), $membership, $project)); } catch (ItemNotFoundException $exception) { throw new AccessDeniedHttpException($exception->getMessage(), $exception); } } else { $oldToken = $this->tokenStorage->getToken(); $this->tokenStorage->setToken(new UsernamePasswordToken($oldToken->getUser(), $oldToken->getCredentials(), $oldToken->getProviderKey(), $oldToken->getUser()->getRoles())); User::installMembershipInformation($this->tokenStorage->getToken()->getUser(), $membership = new Membership()); } $this->workspace->onWorkspaceLoaded($membership); } }
public function insert(Project $project) { $this->transaction->requestTransaction(); try { $id = $project->insert($this->conn); $settings = new ProjectSettings($this->settingsStorage); $settings->setProject($project); $this->eventDispatcher->dispatch(CantigaEvents::PROJECT_CREATED, new ProjectCreatedEvent($project, $settings)); $settings->saveSettings(); return $id; } catch (\Exception $exception) { $this->transaction->requestRollback(); throw $exception; } }