Search in sources :

Example 1 with Roles

use of org.jboss.hal.config.Roles in project console by hal.

the class AccessControl method reload.

void reload(Callback callback) {
    reset();
    List<Operation> operations = new ArrayList<>();
    operations.add(new Operation.Builder(AddressTemplates.root(), READ_RESOURCE_OPERATION).param(INCLUDE_RUNTIME, true).param(ATTRIBUTES_ONLY, true).build());
    if (!environment.isStandalone()) {
        operations.add(new Operation.Builder(AddressTemplates.root(), READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, HOST_SCOPED_ROLE).param(RECURSIVE, true).build());
        operations.add(new Operation.Builder(AddressTemplates.root(), READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, SERVER_GROUP_SCOPED_ROLE).param(RECURSIVE, true).build());
    }
    operations.add(new Operation.Builder(AddressTemplates.root(), READ_CHILDREN_RESOURCES_OPERATION).param(CHILD_TYPE, ROLE_MAPPING).param(RECURSIVE, true).build());
    dispatcher.execute(new Composite(operations), (CompositeResult result) -> {
        int step = 0;
        ModelNode attributes = result.step(step++).get(RESULT);
        AccessControlProvider accessControlProvider = ModelNodeHelper.asEnumValue(attributes, PROVIDER, AccessControlProvider::valueOf, SIMPLE);
        environment.setAccessControlProvider(accessControlProvider);
        attributes.get(STANDARD_ROLE_NAMES).asList().stream().map(node -> new Role(node.asString())).forEach(roles::add);
        if (!environment.isStandalone()) {
            result.step(step++).get(RESULT).asPropertyList().stream().map(property -> scopedRole(property, Role.Type.HOST, HOSTS)).forEach(roles::add);
            result.step(step++).get(RESULT).asPropertyList().stream().map(property -> scopedRole(property, Role.Type.SERVER_GROUP, SERVER_GROUPS)).forEach(roles::add);
        }
        // noinspection UnusedAssignment
        result.step(step++).get(RESULT).asPropertyList().forEach(p1 -> {
            Role role = roles.get(Ids.role(p1.getName()));
            if (role != null) {
                ModelNode assignmentNode = p1.getValue();
                if (assignmentNode.hasDefined(INCLUDE_ALL)) {
                    role.setIncludeAll(assignmentNode.get(INCLUDE_ALL).asBoolean());
                }
                if (assignmentNode.hasDefined(INCLUDE)) {
                    assignmentNode.get(INCLUDE).asPropertyList().forEach(p2 -> addAssignment(p2, role, true));
                }
                if (assignmentNode.hasDefined(EXCLUDE)) {
                    assignmentNode.get(EXCLUDE).asPropertyList().forEach(p2 -> addAssignment(p2, role, false));
                }
            } else {
                logger.error("Cannot add assignment for role {}: No matching role found!", p1.getName());
            }
        });
        // sync with current user
        String currentUserId = Ids.principal(Principal.Type.USER.name().toLowerCase(), currentUser.getName());
        Principal currentPrincipal = principals.get(currentUserId);
        if (currentPrincipal != null) {
            Set<Role> currentRoles = assignments.byPrincipal(currentPrincipal).map(Assignment::getRole).collect(toSet());
            currentUser.refreshRoles(currentRoles);
        }
        callback.execute();
    });
}
Also used : ModelNode(org.jboss.hal.dmr.ModelNode) Environment(org.jboss.hal.config.Environment) MessageEvent(org.jboss.hal.spi.MessageEvent) AccessControlProvider(org.jboss.hal.config.AccessControlProvider) LoggerFactory(org.slf4j.LoggerFactory) ArrayList(java.util.ArrayList) Inject(javax.inject.Inject) Property(org.jboss.hal.dmr.Property) Message(org.jboss.hal.spi.Message) User(org.jboss.hal.config.User) SIMPLE(org.jboss.hal.config.AccessControlProvider.SIMPLE) Collectors.toSet(java.util.stream.Collectors.toSet) Logger(org.slf4j.Logger) RBAC(org.jboss.hal.config.AccessControlProvider.RBAC) CompositeResult(org.jboss.hal.dmr.CompositeResult) Operation(org.jboss.hal.dmr.Operation) Ids(org.jboss.hal.resources.Ids) Set(java.util.Set) EventBus(com.google.web.bindery.event.shared.EventBus) DialogFactory(org.jboss.hal.ballroom.dialog.DialogFactory) Roles(org.jboss.hal.config.Roles) Composite(org.jboss.hal.dmr.Composite) List(java.util.List) Dispatcher(org.jboss.hal.dmr.dispatch.Dispatcher) Callback(org.jboss.hal.spi.Callback) Resources(org.jboss.hal.resources.Resources) ModelDescriptionConstants(org.jboss.hal.dmr.ModelDescriptionConstants) Role(org.jboss.hal.config.Role) ModelNodeHelper(org.jboss.hal.dmr.ModelNodeHelper) Composite(org.jboss.hal.dmr.Composite) CompositeResult(org.jboss.hal.dmr.CompositeResult) ArrayList(java.util.ArrayList) AccessControlProvider(org.jboss.hal.config.AccessControlProvider) Operation(org.jboss.hal.dmr.Operation) Role(org.jboss.hal.config.Role) ModelNode(org.jboss.hal.dmr.ModelNode)

Aggregations

EventBus (com.google.web.bindery.event.shared.EventBus)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Set (java.util.Set)1 Collectors.toSet (java.util.stream.Collectors.toSet)1 Inject (javax.inject.Inject)1 DialogFactory (org.jboss.hal.ballroom.dialog.DialogFactory)1 AccessControlProvider (org.jboss.hal.config.AccessControlProvider)1 RBAC (org.jboss.hal.config.AccessControlProvider.RBAC)1 SIMPLE (org.jboss.hal.config.AccessControlProvider.SIMPLE)1 Environment (org.jboss.hal.config.Environment)1 Role (org.jboss.hal.config.Role)1 Roles (org.jboss.hal.config.Roles)1 User (org.jboss.hal.config.User)1 Composite (org.jboss.hal.dmr.Composite)1 CompositeResult (org.jboss.hal.dmr.CompositeResult)1 ModelDescriptionConstants (org.jboss.hal.dmr.ModelDescriptionConstants)1 ModelNode (org.jboss.hal.dmr.ModelNode)1 ModelNodeHelper (org.jboss.hal.dmr.ModelNodeHelper)1 Operation (org.jboss.hal.dmr.Operation)1