/** * @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); }
/** * 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); }
/** * Determines if user is admin * * @return bool */ public function isAdmin() { if ($this->role !== null) { return $this->role->isAdmin(); } else { return false; } }
/** * @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); }
/** * @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(); }