Permissions with a xml File

Hi,

in concrete5 version6 we had the possibility to create permissions with a XML File, does anyone know if this feature still exists and if so how it works now.
Thanks

Hi @Xanweb -

So that specific XML-based functionality doesn’t exist anymore in modern Concrete, but a much better option is to just use PHP to do it through the PHP permissions API.

For instance, here’s how the core does it in the install function. These lines assign permissions to file folders and pages in this example (it’s a bit of a long one, so be sure to scroll):

$g1 = Group::getByID(GUEST_GROUP_ID);
$g2 = Group::getByID(REGISTERED_GROUP_ID);
$g3 = Group::getByID(ADMIN_GROUP_ID);

$filesystem = new Filesystem();
$folder = $filesystem->getRootFolder();
$folder->assignPermissions($g1, ['view_file_folder_file']);
$folder->assignPermissions(
    $g3,
    [
        'view_file_folder_file',
        'search_file_folder',
        'edit_file_folder',
        'edit_file_folder_file_properties',
        'edit_file_folder_file_contents',
        'copy_file_folder_files',
        'edit_file_folder_permissions',
        'delete_file_folder_files',
        'delete_file_folder',
        'add_file',
    ]
);

// login
$login = Page::getByPath('/login', 'RECENT');
$login->assignPermissions($g1, ['view_page']);

// register
$register = Page::getByPath('/register', 'RECENT');
$register->assignPermissions($g1, ['view_page']);

// Page Forbidden
$page_forbidden = Page::getByPath('/page_forbidden', "RECENT");
$page_forbidden->assignPermissions($g1, ['view_page']);

// Page Not Found
$page_not_found = Page::getByPath('/page_not_found', "RECENT");
$page_not_found->assignPermissions($g1, ['view_page']);

// dashboard
$dashboard = Page::getByPath('/dashboard', 'RECENT');
$dashboard->assignPermissions($g3, ['view_page']);

// drafts
$drafts = Page::getByPath('/!drafts', 'RECENT');
$drafts->assignPermissions(
    $g3,
    [
        'view_page',
        'view_page_versions',
        'view_page_in_sitemap',
        'preview_page_as_user',
        'edit_page_properties',
        'edit_page_contents',
        'edit_page_speed_settings',
        'edit_page_multilingual_settings',
        'edit_page_theme',
        'edit_page_template',
        'edit_page_page_type',
        'edit_page_permissions',
        'delete_page',
        'delete_page_versions',
        'approve_page_versions',
        'add_subpage',
        'move_or_copy_page',
        'schedule_page_contents_guest_access',
    ]
);

$home = Page::getByID(Page::getHomePageID(), 'RECENT');
$home->assignPermissions($g1, ['view_page']);
$home->assignPermissions(
    $g3,
    [
        'view_page_versions',
        'view_page_in_sitemap',
        'preview_page_as_user',
        'edit_page_properties',
        'edit_page_contents',
        'edit_page_speed_settings',
        'edit_page_multilingual_settings',
        'edit_page_theme',
        'edit_page_template',
        'edit_page_page_type',
        'edit_page_permissions',
        'delete_page',
        'delete_page_versions',
        'approve_page_versions',
        'add_subpage',
        'move_or_copy_page',
        'schedule_page_contents_guest_access',
    ]
);


Hi @Xanweb - this post inspired a discussion for Find Out Friday so I wanted to post that here for some additional background: