public function shareWithUser(Request $request, $list_id, $usr_id) { $availableRoles = [UsrListOwner::ROLE_USER, UsrListOwner::ROLE_EDITOR, UsrListOwner::ROLE_ADMIN]; if (!$request->request->get('role')) { throw new BadRequestHttpException('Missing role parameter'); } elseif (!in_array($request->request->get('role'), $availableRoles)) { throw new BadRequestHttpException('Role is invalid'); } try { $repository = $this->getUsrListRepository(); $user = $this->getAuthenticatedUser(); $list = $repository->findUserListByUserAndId($user, $list_id); if ($list->getOwner($user)->getRole() < UsrListOwner::ROLE_EDITOR) { throw new ControllerException($this->app->trans('You are not authorized to do this')); } /** @var User $new_owner */ $new_owner = $this->getUserRepository()->find($usr_id); if ($list->hasAccess($new_owner)) { if ($new_owner->getId() == $user->getId()) { throw new ControllerException('You can not downgrade your Admin right'); } $owner = $list->getOwner($new_owner); } else { $owner = new UsrListOwner(); $owner->setList($list); $owner->setUser($new_owner); $list->addOwner($owner); $this->getEntityManager()->persist($owner); } $role = $request->request->get('role'); $owner->setRole($role); $this->getEntityManager()->flush(); $data = ['success' => true, 'message' => $this->app->trans('List shared to user')]; } catch (ControllerException $e) { $data = ['success' => false, 'message' => $e->getMessage()]; } catch (\Exception $e) { $data = ['success' => false, 'message' => $this->app->trans('Unable to share the list with the usr')]; } return $this->app->json($data); }
private function insertUsrLists(EntityManager $em, \Pimple $DI) { $owner1 = new UsrListOwner(); $owner1->setRole(UsrListOwner::ROLE_ADMIN); $owner1->setUser($DI['user']); $owner2 = new UsrListOwner(); $owner2->setRole(UsrListOwner::ROLE_ADMIN); $owner2->setUser($DI['user_alt1']); $list1 = new UsrList(); $list1->setName('new list'); $list1->addOwner($owner1); $owner1->setList($list1); $entry1 = new UsrListEntry(); $entry1->setUser($DI['user']); $entry1->setList($list1); $list1->addEntrie($entry1); $entry2 = new UsrListEntry(); $entry2->setUser($DI['user_alt1']); $entry2->setList($list1); $list1->addEntrie($entry2); $list2 = new UsrList(); $list2->setName('new list'); $list2->addOwner($owner2); $owner2->setList($list2); $entry3 = new UsrListEntry(); $entry3->setUser($DI['user_alt1']); $entry3->setList($list2); $list2->addEntrie($entry3); $entry4 = new UsrListEntry(); $entry4->setUser($DI['user_alt2']); $entry4->setList($list2); $list2->addEntrie($entry4); $em->persist($owner1); $em->persist($owner2); $em->persist($list1); $em->persist($list2); $em->persist($entry1); $em->persist($entry2); $em->persist($entry3); $em->persist($entry4); }
/** * {@inheritDoc} */ public function setUser(\Alchemy\Phrasea\Model\Entities\User $user) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'setUser', array($user)); return parent::setUser($user); }