You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
263 lines
18 KiB
263 lines
18 KiB
<?php
|
|
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Chamilo\CoreBundle\DataFixtures;
|
|
|
|
use Chamilo\CoreBundle\Entity\Permission;
|
|
use Chamilo\CoreBundle\Entity\PermissionRelRole;
|
|
use DateTime;
|
|
use Doctrine\Bundle\FixturesBundle\Fixture;
|
|
use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface;
|
|
use Doctrine\Persistence\ObjectManager;
|
|
|
|
class PermissionFixtures extends Fixture implements FixtureGroupInterface
|
|
{
|
|
public static function getGroups(): array
|
|
{
|
|
return ['permissions'];
|
|
}
|
|
|
|
public function load(ObjectManager $manager): void
|
|
{
|
|
$permissions = self::getPermissions();
|
|
$roles = self::getRoles();
|
|
$permissionsMapping = self::getPermissionsMapping();
|
|
|
|
foreach ($permissions as $permData) {
|
|
$existingPermission = $manager->getRepository(Permission::class)->findOneBy(['slug' => $permData['slug']]);
|
|
if ($existingPermission) {
|
|
continue;
|
|
}
|
|
|
|
$permission = new Permission();
|
|
$permission->setTitle($permData['title']);
|
|
$permission->setSlug($permData['slug']);
|
|
$permission->setDescription($permData['description']);
|
|
$manager->persist($permission);
|
|
|
|
$manager->flush();
|
|
|
|
foreach ($roles as $roleName => $roleCode) {
|
|
if (\in_array($roleCode, $permissionsMapping[$permData['slug']])) {
|
|
$permRelRole = new PermissionRelRole();
|
|
$permRelRole->setPermission($permission);
|
|
$permRelRole->setRoleCode($roleName);
|
|
$permRelRole->setChangeable(true);
|
|
$permRelRole->setUpdatedAt(new DateTime());
|
|
$manager->persist($permRelRole);
|
|
}
|
|
}
|
|
}
|
|
|
|
$manager->flush();
|
|
}
|
|
|
|
public static function getPermissions(): array
|
|
{
|
|
return [
|
|
['title' => 'View analytics', 'slug' => 'analytics:view', 'description' => 'View analytics data'],
|
|
['title' => 'View assigned analytics', 'slug' => 'analytics:viewassigned', 'description' => 'View results of users assigned to me'],
|
|
['title' => 'View all analytics', 'slug' => 'analytics:viewall', 'description' => 'View results of all users'],
|
|
['title' => 'Create assignment', 'slug' => 'assignment:create', 'description' => 'Create assignments'],
|
|
['title' => 'Delete assignment', 'slug' => 'assignment:delete', 'description' => 'Delete assignments'],
|
|
['title' => 'Edit assignment', 'slug' => 'assignment:edit', 'description' => 'Edit assignments'],
|
|
['title' => 'Grade assignment', 'slug' => 'assignment:grade', 'description' => 'Grade assignments'],
|
|
['title' => 'Submit assignment', 'slug' => 'assignment:submit', 'description' => 'Submit assignments'],
|
|
['title' => 'View assignment', 'slug' => 'assignment:view', 'description' => 'View assignments'],
|
|
['title' => 'Backup', 'slug' => 'backup:backup', 'description' => 'Backup'],
|
|
['title' => 'Copy backup', 'slug' => 'backup:copy', 'description' => 'Copy course content to another course'],
|
|
['title' => 'Restore backup', 'slug' => 'backup:restore', 'description' => 'Restore backup'],
|
|
['title' => 'Configure badge criteria', 'slug' => 'badge:configurecriteria', 'description' => 'Configure badge criteria'],
|
|
['title' => 'Create badge', 'slug' => 'badge:create', 'description' => 'Create badges'],
|
|
['title' => 'Delete badge', 'slug' => 'badge:delete', 'description' => 'Delete badges'],
|
|
['title' => 'Edit badge', 'slug' => 'badge:edit', 'description' => 'Edit badges'],
|
|
['title' => 'View badge', 'slug' => 'badge:view', 'description' => 'View badges'],
|
|
['title' => 'Create calendar event', 'slug' => 'calendar:create', 'description' => 'Create calendar events'],
|
|
['title' => 'Delete calendar event', 'slug' => 'calendar:delete', 'description' => 'Delete calendar events'],
|
|
['title' => 'Edit calendar event', 'slug' => 'calendar:edit', 'description' => 'Edit calendar events'],
|
|
['title' => 'View courses catalogue', 'slug' => 'catalogue:view', 'description' => 'View courses catalogue'],
|
|
['title' => 'Create certificate template', 'slug' => 'certificate:create', 'description' => 'Create certificate templates'],
|
|
['title' => 'Delete certificate template', 'slug' => 'certificate:delete', 'description' => 'Delete certificate templates'],
|
|
['title' => 'Edit certificate template', 'slug' => 'certificate:edit', 'description' => 'Edit certificate templates'],
|
|
['title' => 'Generate certificate', 'slug' => 'certificate:generate', 'description' => 'Generate certificates'],
|
|
['title' => 'Generate all certificates', 'slug' => 'certificate:generateall', 'description' => 'Generate all certificates in a gradebook'],
|
|
['title' => 'View all certificates', 'slug' => 'certificate:viewall', 'description' => 'View all instances of one certificate issued to all users'],
|
|
['title' => 'Assign course to class', 'slug' => 'class:assigncourse', 'description' => 'Assign a class to a course'],
|
|
['title' => 'Assign cession to class', 'slug' => 'class:assignsession', 'description' => 'Assign a class to a session'],
|
|
['title' => 'Assign user to class', 'slug' => 'class:assignuser', 'description' => 'Assign a user to a class'],
|
|
['title' => 'Create class', 'slug' => 'class:create', 'description' => 'Create global classes of users'],
|
|
['title' => 'Delete class', 'slug' => 'class:delete', 'description' => 'Delete global classes'],
|
|
['title' => 'Edit class', 'slug' => 'class:edit', 'description' => 'Edit global classes'],
|
|
['title' => 'View class', 'slug' => 'class:view', 'description' => 'View global classes details'],
|
|
['title' => 'Create CMS page', 'slug' => 'cms:create', 'description' => 'Create CMS pages'],
|
|
['title' => 'Delete CMS page', 'slug' => 'cms:delete', 'description' => 'Delete CMS pages'],
|
|
['title' => 'Edit CMS page', 'slug' => 'cms:edit', 'description' => 'Edit CMS pages'],
|
|
['title' => 'Create course space', 'slug' => 'course:create', 'description' => 'Create courses'],
|
|
['title' => 'Delete course space', 'slug' => 'course:delete', 'description' => 'Delete courses'],
|
|
['title' => 'Download course content', 'slug' => 'course:downloadcoursecontent', 'description' => 'Download all course content'],
|
|
['title' => 'Edit own course properties', 'slug' => 'course:edit', 'description' => 'Edit own course\'s properties'],
|
|
['title' => 'Edit all course properties', 'slug' => 'course:editall', 'description' => 'Edit all course\'s properties'],
|
|
['title' => 'Manage plugins', 'slug' => 'plugin:manage', 'description' => 'Enable/disable/configure plugins'],
|
|
['title' => 'Create quiz', 'slug' => 'quiz:create', 'description' => 'Create quizzes'],
|
|
['title' => 'Delete quiz', 'slug' => 'quiz:delete', 'description' => 'Delete quizzes'],
|
|
['title' => 'Edit quiz', 'slug' => 'quiz:edit', 'description' => 'Edit quizzes'],
|
|
['title' => 'Grade quiz', 'slug' => 'quiz:grade', 'description' => 'Grade quizzes'],
|
|
['title' => 'View live quiz results', 'slug' => 'quiz:viewliveresults', 'description' => 'View live quiz results'],
|
|
['title' => 'Manage question bank', 'slug' => 'quiz:managequestionbank', 'description' => 'Manage question bank'],
|
|
['title' => 'Create role', 'slug' => 'role:create', 'description' => 'Create roles'],
|
|
['title' => 'Manage role permissions', 'slug' => 'role:managepermissions', 'description' => 'Assign or remove permissions from roles'],
|
|
['title' => 'Create session', 'slug' => 'session:create', 'description' => 'Create sessions'],
|
|
['title' => 'Delete session', 'slug' => 'session:delete', 'description' => 'Delete sessions'],
|
|
['title' => 'Edit own session properties', 'slug' => 'session:edit', 'description' => 'Edit properties of user\'s own sessions'],
|
|
['title' => 'Edit all session properties', 'slug' => 'session:editall', 'description' => 'Edit properties of all sessions'],
|
|
['title' => 'Assign course to session', 'slug' => 'session:assigncourse', 'description' => 'Assign a course to a session'],
|
|
['title' => 'Edit site settings', 'slug' => 'site:editsettings', 'description' => 'Manage settings of the platform'],
|
|
['title' => 'Access site maintenance', 'slug' => 'site:maintenanceaccess', 'description' => 'Access site maintenance'],
|
|
['title' => 'Manage course competency', 'slug' => 'skill:coursecompetencymanage', 'description' => 'Assign skills through course grade books'],
|
|
['title' => 'Review user competency', 'slug' => 'skill:usercompetencyreview', 'description' => 'Add comments on other user\'s acquired skills'],
|
|
['title' => 'Assign skill', 'slug' => 'skill:assign', 'description' => 'Assign a skill to a user'],
|
|
['title' => 'Create skill', 'slug' => 'skill:create', 'description' => 'Create skills'],
|
|
['title' => 'Delete skill', 'slug' => 'skill:delete', 'description' => 'Delete skills'],
|
|
['title' => 'Edit skill', 'slug' => 'skill:edit', 'description' => 'Edit skills'],
|
|
['title' => 'View skill', 'slug' => 'skill:view', 'description' => 'View all skills acquired by users in manager\'s context'],
|
|
['title' => 'View all skills', 'slug' => 'skill:viewall', 'description' => 'View all skills acquired by users of the platform'],
|
|
['title' => 'Create survey', 'slug' => 'survey:create', 'description' => 'Create surveys (global or inside own course)'],
|
|
['title' => 'Delete survey', 'slug' => 'survey:delete', 'description' => 'Delete surveys'],
|
|
['title' => 'Edit survey', 'slug' => 'survey:edit', 'description' => 'Edit surveys'],
|
|
['title' => 'Submit survey', 'slug' => 'survey:submit', 'description' => 'Submit surveys'],
|
|
['title' => 'View survey results', 'slug' => 'survey:viewresults', 'description' => 'View survey results'],
|
|
['title' => 'Comment on ticket', 'slug' => 'ticket:comment', 'description' => 'Comment on tickets'],
|
|
['title' => 'Manage tickets', 'slug' => 'ticket:manage', 'description' => 'Manage the tickets system'],
|
|
['title' => 'Report ticket', 'slug' => 'ticket:report', 'description' => 'Create tickets (most users should be able to report issues)'],
|
|
['title' => 'See ticket issues', 'slug' => 'ticket:seeissues', 'description' => 'See issue details for issues where user\'s involved'],
|
|
['title' => 'View all ticket issues', 'slug' => 'ticket:viewallissues', 'description' => 'View all issues'],
|
|
['title' => 'Edit tool visibility', 'slug' => 'tool:editvisibility', 'description' => 'Allow setting the visibility of a tool in a course'],
|
|
['title' => 'Manage URL', 'slug' => 'url:manage', 'description' => 'Manage Multi-URL configuration'],
|
|
['title' => 'Assign classes to URL', 'slug' => 'url:assignclass', 'description' => 'Assign classes to URL'],
|
|
['title' => 'Assign courses to URL', 'slug' => 'url:assigncourse', 'description' => 'Assign courses to URL'],
|
|
['title' => 'Assign users to URL', 'slug' => 'url:assignuser', 'description' => 'Assign users to URL'],
|
|
['title' => 'Assign user to course', 'slug' => 'user:assigncourse', 'description' => 'Assign a user to a course'],
|
|
['title' => 'Assign user to session', 'slug' => 'user:assignsession', 'description' => 'Assign a user to a session'],
|
|
['title' => 'Create user', 'slug' => 'user:create', 'description' => 'Create users'],
|
|
['title' => 'Delete user', 'slug' => 'user:delete', 'description' => 'Delete users'],
|
|
['title' => 'Edit user', 'slug' => 'user:edit', 'description' => 'Edit users'],
|
|
['title' => 'Edit user Role', 'slug' => 'user:editrole', 'description' => 'Edit user roles'],
|
|
['title' => 'Login as user', 'slug' => 'user:loginas', 'description' => 'Login as another user'],
|
|
['title' => 'Edit Course Settings', 'slug' => 'course:editsettings', 'description' => 'Edit settings of a course'],
|
|
];
|
|
}
|
|
|
|
public static function getRoles(): array
|
|
{
|
|
return [
|
|
'ROLE_INVITEE' => 'INV',
|
|
'ROLE_STUDENT' => 'STU',
|
|
'ROLE_TEACHER' => 'TEA',
|
|
'ROLE_ADMIN' => 'ADM',
|
|
'ROLE_SUPER_ADMIN' => 'SUA',
|
|
'ROLE_GLOBAL_ADMIN' => 'GLO',
|
|
'ROLE_HR' => 'HRM',
|
|
'ROLE_QUESTION_MANAGER' => 'QBM',
|
|
'ROLE_SESSION_MANAGER' => 'SSM',
|
|
'ROLE_STUDENT_BOSS' => 'STB',
|
|
];
|
|
}
|
|
|
|
public static function getPermissionsMapping(): array
|
|
{
|
|
return [
|
|
'analytics:view' => ['INV', 'STU', 'TEA', 'ADM', 'SUA', 'GLO', 'HRM', 'QBM', 'SSM', 'STB'],
|
|
'analytics:viewassigned' => ['TEA', 'ADM', 'SUA', 'GLO', 'HRM', 'SSM', 'STB'],
|
|
'analytics:viewall' => ['ADM', 'SUA', 'GLO', 'SSM', 'STB'],
|
|
'assignment:create' => ['TEA'],
|
|
'assignment:delete' => ['TEA', 'ADM', 'SUA', 'GLO'],
|
|
'assignment:edit' => ['TEA', 'ADM', 'SUA', 'GLO'],
|
|
'assignment:grade' => ['TEA'],
|
|
'assignment:submit' => ['STU'],
|
|
'assignment:view' => ['INV', 'STU', 'TEA', 'ADM', 'SUA', 'GLO', 'HRM', 'SSM', 'STB'],
|
|
'backup:backup' => ['TEA', 'ADM', 'SUA', 'GLO', 'SSM'],
|
|
'backup:copy' => ['TEA', 'ADM', 'SUA', 'GLO', 'SSM'],
|
|
'backup:restore' => ['TEA', 'ADM', 'SUA', 'GLO', 'SSM'],
|
|
'badge:configurecriteria' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'badge:create' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'badge:edit' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'badge:delete' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'badge:view' => ['INV', 'STU', 'TEA', 'ADM', 'SUA', 'GLO', 'SSM', 'STB'],
|
|
'calendar:create' => ['ADM', 'SUA', 'GLO'],
|
|
'calendar:edit' => ['ADM', 'SUA', 'GLO'],
|
|
'calendar:delete' => ['ADM', 'SUA', 'GLO'],
|
|
'catalogue:view' => ['INV', 'STU', 'TEA', 'ADM', 'SUA', 'GLO', 'HRM', 'QBM', 'SSM', 'STB'],
|
|
'certificate:create' => ['TEA', 'SSM'],
|
|
'certificate:delete' => ['TEA', 'SSM'],
|
|
'certificate:edit' => ['TEA', 'SSM'],
|
|
'certificate:generate' => ['STU', 'TEA', 'SSM'],
|
|
'certificate:generateall' => ['TEA', 'HRM', 'SSM'],
|
|
'certificate:viewall' => ['TEA', 'HRM', 'SSM', 'STB'],
|
|
'class:assigncourse' => ['TEA', 'ADM', 'SUA', 'GLO'],
|
|
'class:assignsession' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'class:assignuser' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'class:create' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'class:delete' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'class:edit' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'class:view' => ['STU', 'TEA', 'ADM', 'SUA', 'GLO', 'SSM'],
|
|
'cms:create' => ['ADM', 'SUA', 'GLO'],
|
|
'cms:delete' => ['ADM', 'SUA', 'GLO'],
|
|
'cms:edit' => ['ADM', 'SUA', 'GLO'],
|
|
'course:create' => ['TEA', 'ADM', 'SUA', 'GLO', 'SSM'],
|
|
'course:delete' => ['TEA', 'ADM', 'SUA', 'GLO'],
|
|
'course:downloadcoursecontent' => ['TEA', 'ADM', 'SUA', 'GLO', 'SSM'],
|
|
'course:edit' => ['TEA', 'SSM'],
|
|
'course:editall' => ['ADM', 'SUA', 'GLO'],
|
|
'plugin:manage' => ['ADM', 'SUA', 'GLO'],
|
|
'quiz:create' => ['TEA', 'QBM'],
|
|
'quiz:delete' => ['TEA', 'QBM'],
|
|
'quiz:edit' => ['TEA', 'QBM'],
|
|
'quiz:grade' => ['TEA'],
|
|
'quiz:viewliveresults' => ['TEA', 'SSM'],
|
|
'quiz:managequestionbank' => ['ADM', 'SUA', 'GLO', 'QBM'],
|
|
'role:create' => ['ADM', 'SUA', 'GLO'],
|
|
'role:managepermissions' => ['ADM', 'SUA', 'GLO'],
|
|
'session:create' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'session:delete' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'session:edit' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'session:editall' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'session:assigncourse' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'site:editsettings' => ['ADM', 'SUA', 'GLO'],
|
|
'site:maintenanceaccess' => ['ADM', 'SUA', 'GLO'],
|
|
'skill:coursecompetencymanage' => ['TEA', 'ADM', 'SUA', 'GLO', 'HRM'],
|
|
'skill:usercompetencyreview' => ['STU', 'TEA', 'ADM', 'SUA', 'GLO'],
|
|
'skill:assign' => ['ADM', 'SUA', 'GLO'],
|
|
'skill:create' => ['GLO'],
|
|
'skill:delete' => ['GLO'],
|
|
'skill:edit' => ['GLO'],
|
|
'skill:view' => ['ADM', 'SUA', 'GLO', 'SSM', 'STB'],
|
|
'skill:viewall' => ['ADM', 'SUA', 'GLO', 'SSM', 'STB'],
|
|
'survey:create' => ['TEA'],
|
|
'survey:delete' => ['TEA'],
|
|
'survey:edit' => ['TEA'],
|
|
'survey:submit' => ['INV', 'STU', 'TEA', 'ADM', 'SUA', 'GLO', 'SSM', 'STB'],
|
|
'survey:viewresults' => ['TEA', 'HRM', 'SSM', 'STB'],
|
|
'ticket:comment' => ['STU', 'TEA', 'ADM', 'SUA', 'GLO', 'HRM', 'QBM', 'SSM', 'STB'],
|
|
'ticket:manage' => ['ADM', 'SUA', 'GLO'],
|
|
'ticket:report' => ['STU', 'TEA', 'ADM', 'SUA', 'GLO', 'HRM', 'QBM', 'SSM', 'STB'],
|
|
'ticket:seeissues' => ['STU', 'TEA', 'ADM', 'SUA', 'GLO', 'SSM', 'STB'],
|
|
'ticket:viewallissues' => ['ADM', 'SUA', 'GLO', 'SSM', 'STB'],
|
|
'tool:editvisibility' => ['TEA', 'ADM', 'SUA', 'GLO', 'SSM'],
|
|
'url:manage' => ['GLO'],
|
|
'url:assignclass' => ['GLO'],
|
|
'url:assigncourse' => ['GLO'],
|
|
'url:assignuser' => ['GLO'],
|
|
'user:assigncourse' => ['TEA', 'ADM', 'SUA', 'GLO'],
|
|
'user:assignsession' => ['ADM', 'SUA', 'GLO', 'SSM'],
|
|
'user:create' => ['ADM', 'SUA', 'GLO'],
|
|
'user:delete' => ['ADM', 'SUA', 'GLO'],
|
|
'user:edit' => ['ADM', 'SUA', 'GLO'],
|
|
'user:editrole' => ['ADM', 'SUA', 'GLO'],
|
|
'user:loginas' => ['SUA', 'GLO'],
|
|
'course:editsettings' => ['TEA', 'ADM', 'SUA', 'GLO'],
|
|
];
|
|
}
|
|
}
|
|
|