示例#1
0
 /**
  * @param ObjectManager $manager
  */
 public function load(ObjectManager $manager)
 {
     $translator = $this->container->get('translator');
     $role = new Role();
     $role->setName($translator->trans('mautic.user.role.admin.name', array(), 'fixtures'));
     $role->setDescription($translator->trans('mautic.user.role.admin.description', array(), 'fixtures'));
     $role->setIsAdmin(1);
     $manager->persist($role);
     $manager->flush();
     $this->addReference('admin-role', $role);
 }
示例#2
0
 /**
  * Generate the role's permissions.
  *
  * @param Role  $entity
  * @param array $rawPermissions (i.e. from request)
  */
 public function setRolePermissions(Role &$entity, $rawPermissions)
 {
     if (!is_array($rawPermissions)) {
         return;
     }
     //set permissions if applicable and if the user is not an admin
     $permissions = !$entity->isAdmin() && !empty($rawPermissions) ? $this->security->generatePermissions($rawPermissions) : [];
     foreach ($permissions as $permissionEntity) {
         $entity->addPermission($permissionEntity);
     }
     $entity->setRawPermissions($rawPermissions);
 }
示例#3
0
 /**
  * Determines if user is admin
  *
  * @return bool
  */
 public function isAdmin()
 {
     if ($this->role !== null) {
         return $this->role->isAdmin();
     } else {
         return false;
     }
 }
示例#4
0
 /**
  * @param ObjectManager $manager
  */
 public function load(ObjectManager $manager)
 {
     $role = new Role();
     $role->setName('Administrators');
     $role->setDescription('Has access to everything.');
     $role->setIsAdmin(1);
     $manager->persist($role);
     $manager->flush();
     $this->addReference('admin-role', $role);
     $role = new Role();
     $role->setName('Sales Team');
     $role->setDescription('Has access to sales');
     $role->setIsAdmin(0);
     $permissions = ['user:profile' => ['editname'], 'lead:leads' => ['full']];
     $this->container->get('mautic.factory')->getModel('user.role')->setRolePermissions($role, $permissions);
     $manager->persist($role);
     $manager->flush();
     $this->addReference('sales-role', $role);
 }
示例#5
0
 /**
  * @param Entity\Role $role
  *
  * @return array
  */
 private function getPermissionsConfig(Entity\Role $role)
 {
     $permissionObjects = $this->factory->getSecurity()->getPermissionObjects();
     $translator = $this->factory->getTranslator();
     $permissionsArray = $role->getId() ? $this->factory->getEntityManager()->getRepository('MauticUserBundle:Permission')->getPermissionsByRole($role, true) : array();
     $permissions = array();
     $permissionsList = array();
     /** @var \Mautic\CoreBundle\Security\Permissions\AbstractPermissions $object */
     foreach ($permissionObjects as $object) {
         if (!is_object($object)) {
             continue;
         }
         if ($object->isEnabled()) {
             $bundle = $object->getName();
             $label = $translator->trans("mautic.{$bundle}.permissions.header");
             //convert the permission bits from the db into readable names
             $data = $object->convertBitsToPermissionNames($permissionsArray);
             //get the ratio of granted/total
             list($granted, $total) = $object->getPermissionRatio($data);
             $permissions[$bundle] = array('label' => $label, 'permissionObject' => $object, 'ratio' => array($granted, $total), 'data' => $data);
             $perms = $object->getPermissions();
             foreach ($perms as $level => $perm) {
                 $levelPerms = array_keys($perm);
                 $object->parseForJavascript($levelPerms);
                 $permissionsList[$bundle][$level] = $levelPerms;
             }
         }
     }
     //order permissions by label
     uasort($permissions, function ($a, $b) {
         return strnatcmp($a['label'], $b['label']);
     });
     return array('config' => $permissions, 'list' => $permissionsList);
 }
 /**
  * {@inheritDoc}
  */
 public function __toString()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, '__toString', array());
     return parent::__toString();
 }