function UserHooks::userRoleInsert

Implements hook_ENTITY_TYPE_insert() for user_role entities.

File

core/modules/user/src/Hook/UserHooks.php, line 273

Class

UserHooks
Hook implementations for user.

Namespace

Drupal\user\Hook

Code

public function userRoleInsert(RoleInterface $role) {
    // Ignore the authenticated and anonymous roles or the role is being synced.
    if (in_array($role->id(), [
        RoleInterface::AUTHENTICATED_ID,
        RoleInterface::ANONYMOUS_ID,
    ]) || $role->isSyncing()) {
        return;
    }
    assert(Inspector::assertStringable($role->label()), 'Role label is expected to be a string.');
    $add_id = 'user_add_role_action.' . $role->id();
    if (!Action::load($add_id)) {
        $action = Action::create([
            'id' => $add_id,
            'type' => 'user',
            'label' => t('Add the @label role to the selected user(s)', [
                '@label' => $role->label(),
            ]),
            'configuration' => [
                'rid' => $role->id(),
            ],
            'plugin' => 'user_add_role_action',
        ]);
        $action->trustData()
            ->save();
    }
    $remove_id = 'user_remove_role_action.' . $role->id();
    if (!Action::load($remove_id)) {
        $action = Action::create([
            'id' => $remove_id,
            'type' => 'user',
            'label' => t('Remove the @label role from the selected user(s)', [
                '@label' => $role->label(),
            ]),
            'configuration' => [
                'rid' => $role->id(),
            ],
            'plugin' => 'user_remove_role_action',
        ]);
        $action->trustData()
            ->save();
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.