use of org.hisp.dhis.schema.Schema in project dhis2-core by dhis2.
the class SchemaController method getSchema.
@RequestMapping(value = "/{type}", method = RequestMethod.GET)
@ResponseBody
public RootNode getSchema(@PathVariable String type) {
List<String> fields = Lists.newArrayList(contextService.getParameterValues("fields"));
if (fields.isEmpty()) {
fields.add("*");
}
Schema schema = getSchemaFromType(type);
if (schema != null) {
linkService.generateSchemaLinks(schema);
CollectionNode collectionNode = fieldFilterService.filter(Schema.class, Collections.singletonList(schema), fields);
return NodeUtils.createRootNode(collectionNode.getChildren().get(0));
}
throw new HttpClientErrorException(HttpStatus.NOT_FOUND, "Type " + type + " does not exist.");
}
use of org.hisp.dhis.schema.Schema in project dhis2-core by dhis2.
the class DefaultAclService method canUpdate.
@Override
public boolean canUpdate(User user, IdentifiableObject object) {
Schema schema = schemaService.getSchema(object.getClass());
if (schema == null || haveOverrideAuthority(user)) {
return true;
}
List<String> anyAuthorities = schema.getAuthorityByType(AuthorityType.UPDATE);
if (anyAuthorities.isEmpty()) {
anyAuthorities.addAll(schema.getAuthorityByType(AuthorityType.CREATE));
anyAuthorities.addAll(schema.getAuthorityByType(AuthorityType.CREATE_PRIVATE));
anyAuthorities.addAll(schema.getAuthorityByType(AuthorityType.CREATE_PUBLIC));
}
if (canAccess(user, anyAuthorities)) {
if (!schema.isShareable()) {
return true;
}
if (checkSharingAccess(user, object) && (checkUser(user, object) || checkSharingPermission(user, object, AccessStringHelper.Permission.WRITE))) {
return true;
}
} else if (schema.isImplicitPrivateAuthority() && checkUser(user, object) && checkSharingAccess(user, object)) {
return true;
}
return false;
}
use of org.hisp.dhis.schema.Schema in project dhis2-core by dhis2.
the class DefaultAclService method canDelete.
@Override
public boolean canDelete(User user, IdentifiableObject object) {
Schema schema = schemaService.getSchema(object.getClass());
if (schema == null || haveOverrideAuthority(user)) {
return true;
}
List<String> anyAuthorities = schema.getAuthorityByType(AuthorityType.DELETE);
if (anyAuthorities.isEmpty()) {
anyAuthorities.addAll(schema.getAuthorityByType(AuthorityType.CREATE));
anyAuthorities.addAll(schema.getAuthorityByType(AuthorityType.CREATE_PRIVATE));
anyAuthorities.addAll(schema.getAuthorityByType(AuthorityType.CREATE_PUBLIC));
}
if (canAccess(user, anyAuthorities)) {
if (!schema.isShareable()) {
return true;
}
if (checkUser(user, object) || checkSharingPermission(user, object, AccessStringHelper.Permission.WRITE)) {
return true;
}
} else if (schema.isImplicitPrivateAuthority() && checkUser(user, object)) {
return true;
}
return false;
}
use of org.hisp.dhis.schema.Schema in project dhis2-core by dhis2.
the class ValidationCriteriaSchemaDescriptor method getSchema.
@Override
public Schema getSchema() {
Schema schema = new Schema(ValidationCriteria.class, SINGULAR, PLURAL);
schema.setOrder(1460);
return schema;
}
use of org.hisp.dhis.schema.Schema in project dhis2-core by dhis2.
the class ValidationRuleGroupSchemaDescriptor method getSchema.
@Override
public Schema getSchema() {
Schema schema = new Schema(ValidationRuleGroup.class, SINGULAR, PLURAL);
schema.setRelativeApiEndpoint(API_ENDPOINT);
schema.setOrder(1400);
schema.getAuthorities().add(new Authority(AuthorityType.CREATE, Lists.newArrayList("F_VALIDATIONRULEGROUP_PUBLIC_ADD")));
schema.getAuthorities().add(new Authority(AuthorityType.UPDATE, Lists.newArrayList("F_VALIDATIONRULEGROUP_PRIVATE_ADD")));
schema.getAuthorities().add(new Authority(AuthorityType.DELETE, Lists.newArrayList("F_VALIDATIONRULEGROUP_DELETE")));
return schema;
}
Aggregations