Search in sources :

Example 1 with PermissionType

use of com.haulmont.cuba.security.entity.PermissionType in project cuba by cuba-platform.

the class MenuItem method isPermitted.

public boolean isPermitted(UserSession session) {
    if (StringUtils.isEmpty(id) || isSeparator()) {
        return true;
    } else {
        boolean screenPermitted = session.isScreenPermitted(id);
        if (screenPermitted) {
            Element permissionsElem = descriptor.element("permissions");
            if (permissionsElem != null) {
                for (Element element : Dom4j.elements(permissionsElem, "permission")) {
                    PermissionType type = PermissionType.valueOf(element.attributeValue("type"));
                    String target = element.attributeValue("target");
                    screenPermitted = session.isPermitted(type, target);
                    if (!screenPermitted)
                        break;
                }
            }
        }
        return screenPermitted;
    }
}
Also used : PermissionType(com.haulmont.cuba.security.entity.PermissionType) Element(org.dom4j.Element)

Example 2 with PermissionType

use of com.haulmont.cuba.security.entity.PermissionType in project cuba by cuba-platform.

the class PermissionUiHelper method createPermissionItem.

/**
 * Add or edit permission item in datasource
 * @param ds Datasource
 * @param roleDs Role datasource
 * @param permissionTarget Permission identifier
 * @param type Permission type
 * @param value Permission value
 */
public static void createPermissionItem(CollectionDatasource<Permission, UUID> ds, Datasource<Role> roleDs, final String permissionTarget, PermissionType type, Integer value) {
    Permission permission = null;
    for (Permission p : ds.getItems()) {
        if (Objects.equals(p.getTarget(), permissionTarget)) {
            permission = p;
            break;
        }
    }
    if (permission == null) {
        // restore entity instead of create
        if (ds instanceof RestorablePermissionDatasource) {
            RestorablePermissionDatasource datasource = (RestorablePermissionDatasource) ds;
            permission = datasource.findRemovedEntity(p -> p != null && Objects.equals(p.getTarget(), permissionTarget));
            if (permission != null) {
                datasource.restoreEntity(permission);
            }
        }
    }
    if (permission == null) {
        Metadata metadata = AppBeans.get(Metadata.NAME);
        Permission newPermission = metadata.create(Permission.class);
        newPermission.setRole(roleDs.getItem());
        newPermission.setTarget(permissionTarget);
        newPermission.setType(type);
        newPermission.setValue(value);
        ds.addItem(newPermission);
    } else {
        permission.setValue(value);
    }
}
Also used : RestorablePermissionDatasource(com.haulmont.cuba.gui.app.security.ds.RestorablePermissionDatasource) PermissionVariant(com.haulmont.cuba.gui.app.security.entity.PermissionVariant) AttributePermissionVariant(com.haulmont.cuba.gui.app.security.entity.AttributePermissionVariant) Datasource(com.haulmont.cuba.gui.data.Datasource) PermissionType(com.haulmont.cuba.security.entity.PermissionType) RestorablePermissionDatasource(com.haulmont.cuba.gui.app.security.ds.RestorablePermissionDatasource) UUID(java.util.UUID) AppBeans(com.haulmont.cuba.core.global.AppBeans) Metadata(com.haulmont.cuba.core.global.Metadata) Objects(java.util.Objects) UiPermissionVariant(com.haulmont.cuba.gui.app.security.entity.UiPermissionVariant) Permission(com.haulmont.cuba.security.entity.Permission) Role(com.haulmont.cuba.security.entity.Role) CollectionDatasource(com.haulmont.cuba.gui.data.CollectionDatasource) Permission(com.haulmont.cuba.security.entity.Permission) Metadata(com.haulmont.cuba.core.global.Metadata)

Example 3 with PermissionType

use of com.haulmont.cuba.security.entity.PermissionType in project cuba by cuba-platform.

the class PermissionsControllerManager method getPermissionInfos.

public Collection<PermissionInfo> getPermissionInfos() {
    Collection<PermissionInfo> result = new ArrayList<>();
    for (PermissionType permissionType : PermissionType.values()) {
        Map<String, Integer> permissionsMap = userSessionSource.getUserSession().getPermissionsByType(permissionType);
        for (Map.Entry<String, Integer> entry : permissionsMap.entrySet()) {
            String target = entry.getKey();
            Integer value = entry.getValue();
            PermissionInfo permissionInfo = new PermissionInfo(permissionType.name(), target, getPermissionValueStr(permissionType, value), value);
            result.add(permissionInfo);
        }
    }
    return result;
}
Also used : PermissionInfo(com.haulmont.restapi.data.PermissionInfo) PermissionType(com.haulmont.cuba.security.entity.PermissionType) ArrayList(java.util.ArrayList) Map(java.util.Map)

Aggregations

PermissionType (com.haulmont.cuba.security.entity.PermissionType)3 AppBeans (com.haulmont.cuba.core.global.AppBeans)1 Metadata (com.haulmont.cuba.core.global.Metadata)1 RestorablePermissionDatasource (com.haulmont.cuba.gui.app.security.ds.RestorablePermissionDatasource)1 AttributePermissionVariant (com.haulmont.cuba.gui.app.security.entity.AttributePermissionVariant)1 PermissionVariant (com.haulmont.cuba.gui.app.security.entity.PermissionVariant)1 UiPermissionVariant (com.haulmont.cuba.gui.app.security.entity.UiPermissionVariant)1 CollectionDatasource (com.haulmont.cuba.gui.data.CollectionDatasource)1 Datasource (com.haulmont.cuba.gui.data.Datasource)1 Permission (com.haulmont.cuba.security.entity.Permission)1 Role (com.haulmont.cuba.security.entity.Role)1 PermissionInfo (com.haulmont.restapi.data.PermissionInfo)1 ArrayList (java.util.ArrayList)1 Map (java.util.Map)1 Objects (java.util.Objects)1 UUID (java.util.UUID)1 Element (org.dom4j.Element)1