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;
 }
Example #2
0
 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);
     }
 }
Example #3
0
 /**
  * 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()]);
 }
Example #4
0
 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;
     }
 }