Spaces:
No application file
No application file
File size: 2,107 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
<?php
declare(strict_types=1);
namespace Mautic\Migrations;
use Doctrine\DBAL\Schema\Schema;
use Mautic\CoreBundle\Doctrine\AbstractMauticMigration;
use Mautic\UserBundle\Entity\Role;
use Mautic\UserBundle\Model\RoleModel;
final class Version20211209022550 extends AbstractMauticMigration
{
public function postUp(Schema $schema): void
{
/** @var RoleModel $model */
$model = $this->container->get('mautic.model.factory')->getModel('user.role');
// Get all non admin roles.
$roles = $model->getEntities([
'orderBy' => 'r.id',
'orderByDir' => 'ASC',
'filter' => [
'where' => [
[
'col' => 'r.isAdmin',
'expr' => 'eq',
'val' => 0,
],
],
],
]);
/** @var Role $role */
foreach ($roles as $role) {
$rawPermissions = $role->getRawPermissions();
if (empty($rawPermissions)) {
continue;
}
$leadPermission = $rawPermissions['lead:leads'] ?? [];
$listPermission = $rawPermissions['lead:lists'] ?? [];
if (empty($leadPermission) && empty($listPermission)) {
continue;
}
// Map all leads permission to list.
$newPermissions = $leadPermission;
if (!in_array('full', $newPermissions)) {
// If lead has viewown permission, then add create permission for list.
if (in_array('viewown', $leadPermission)) {
$newPermissions[] = 'create';
}
// Add the list related permission.
foreach ($listPermission as $perm) {
$newPermissions[] = $perm;
}
}
$rawPermissions['lead:lists'] = array_unique($newPermissions);
$model->setRolePermissions($role, $rawPermissions);
$model->saveEntity($role);
}
}
}
|