The following role would enable role assignment:
package com.company.onboarding.security;
import io.jmix.security.model.EntityAttributePolicyAction;
import io.jmix.security.model.EntityPolicyAction;
import io.jmix.security.model.ResourceRoleModel;
import io.jmix.security.model.RowLevelRoleModel;
import io.jmix.security.role.annotation.EntityAttributePolicy;
import io.jmix.security.role.annotation.EntityPolicy;
import io.jmix.security.role.annotation.ResourceRole;
import io.jmix.security.role.assignment.RoleAssignmentModel;
import io.jmix.securitydata.entity.RoleAssignmentEntity;
import io.jmix.securityflowui.role.annotation.ViewPolicy;
@ResourceRole(name = "RoleAssignmentRole", code = RoleAssignmentRole.CODE, scope = "UI")
public interface RoleAssignmentRole {
String CODE = "role-assignment-role";
@ViewPolicy(viewIds = {"roleAssignmentView", "sec_ResourceRoleModel.lookup", "sec_RowLevelRoleModel.lookup"})
void screens();
@EntityAttributePolicy(entityClass = RoleAssignmentEntity.class, attributes = "*", action = EntityAttributePolicyAction.MODIFY)
@EntityPolicy(entityClass = RoleAssignmentEntity.class, actions = EntityPolicyAction.ALL)
void roleAssignmentEntity();
@EntityAttributePolicy(entityClass = ResourceRoleModel.class, attributes = "*", action = EntityAttributePolicyAction.VIEW)
@EntityPolicy(entityClass = ResourceRoleModel.class, actions = EntityPolicyAction.READ)
void resourceRoleModel();
@EntityAttributePolicy(entityClass = RowLevelRoleModel.class, attributes = "*", action = EntityAttributePolicyAction.VIEW)
@EntityPolicy(entityClass = RowLevelRoleModel.class, actions = EntityPolicyAction.READ)
void rowLevelRoleModel();
@EntityAttributePolicy(entityClass = RoleAssignmentModel.class, attributes = "*", action = EntityAttributePolicyAction.MODIFY)
@EntityPolicy(entityClass = RoleAssignmentModel.class, actions = EntityPolicyAction.ALL)
void roleAssignmentModel();
}
In general, when you see that some permissions are missing to accomplish a task, take a look at messages from the io.jmix.core.AccessLogger
in the console, it may give you a clue.
Regards,
Konstantin