Programmatically assign permissions to roles
Example for Drupal 8
use Drupal\user\Entity\Role;
use Drupal\user\RoleInterface;
$roles = Role::loadMultiple([
RoleInterface::ANONYMOUS_ID,
RoleInterface::AUTHENTICATED_ID
]);
$contentTypeName = 'article';
$issueAccessPermissions = [
"view any $contentTypeName content",
"view own $contentTypeName content"
];
foreach ($issueAccessPermissions as $permission) {
$roles[RoleInterface::AUTHENTICATED_ID]->grantPermission($permission);
$roles[RoleInterface::ANONYMOUS_ID]->revokePermission($permission);
}
Example for Drupal 7
// Rebuild node types so that permissions are available.
node_types_rebuild();
$site_node_types = node_type_get_types();
$node_types_perm = ['article', 'review'];
// Construct the permissions.
$permissions = [];
foreach ($node_types_perm as $node_type_perm) {
// Make sure the node type actually exists.
if (empty($site_node_types[$node_type_perm])) {
continue;
}
$permissions[] = "set $node_type_perm published on date";
}
// Grant access to specified roles.
$roles = ['editor', 'administrator'];
foreach ($roles as $role_name) {
$role = user_role_load_by_name($role_name);
if (isset($role->rid)) {
user_role_grant_permissions($role->rid, $permissions);
}
}