private function isAllowedForArea(Entity $entity, MembershipEntityInterface $who, $editable = false) { if ($entity->getType() == 'Area') { if (!$editable || $this->settings->get(MilestoneSettings::AREA_CAN_UPDATE_OWN_PROGRESS)->getValue()) { return $who->getEntity()->getId() == $entity->getId(); } } return false; }
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); } }
/** * Defines a filter for extension point implementations, which allows only the specified * service, which is read from project settings * * @param ProjectSettings $settings Settings storage * @param string $key setting name * @return ExtensionPointFilter */ public function fromSettings(ProjectSettings $settings, $key) { return $this->withServices([$settings->get($key)->getValue()]); }
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; } }