Search in sources :

Example 1 with SecurityDimension

use of io.vertigo.account.authorization.metamodel.SecurityDimension in project vertigo by KleeGroup.

the class SecuredEntityDeserializer method deserializeSecurityDimensions.

private static SecurityDimension deserializeSecurityDimensions(final DtDefinition entityDefinition, final JsonObject advancedDimension, final JsonDeserializationContext context) {
    final String name = advancedDimension.get("name").getAsString();
    final SecurityDimensionType type = SecurityDimensionType.valueOf(advancedDimension.get("type").getAsString());
    final List<String> fieldNames = deserializeList(advancedDimension.get("fields"), String.class, context);
    final List<DtField> fields = fieldNames.stream().map(fieldName -> deserializeDtField(entityDefinition, fieldName)).collect(Collectors.toList());
    final List<String> values = deserializeList(advancedDimension.get("values"), String.class, context);
    return new SecurityDimension(name, type, fields, values);
}
Also used : JsonObject(com.google.gson.JsonObject) RuleMultiExpression(io.vertigo.account.authorization.metamodel.rulemodel.RuleMultiExpression) DtField(io.vertigo.dynamo.domain.metamodel.DtField) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) JsonDeserializationContext(com.google.gson.JsonDeserializationContext) JsonElement(com.google.gson.JsonElement) Home(io.vertigo.app.Home) WrappedException(io.vertigo.lang.WrappedException) Map(java.util.Map) Assertion(io.vertigo.lang.Assertion) SecuredEntity(io.vertigo.account.authorization.metamodel.SecuredEntity) SecurityDimensionType(io.vertigo.account.authorization.metamodel.SecurityDimensionType) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) Set(java.util.Set) DslParserUtil(io.vertigo.account.impl.authorization.dsl.rules.DslParserUtil) Collectors(java.util.stream.Collectors) Definition(io.vertigo.core.definition.Definition) List(java.util.List) DefinitionUtil(io.vertigo.core.definition.DefinitionUtil) Type(java.lang.reflect.Type) StringUtil(io.vertigo.util.StringUtil) JsonDeserializer(com.google.gson.JsonDeserializer) Optional(java.util.Optional) Authorization(io.vertigo.account.authorization.metamodel.Authorization) PegNoMatchFoundException(io.vertigo.commons.peg.PegNoMatchFoundException) Collections(java.util.Collections) SecurityDimension(io.vertigo.account.authorization.metamodel.SecurityDimension) SecurityDimension(io.vertigo.account.authorization.metamodel.SecurityDimension) SecurityDimensionType(io.vertigo.account.authorization.metamodel.SecurityDimensionType) DtField(io.vertigo.dynamo.domain.metamodel.DtField)

Example 2 with SecurityDimension

use of io.vertigo.account.authorization.metamodel.SecurityDimension in project vertigo by KleeGroup.

the class SecuredEntityDeserializer method deserialize.

/**
 * {@inheritDoc}
 */
@Override
public SecuredEntity deserialize(final JsonElement json, final Type typeOfT, final JsonDeserializationContext context) {
    final JsonObject jsonSecuredEntity = json.getAsJsonObject();
    final DtDefinition entityDefinition = findDtDefinition(jsonSecuredEntity.get("entity").getAsString());
    final List<DtField> securityFields = new ArrayList<>();
    for (final JsonElement securityField : jsonSecuredEntity.get("securityFields").getAsJsonArray()) {
        securityFields.add(deserializeDtField(entityDefinition, securityField.getAsString()));
    }
    final List<SecurityDimension> advancedDimensions = new ArrayList<>();
    for (final JsonElement advancedDimension : jsonSecuredEntity.get("securityDimensions").getAsJsonArray()) {
        // TODO if null ?
        advancedDimensions.add(deserializeSecurityDimensions(entityDefinition, advancedDimension.getAsJsonObject(), context));
    }
    // on garde la map des operations pour resoudre les grants
    final Map<String, Authorization> permissionPerOperations = new HashMap<>();
    for (final JsonElement operation : jsonSecuredEntity.get("operations").getAsJsonArray()) {
        // TODO if null ?
        final Authorization permission = deserializeOperations(entityDefinition, operation.getAsJsonObject(), context, permissionPerOperations);
        Assertion.checkArgument(!permissionPerOperations.containsKey(permission.getOperation().get()), "Operation {0} already declared on {1}", permission.getOperation().get(), entityDefinition.getName());
        permissionPerOperations.put(permission.getOperation().get(), permission);
    }
    return new SecuredEntity(entityDefinition, securityFields, advancedDimensions, new ArrayList<>(permissionPerOperations.values()));
}
Also used : HashMap(java.util.HashMap) SecuredEntity(io.vertigo.account.authorization.metamodel.SecuredEntity) DtDefinition(io.vertigo.dynamo.domain.metamodel.DtDefinition) ArrayList(java.util.ArrayList) JsonObject(com.google.gson.JsonObject) DtField(io.vertigo.dynamo.domain.metamodel.DtField) Authorization(io.vertigo.account.authorization.metamodel.Authorization) JsonElement(com.google.gson.JsonElement) SecurityDimension(io.vertigo.account.authorization.metamodel.SecurityDimension)

Aggregations

JsonElement (com.google.gson.JsonElement)2 JsonObject (com.google.gson.JsonObject)2 Authorization (io.vertigo.account.authorization.metamodel.Authorization)2 SecuredEntity (io.vertigo.account.authorization.metamodel.SecuredEntity)2 SecurityDimension (io.vertigo.account.authorization.metamodel.SecurityDimension)2 DtDefinition (io.vertigo.dynamo.domain.metamodel.DtDefinition)2 DtField (io.vertigo.dynamo.domain.metamodel.DtField)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 JsonDeserializationContext (com.google.gson.JsonDeserializationContext)1 JsonDeserializer (com.google.gson.JsonDeserializer)1 SecurityDimensionType (io.vertigo.account.authorization.metamodel.SecurityDimensionType)1 RuleMultiExpression (io.vertigo.account.authorization.metamodel.rulemodel.RuleMultiExpression)1 DslParserUtil (io.vertigo.account.impl.authorization.dsl.rules.DslParserUtil)1 Home (io.vertigo.app.Home)1 PegNoMatchFoundException (io.vertigo.commons.peg.PegNoMatchFoundException)1 Definition (io.vertigo.core.definition.Definition)1 DefinitionUtil (io.vertigo.core.definition.DefinitionUtil)1 Assertion (io.vertigo.lang.Assertion)1 WrappedException (io.vertigo.lang.WrappedException)1