Estoy ocupado con una aplicación Symfony2 que necesita algunos permisos de ACL.Acceso a la ACL de Symfony2 a múltiples objetos para múltiples usuarios
Soy un novato con Symfony2, así que no estoy seguro de si estoy viendo esto de la manera correcta.
Tengo varios clientes, cada uno con varias cuentas.
Tengo un súper administrador (ROLE_SUPER_ADMIN) que tiene acceso a todos los clientes y todas las cuentas. Luego tengo una función de administrador (ROLE_ADMIN), que solo se permitirá el acceso a un cliente específico y todas las cuentas para esos clientes. Luego están los agentes (ROLE_AGENT), que solo deberían tener permiso para ciertas cuentas para los clientes.
que vi en la documentación de Symfony que para dar al usuario acceso a un objeto específico, puedo usar el siguiente código:
// creating the ACL
$aclProvider = $this->get('security.acl.provider');
$objectIdentity = ObjectIdentity::fromDomainObject($account);
$acl = $aclProvider->createAcl($objectIdentity);
// retrieving the security identity of the currently logged-in user
$securityContext = $this->get('security.context');
$user = $securityContext->getToken()->getUser();
$securityIdentity = UserSecurityIdentity::fromAccount($user);
// grant owner access
$acl->insertObjectAce($securityIdentity, MaskBuilder::MASK_OWNER);
$aclProvider->updateAcl($acl);
Así que cuando se crea una nueva cuenta, puedo dar la sesión actual en acceso de usuario a la cuenta recién creada. ¿Pero cómo otorgo acceso a todos los otros usuarios del acceso de cliente a la cuenta?
No quiero recorrer todos los usuarios y ejecutar el código anterior para cada usuario.
Entonces, por ejemplo, al ver todos los clientes, necesito saber a qué clientes tiene acceso el usuario, o cuando veo las cuentas, necesito saber a qué cuentas tiene acceso el usuario.
También cuando se agrega un nuevo usuario a un cliente, el usuario automáticamente necesita tener acceso a todas las cuentas para ese cliente.
Como nota al margen, solo necesito saber si el usuario tiene acceso a la cuenta/cliente. Si un usuario tiene acceso, entonces se le permite automáticamente ver/editar/eliminar, etc.
Si necesita asignar permisos a cada usuario en un rol específico, debería usar 'ACL' basado en roles ... que se parece mucho a la cuenta. Debería poder escribir algún código de ejemplo (en las próximas horas). Sin embargo, si los roles no son algo que buscas, ** necesitarás ** iterar a través de cada usuario al que quieras asignar permiso ... –