Commit 9fd5d879 authored by Noel Alonso's avatar Noel Alonso
Browse files

Serializa documentos deshabilitados según rol

Si existen documentos deshabilitados, no los puedes visualizar a no ser
que seas un rol administrador.

ref #3
parent 3fe282bc
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
package es.redmic.api.administrative.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/*-
 * #%L
 * API
@@ -50,6 +54,22 @@ public class DocumentController extends
		this.serviceES = serviceES;
	}

	@Override
	protected Map<String, Object> getFixedQuery() {

		Map<String, Object> fixedQuery = super.getFixedQuery();

		List<String> roles = userService.getUserRole();

		if (!roles.contains("ROLE_ADMINISTRATOR")) {

			fixedQuery.put("only_enable", true);
			return fixedQuery;
		}
		fixedQuery.remove("only_enable");
		return fixedQuery;
	}

	@GetMapping(value = "${contoller.mapping.FILTERED_ACTIVITIES}")
	@ResponseBody
	public SuperDTO getActivities(@RequestParam(required = false, value = "fields") String[] fields,
+1 −1
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ public abstract class RBaseController<TModel extends BaseES<?>, TDTO extends Bas
	RBaseESService<TModel, TDTO> service;

	@Autowired
	UserUtilsService userService;
	protected UserUtilsService userService;

	protected Class<TDTO> typeOfTDTO;
	protected Class<TQueryDTO> typeOfTQueryDTO;
+37 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ package es.redmic.test.integration.administrative;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document;
import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration;
@@ -29,7 +30,7 @@ import static org.springframework.restdocs.operation.preprocess.Preprocessors.pr
import static org.springframework.restdocs.operation.preprocess.Preprocessors.preprocessResponse;
import static org.springframework.restdocs.operation.preprocess.Preprocessors.prettyPrint;


import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.CoreMatchers.notNullValue;

@@ -100,6 +101,7 @@ public class DocumentControllerTest extends IntegrationTestBase {
		modelToIndex.setSource("Esto es un documento en español");
		modelToIndex.setInternalUrl("/api/mediastorage/123.pdf");
		modelToIndex.setPrivateInternalUrl(true);
		modelToIndex.setEnabled(true);

		DomainES documentType = new DomainES();
		documentType.setId(1L);
@@ -158,4 +160,38 @@ public class DocumentControllerTest extends IntegrationTestBase {
		result.andExpect(status().is2xxSuccessful());
		result.andExpect(jsonPath("$.body.data[0].internalUrl", notNullValue()));
	}

	@Test
	public void checkDocumentController_NoReturnResult_IfSearchDocumentAsUserAndDocumentIsDisabled() throws Exception {

		MetadataQueryDTO query = new MetadataQueryDTO();
		query.setSize(1);

		modelToIndex.setEnabled(false);
		modelToIndex = repository.save(modelToIndex);

		ResultActions result = this.mockMvc
			.perform(post(CONTROLLER_DOCUMENT + "/_search").content(mapper.writeValueAsString(query))
				.contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).header("Authorization", "Bearer " + getTokenUser()));

		result.andExpect(status().is2xxSuccessful());
		result.andExpect(jsonPath("$.body.data.length()", is(0)));
	}

	@Test
	public void checkDocumentController_ReturnResult_IfSearchDocumentAsAdministratorAndDocumentIsDisabled() throws Exception {

		MetadataQueryDTO query = new MetadataQueryDTO();
		query.setSize(1);

		modelToIndex.setEnabled(false);
		modelToIndex = repository.save(modelToIndex);

		ResultActions result = this.mockMvc
			.perform(post(CONTROLLER_DOCUMENT + "/_search").content(mapper.writeValueAsString(query))
				.contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).header("Authorization", "Bearer " + getTokenAdministratorUser()));

		result.andExpect(status().is2xxSuccessful());
		result.andExpect(jsonPath("$.body.data[0]", notNullValue()));
	}
}