use of org.jboss.hal.config.Role in project console by hal.
the class PrincipalColumn method collectTasks.
private void collectTasks(List<Task<FlowContext>> tasks, Principal.Type type, String name, boolean include, ModelNode modelNode, String attribute) {
String realm = modelNode.hasDefined(REALM) ? modelNode.get(REALM).asString() : null;
String resourceName = Principal.buildResourceName(type, name, realm);
Principal principal = new Principal(type, resourceName, name, realm);
if (modelNode.hasDefined(attribute)) {
modelNode.get(attribute).asList().stream().map(nameNode -> accessControl.roles().get(Ids.role(nameNode.asString()))).forEach(role -> {
if (role != null) {
tasks.add(new CheckRoleMapping(dispatcher, role));
tasks.add(new AddRoleMapping(dispatcher, role, status -> status == 404));
tasks.add(new AddAssignment(dispatcher, role, principal, include));
}
});
}
}
use of org.jboss.hal.config.Role in project console by hal.
the class MembershipColumn method columnActionHandler.
private ColumnActionHandler<Assignment> columnActionHandler(Principal principal, boolean include) {
return column -> {
Role role = findRole(getFinder().getContext().getPath());
if (role != null) {
series(new FlowContext(progress.get()), new CheckRoleMapping(dispatcher, role), new AddRoleMapping(dispatcher, role, status -> status == 404), new AddAssignment(dispatcher, role, principal, include)).subscribe(new org.jboss.hal.core.SuccessfulOutcome<FlowContext>(eventBus, resources) {
@Override
public void onSuccess(FlowContext context) {
String type = principal.getType() == Principal.Type.USER ? resources.constants().user() : resources.constants().group();
SafeHtml message = include ? resources.messages().assignmentIncludeSuccess(type, principal.getName()) : resources.messages().assignmentExcludeSuccess(type, principal.getName());
MessageEvent.fire(eventBus, Message.success(message));
accessControl.reload(() -> {
refresh(RefreshMode.RESTORE_SELECTION);
if (isCurrentUser(principal)) {
eventBus.fireEvent(new UserChangedEvent());
}
});
}
});
}
};
}
use of org.jboss.hal.config.Role in project console by hal.
the class AccessControl method scopedRole.
private Role scopedRole(Property property, Role.Type type, String scopeAttribute) {
Role baseRole = roles.get(Ids.role(property.getValue().get(BASE_ROLE).asString()));
Set<String> scope = property.getValue().get(scopeAttribute).asList().stream().map(ModelNode::asString).collect(toSet());
return new Role(property.getName(), baseRole, type, scope);
}
Aggregations