С избирателем я могу назначить доступ пользователям для просмотра или редактирования... файла
Я хочу использовать избирателя, чтобы дать пользователям права доступа к папкам для просмотра диспетчера редактирования... в Symfony 3.4 я использую acl и делаю это без проблем, а поскольку в версии 4 Symfony мы не можем ее использовать или у меня ее нет В любой документации по этому вопросу я хочу использовать голосование и не знаю, могу ли я применить доступ пользователя к другому пользователю из него. Вот код, который я использую в ACL для регистрации нового доступа к папке для пользователя
$aclProvider = $this->get('security.acl.provider'); $objectIdentity = ObjectIdentity::fromDomainObject($folder); try { $acl = $aclProvider->createAcl($objectIdentity); } catch (\Exception $e) { $acl = $aclProvider->findAcl($objectIdentity); } // retrieving the security identity of the currently logged-in user $securityIdentity = UserSecurityIdentity::fromAccount($user); $roles = ["view", "edit", "management", "administration", "noaccess"]; if (in_array($role, $roles)) { $aces = $acl->getObjectAces(); foreach ($aces as $index => $ace) { if ($ace->getSecurityIdentity() == $securityIdentity) { /* $ttt[$index]=$ace->getSecurityIdentity(); print_r($ttt);*/ $acl->deleteObjectAce($index); } } } // grant role access switch ($role) { case "view": $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_VIEW); break; case "edit": $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_EDIT); break; case "management": $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_MASTER); break; case "administration": if (true === $this->isGranted('OWNER', $folder) || $this->isGranted('ROLE_ADMIN') ) { $acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER); } else { return new JsonResponse(array('success' => false,"message" > => "Vous n'avez pas la permission de donner l'accès à ce dossier " . $folder->getName() . " !")); } break; case "noaccess": break; default: throw $this->createNotFoundException(); } $aclProvider->updateAcl($acl); $em = $this->getDoctrine()->getManager(); $documents = $em->getRepository('AppBundle:Document')->findByFolder($folder); foreach ($documents as $document) { $this->grantAccessToFile($document, $user, $role); } $folders = $em->getRepository('AppBundle:Folder')->findBySubfolder($folder); foreach ($folders as $oneFolder) { $this->grantAccessToFolder($oneFolder, $user, $role); }