/** * Load acl fixture * * @access public * @param ObjectManager $manager */ public function load(ObjectManager $manager) { $userModule = "Users"; $userEditRoute = "userEdit"; $courseModule = "Courses"; $coursesCalendarRoute = "coursesCalendar"; $coursesMoreRoute = "coursesMore"; $courseOutlines = "courseOutlines"; $coursesEnrollRoute = "coursesEnroll"; $coursesLeaveRoute = "coursesLeave"; $coursesEditRoute = "coursesEdit"; $coursesNewRoute = "coursesNew"; $coursesPendingRoute = "coursesPending"; $coursesListRoute = "courses"; $coursesVoteRoute = "studentEvaluation"; $courseEvaluation = "courseEvaluations"; $newCourseEvaluation = "newCourseEvaluation"; $editCourseEvaluation = "editCourseEvaluation"; $instructorCalendar = "coursesInstructorCalendar"; $coursesInstructorTrainingRoute = "coursesInstructorTraining"; $examBookingRoute = "examBooking"; $resourcesListPerCourseRoute = "resourcesListPerCourse"; $resourcesResourceDownloadRoute = "resourcesResourceDownload"; $resourcesNewPerCourseRoute = "resourcesNewPerCourse"; $resourcesEditRoute = "resourcesEdit"; $organizationModule = "Organizations"; $organizationUsersRoute = "organizationUsers"; $organizationUsersListRoute = "organizationUsersList"; $organizationUsersNewRoute = "organizationUsersNew"; $organizationUsersEditRoute = "organizationUsersEdit"; $organizationUsersDeleteRoute = "organizationUsersDelete"; $organizationsPendingRoute = "organizationsPending"; $organizationsDownloadRoute = "organizationsDownload"; $listAtcOrgsRoute = "list_atc_orgs"; $listAtpOrgsRoute = "list_atp_orgs"; $orgTypeRoute = "org_type"; $orgMoreRoute = "more"; $orgNewRoute = "new_org"; $orgEditRoute = "edit_org"; $saveStateRoute = "saveState"; $acls = array(array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $userModule, 'route' => $userEditRoute), array('role' => RoleEntity::PROCTOR_ROLE, 'module' => $userModule, 'route' => $userEditRoute), array('role' => RoleEntity::STUDENT_ROLE, 'module' => $userModule, 'route' => $userEditRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $userModule, 'route' => $userEditRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $userModule, 'route' => $userEditRoute), array('role' => RoleEntity::USER_ROLE, 'module' => $userModule, 'route' => $userEditRoute), array('role' => RoleEntity::STUDENT_ROLE, 'module' => $courseModule, 'route' => $coursesCalendarRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $courseModule, 'route' => $coursesCalendarRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $coursesCalendarRoute), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $coursesCalendarRoute), array('role' => RoleEntity::STUDENT_ROLE, 'module' => $courseModule, 'route' => $coursesMoreRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $courseModule, 'route' => $coursesMoreRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $coursesMoreRoute), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $coursesMoreRoute), array('role' => RoleEntity::STUDENT_ROLE, 'module' => $courseModule, 'route' => $coursesEnrollRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $courseModule, 'route' => $coursesEnrollRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $coursesEnrollRoute), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $coursesEnrollRoute), array('role' => RoleEntity::STUDENT_ROLE, 'module' => $courseModule, 'route' => $coursesLeaveRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $courseModule, 'route' => $coursesLeaveRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $coursesLeaveRoute), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $coursesLeaveRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $coursesNewRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $coursesEditRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $coursesListRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $coursesPendingRoute), array('role' => RoleEntity::STUDENT_ROLE, 'module' => $courseModule, 'route' => $coursesVoteRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $courseEvaluation), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $newCourseEvaluation), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $editCourseEvaluation), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $coursesInstructorTrainingRoute), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $instructorCalendar), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $courseOutlines), array('role' => RoleEntity::USER_ROLE, 'module' => $courseModule, 'route' => $courseOutlines), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $courseOutlines), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $courseModule, 'route' => $courseOutlines), array('role' => RoleEntity::STUDENT_ROLE, 'module' => $courseModule, 'route' => $courseOutlines), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $courseModule, 'route' => $examBookingRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $resourcesListPerCourseRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $resourcesNewPerCourseRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $resourcesEditRoute), array('role' => RoleEntity::STUDENT_ROLE, 'module' => $courseModule, 'route' => $resourcesResourceDownloadRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $courseModule, 'route' => $resourcesResourceDownloadRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $courseModule, 'route' => $resourcesResourceDownloadRoute), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $resourcesResourceDownloadRoute), array('role' => RoleEntity::INSTRUCTOR_ROLE, 'module' => $courseModule, 'route' => $resourcesListPerCourseRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $organizationsDownloadRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $organizationsDownloadRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $organizationsPendingRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $organizationsPendingRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersListRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersListRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersNewRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersNewRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersEditRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersEditRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersDeleteRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $organizationUsersDeleteRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $listAtcOrgsRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $listAtpOrgsRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $orgTypeRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $orgTypeRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $saveStateRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $saveStateRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $orgEditRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $orgEditRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $orgNewRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $orgNewRoute), array('role' => RoleEntity::TEST_CENTER_ADMIN_ROLE, 'module' => $organizationModule, 'route' => $orgMoreRoute), array('role' => RoleEntity::TRAINING_MANAGER_ROLE, 'module' => $organizationModule, 'route' => $orgMoreRoute)); foreach ($acls as $aclData) { $acl = new AclEntity(); $acl->setModule($aclData["module"])->setRoute($aclData["route"])->setRole($this->getReference($aclData["role"])); $manager->persist($acl); } $manager->flush(); }
/** * Define role privileges ( ACL role <-> module <-> route ) * * @access public * @return ViewModel */ public function privilegesAction() { $id = $this->params('id'); /* @var $query \Utilities\Service\Query\Query */ $query = $this->getServiceLocator()->get('wrapperQuery'); $em = $query->entityManager; $roleObj = $query->find('Users\\Entity\\Role', $id); $rolePrivileges = $query->findBy('Users\\Entity\\Acl', array('role' => $roleObj)); $request = $this->getRequest(); if ($request->isPost()) { // delete old privileges foreach ($rolePrivileges as $p) { $query->remove($p); } // insert new privileges $data = $request->getPost()->toArray(); if (isset($data['privileges'])) { foreach ($data['privileges'] as $p) { list($module, $route) = explode("-", $p); $aclEntity = new AclEntity(); $aclEntity->setModule($module); $aclEntity->setRoute($route); $aclEntity->setRole($roleObj); $em->persist($aclEntity); } } $em->flush(); $url = $this->getEvent()->getRouter()->assemble(array('action' => 'index'), array('name' => 'roles')); $this->redirect()->toUrl($url); } $manager = $this->getServiceLocator()->get('ModuleManager'); $loadedModules = $manager->getLoadedModules(); $excludedModules = $loadedModules['CertigateAcl']->getConfig()['roles_management']['excluded_modules']; $filtereModules = []; foreach ($loadedModules as $k => $v) { if (!in_array($k, $excludedModules)) { $filtereModules[$k] = $v; } } $roleRoutes = []; foreach ($rolePrivileges as $p) { $roleRoutes[] = implode("-", [$p->getModule(), $p->getRoute()]); } foreach ($filtereModules as $module => $object) { $routes = array_keys($object->getConfig()['router']['routes']); $newRoutes = []; foreach ($routes as $r) { if (in_array(implode("-", [$module, $r]), $roleRoutes)) { $newRoutes[] = ['name' => $r, 'checked' => true]; } else { $newRoutes[] = ['name' => $r, 'checked' => false]; } } $modulesRoutes[] = ['module' => $module, 'routes' => $newRoutes]; } return new ViewModel(['modulesRoutes' => $modulesRoutes, 'role' => $roleObj]); }