Skip to content

Commit

Permalink
Corrigiendo errores. Añadido botón eliminar consulta sólo ADMIN
Browse files Browse the repository at this point in the history
  • Loading branch information
rraduc00 committed Jun 6, 2017
1 parent 07dc27b commit 291a35d
Show file tree
Hide file tree
Showing 5 changed files with 134 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,37 +19,53 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;

import es.unileon.ulebankoffice.domain.SolicitudFinancialAdvisorDomain;
import es.unileon.ulebankoffice.repository.SolicitudesFinancialAdvisorRepository;

@Controller
@RequestMapping(value = "/offersconsulting/querypage")
public class QueryPageController {

private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();

@Autowired
private SolicitudesFinancialAdvisorRepository repo;

private static final Logger logger = Logger.getLogger("ulebankLogger");
@GetMapping( params = { "id" })

@GetMapping(params = { "id" })
public String add(ModelMap model, HttpServletRequest req, HttpServletResponse resp, Principal principal,
@RequestParam("id") String idSolicitud) throws IOException {

SolicitudFinancialAdvisorDomain solicitud = repo.findOne(idSolicitud);

if(solicitud == null){
logger.warn(principal.getName() + " " + req.getRemoteAddr() + " " + req.getLocalAddr() + " ha tratado de acceder a una consulta inexistente. Devolviendo 404 advisor.");

if (solicitud == null) {
logger.warn(principal.getName() + " " + req.getRemoteAddr() + " " + req.getLocalAddr()
+ " ha tratado de acceder a una consulta inexistente. Devolviendo 404 advisor.");
return "redirect:/e/404";
}

/* Se comprueba que el usuario que está accediendo a la solicitud es el creador de la misma o bien un empleado de la oficina o superiores */

/*
* Se comprueba que el usuario que está accediendo a la solicitud es el
* creador de la misma o bien un empleado de la oficina o superiores
*/
String creadorSolicitud = solicitud.getEmail();
if(hasRole("ROLE_ADVISORUSER") && !principal.getName().equals(creadorSolicitud)){
logger.warn("El usuario " + principal.getName() + req.getRemoteAddr() + " ha intentado acceder a la consulta " + solicitud.getId() + " del usuario " + creadorSolicitud + ". Redireccionando a 403.");
return "redirect:/e/403";
}

/* Si es empleado, podrá ver los comandos para añadir nueva respuesta. Si la solicitud ya tiene una respuesta, se le cargará en el text área por si lo que quiere es modificarla. */
if (hasRole("ROLE_ADVISORUSER") && !principal.getName().equals(creadorSolicitud)) {
logger.warn(
"El usuario " + principal.getName() + req.getRemoteAddr() + " ha intentado acceder a la consulta "
+ solicitud.getId() + " del usuario " + creadorSolicitud + ". Redireccionando a 403.");
return "redirect:/e/403";
}

/*
* Si es empleado, podrá ver los comandos para añadir nueva respuesta.
* Si la solicitud ya tiene una respuesta, se le cargará en el text área
* por si lo que quiere es modificarla.
*/
model.addAttribute("asuntoOferta", solicitud.getAsuntoOferta());
model.addAttribute("idQuery", solicitud.getId());
model.addAttribute("enlaceArchivo", "/offersconsulting/serve?blob-key=" + solicitud.getFileBlobKey());
Expand All @@ -62,27 +78,64 @@ public String add(ModelMap model, HttpServletRequest req, HttpServletResponse re
return "querypage";

}

@PostMapping(params = {"id"})
public String addResponse(ModelMap model, @RequestParam("response") String respuestaSolicitud, @RequestParam("id") String idSolicitud, Principal principal, HttpServletRequest req){
if(hasRole("ROLE_ADMIN") || hasRole("ROLE_SUPERVISOR") || hasRole("ROLE_EMPLEADO")){

@PostMapping(params = { "id" })
public String addResponse(ModelMap model, @RequestParam("response") String respuestaSolicitud,
@RequestParam("id") String idSolicitud, Principal principal, HttpServletRequest req) {
if (hasRole("ROLE_ADMIN") || hasRole("ROLE_SUPERVISOR") || hasRole("ROLE_EMPLEADO")) {
SolicitudFinancialAdvisorDomain solicitud = repo.findOne(idSolicitud);

if(solicitud == null){
logger.warn(principal.getName() + " " + req.getRemoteAddr() + " " + req.getLocalAddr() + " ha tratado de acceder a una consulta inexistente. Devolviendo 404 advisor.");

if (solicitud == null) {
logger.warn(principal.getName() + " " + req.getRemoteAddr() + " " + req.getLocalAddr()
+ " ha tratado de acceder a una consulta inexistente. Devolviendo 404 advisor.");
return "redirect:/e/404";
}

solicitud.setRespuestaOferta(respuestaSolicitud);
solicitud.setEstado("Contestada");
repo.save(solicitud);
logger.info(principal.getName() + " ha añadido una respuesta a la consulta " + solicitud.getId());
return "redirect:/offersconsulting/querypage?id="+idSolicitud;
return "redirect:/offersconsulting/querypage?id=" + idSolicitud;
} else {
logger.error(req.getRemoteAddr() + " " + req.getLocalAddr() + " Alguien ha tratado de hacer POST a una id de una consulta sin tener los roles necesarios o haber iniciado sesión. Esto significa que alguien ha tratado, por medios externos, contestar a una query.");
logger.error(req.getRemoteAddr() + " " + req.getLocalAddr()
+ " Alguien ha tratado de hacer POST a una id de una consulta sin tener los roles necesarios o haber iniciado sesión. Esto significa que alguien ha tratado, por medios externos, contestar a una query.");
return "redirect:/e/403";
}


}

@GetMapping(value = "/e", params = { "id" })
public String eliminarConsulta(ModelMap model, HttpServletRequest req, HttpServletResponse resp,
Principal principal, @RequestParam("id") String idSolicitud) {
SolicitudFinancialAdvisorDomain solicitud = repo.findOne(idSolicitud);

logger.info(principal.getName() + " " + req.getRemoteAddr() + " " + req.getLocalAddr()
+ "está tratando de borrar una consulta.");

if (solicitud == null) {
logger.warn(principal.getName() + " " + req.getRemoteAddr() + " " + req.getLocalAddr()
+ " ha tratado de borrar una consulta inexistente. Devolviendo 404 advisor.");
return "redirect:/e/404";
}

if (!hasRole("ROLE_ADMIN")) {
logger.warn(principal.getName() + " " + req.getRemoteAddr() + " " + req.getLocalAddr()
+ "ha tratado de eliminar la consulta" + idSolicitud + " sin tener los privilegios necesarios.");
return "redirect:/e/403";
}

if (solicitud.getFileBlobKey() != null) {
/*
* Si no encuentra la blobkey no hay nullPointer, aparentemente,
* simplemente lo omite.
*/
blobstoreService.delete(new BlobKey(solicitud.getFileBlobKey()));
}

repo.delete(solicitud);
logger.info(principal.getName() + " " + req.getRemoteAddr() + " " + req.getLocalAddr()
+ " ha borrado la consulta " + idSolicitud);
return "redirect:/offersconsulting";
}

private boolean hasRole(String role) {
Expand Down
80 changes: 43 additions & 37 deletions ulebankoffice/src/main/webapp/WEB-INF/views/currentaccount.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,19 @@
<td>
<fmt:formatDate value="${movimiento.fechaValor}" pattern="dd-MM-yyyy"/>
</td>
<td>${movimiento.operacion}</td>
<td>
<c:choose>
<c:when test = "${movimiento.operacion == 'I' }">
Ingreso
</c:when>
<c:when test = "${movimiento.operacion == 'D' }">
Disposición
</c:when>
<c:otherwise>
No especificado
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
</table>
Expand Down Expand Up @@ -279,18 +291,16 @@
</a>
</p>
<div class="row text-center">

<a class="button mt-20" id="formularioMovimientos" onclick="registrar()"><span> Registrar movimientos </span> <i class ="fa fa-plus"></i></a>
<input id="submit_handle_formularioMovimientos" type="submit" style="display: none" />
<a class="button mt-20" id="formularioMovimientos" onclick="registrar()"><span> Registrar movimientos </span> <i class ="fa fa-plus"></i></a>
<input id="submit_handle_formularioMovimientos" type="submit" style="display: none" />
</div>
<!-- En caso de que algún usuario tenga desactivado javascript, saldrá este mensaje por defecto. -->
<!-- En caso de que algún usuario tenga desactivado javascript, saldrá este mensaje por defecto. -->
<noscript>
<input type="submit"
value="Registrar movimientos" />
</noscript>
</form:form>
<hr/>

<form id="liquidarForm" method="POST">
<div class="row">
<div class="col-md-6 col-md-offset-3">
Expand All @@ -303,9 +313,8 @@
name="fechaInicioLiquidacion" required="required" />
</div>
</div>
<br>
<br>

<br>
<br>
<div class="col-md-6 col-md-offset-3">
<div class="col-md-6">
Hasta
Expand All @@ -317,10 +326,9 @@
</div>
</div>
</div>

<div class="row text-center">
<a class="button mt-20" id="liquidarFormulario" onclick="liquidar()"> <span> Liquidar </span> <i class ="fa fa-calculator"></i></a>
<input id="submit_handle_liquidarFormulario" type="submit" style="display: none" />
<a class="button mt-20" id="liquidarFormulario" onclick="liquidar()"> <span> Liquidar </span> <i class ="fa fa-calculator"></i></a>
<input id="submit_handle_liquidarFormulario" type="submit" style="display: none" />
</div>
<!-- En caso de que algún usuario tenga desactivado javascript, saldrá este mensaje por defecto. -->
<noscript>
Expand All @@ -333,32 +341,30 @@
<a href="/o/logout" class="button mt-20" > <span> Cerrar sesión </span> <i class ="fa fa-sign-out"></i></a>
</div>
</div>

</section>
<!--=================================
Footer-->
<jsp:include page="/WEB-INF/views/footer.jsp" />
<!--=================================
Footer-->

</div>
</section>
<!--=================================
Footer-->
<jsp:include page="/WEB-INF/views/footer.jsp" />
<!--=================================
Footer-->
</div>
<script type="text/javascript">
var strings = new Array();
strings['movimiento.descripcion'] = "<spring:message code='label.s7c1' javaScriptEscape='true' />";
strings['movimiento.fecha'] = "<spring:message code='label.s7c3' javaScriptEscape='true' />";
strings['movimiento.importe'] = "<spring:message code='label.s7c2' javaScriptEscape='true' />";
strings['movimiento.operacion'] = "<spring:message code='label.operation' javaScriptEscape='true' />";
strings['movimiento.ingreso'] = "<spring:message code='label.ingreso' javaScriptEscape='true' />";
strings['movimiento.disposicion'] = "<spring:message code='label.disposicion' javaScriptEscape='true' />";
function liquidar() {
$("#submit_handle_liquidarFormulario").click();
}
function registrar() {
$("#submit_handle_formularioMovimientos").click();
}
var strings = new Array();
strings['movimiento.descripcion'] = "<spring:message code='label.s7c1' javaScriptEscape='true' />";
strings['movimiento.fecha'] = "<spring:message code='label.s7c3' javaScriptEscape='true' />";
strings['movimiento.importe'] = "<spring:message code='label.s7c2' javaScriptEscape='true' />";
strings['movimiento.operacion'] = "<spring:message code='label.operation' javaScriptEscape='true' />";
strings['movimiento.ingreso'] = "<spring:message code='label.ingreso' javaScriptEscape='true' />";
strings['movimiento.disposicion'] = "<spring:message code='label.disposicion' javaScriptEscape='true' />";
function liquidar() {
$("#submit_handle_liquidarFormulario").click();
}
function registrar() {
$("#submit_handle_formularioMovimientos").click();
}
</script>
<script src="/resources/services/js/dynamic-form2.js"></script>
<script src="/resources/services/js/tooltip-script.js"></script>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@
<form:errors style="color: red;" path="periodoLiquidacion"></form:errors>
</div>
<div class="col-md-3">
Retención de rendimientos:
Porcentaje de retención:
<form:input path="retencionRendimientosCapital" type="text"
required="required" name="u" />
<form:errors style="color: red;" path="retencionRendimientosCapital"></form:errors>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,7 @@
<form:errors style="color: red;" path="cuentaCorriente.periodoLiquidacion"></form:errors>
</div>
<div class="col-md-3">
Retención de rendimientos:
Porcentaje de retención:
<form:input path="cuentaCorriente.retencionRendimientosCapital" type="text"
required="required" name="u" />
<form:errors style="color: red;" path="cuentaCorriente.retencionRendimientosCapital"></form:errors>
Expand Down
15 changes: 11 additions & 4 deletions ulebankoffice/src/main/webapp/WEB-INF/views/querypage.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -137,25 +137,32 @@
<h4>Fecha creación:</h4> <p>${fechaCreacion}</p>
</div>
</div>

<sec:authorize access="hasRole('ROLE_ADMIN')">
<div class="row" >
<div class="col-md-1" style="border: 2px solid #ff0000" >
<a href="/offersconsulting/querypage/e?id=${idQuery}">Eliminar</a>
</div>
</div>
</sec:authorize>
<h4>Url oferta:</h4> <p><a href="${urlOferta}" target="_blank">${urlOferta}</a></p>

<h4>Comentarios del autor de la consulta:</h4> <p style="text-align: justify;"> ${textoOferta}</p>

<h4>Respuesta:</h4> <pre style="white-space:pre-wrap;">${respuestaOferta}</pre>

<sec:authorize access="hasAnyRole('ROLE_ADMIN','ROLE_EMPLEADO','ROLE_SUPERVISOR')">
<fieldset style="border: 1px solid #ff0000">
<h4>Escribir o modificar respuesta: </h4>
<fieldset>

<form:form
action="/offersconsulting/querypage?id=${param.id}"
role="form" method="post"
id="servicesform" >
<div id="register-form" class="register-form">

<textarea id="response" name="response" rows="8" >${respuestaOferta}</textarea>
<textarea id="response" name="response" rows="8" placeholder="Aquí se debe escribir la respuesta." >${respuestaOferta}</textarea>
<div class="col-md-3">
<input type="submit" value="<spring:message code="label.submitresponse"/>">
<input type="submit" style="border: 3px solid #ff0000" value="<spring:message code="label.submitresponse"/>">
</div>
</div>
</form:form>
Expand Down

0 comments on commit 291a35d

Please sign in to comment.