diff --git a/src/java/com/rjconsultores/ventaboletos/rest/AlterarSenhaRS.java b/src/java/com/rjconsultores/ventaboletos/rest/AlterarSenhaRS.java new file mode 100644 index 000000000..5619cacb6 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/rest/AlterarSenhaRS.java @@ -0,0 +1,27 @@ +package com.rjconsultores.ventaboletos.rest; + +import javax.annotation.security.RolesAllowed; +import javax.ws.rs.Consumes; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import com.rjconsultores.ventaboletos.rest.bean.ParamsAlterarSenha; +import com.rjconsultores.ventaboletos.rest.service.AlterarSenhaService; +import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; + +@Path("/alterarSenha") +public class AlterarSenhaRS { + + @POST + @Consumes({ MediaType.APPLICATION_JSON }) + @RolesAllowed("EMBARCADA") + @Produces({ MediaType.APPLICATION_JSON }) + public Response alterarSenha(ParamsAlterarSenha params) { + AlterarSenhaService service = (AlterarSenhaService) AppContext.getApplicationContext().getBean("alterarSenhaService"); + return Response.ok(service.alterarSenha(params), MediaType.APPLICATION_JSON).build(); + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/rest/bean/ParamsAlterarSenha.java b/src/java/com/rjconsultores/ventaboletos/rest/bean/ParamsAlterarSenha.java new file mode 100644 index 000000000..e590e1537 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/rest/bean/ParamsAlterarSenha.java @@ -0,0 +1,38 @@ +package com.rjconsultores.ventaboletos.rest.bean; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class ParamsAlterarSenha { + private Integer usuarioId; + private String senhaAtual; + private String novaSenha; + + public ParamsAlterarSenha() { + + } + + public Integer getUsuarioId() { + return usuarioId; + } + + public void setUsuarioId(Integer usuarioId) { + this.usuarioId = usuarioId; + } + + public String getSenhaAtual() { + return senhaAtual; + } + + public void setSenhaAtual(String senhaAtual) { + this.senhaAtual = senhaAtual; + } + + public String getNovaSenha() { + return novaSenha; + } + + public void setNovaSenha(String novaSenha) { + this.novaSenha = novaSenha; + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/rest/returns/AlteracaoSenhaRetorno.java b/src/java/com/rjconsultores/ventaboletos/rest/returns/AlteracaoSenhaRetorno.java new file mode 100644 index 000000000..c3bfca7e1 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/rest/returns/AlteracaoSenhaRetorno.java @@ -0,0 +1,26 @@ +package com.rjconsultores.ventaboletos.rest.returns; + +public class AlteracaoSenhaRetorno { + private String status; + private String mensagem; + + public AlteracaoSenhaRetorno() { + + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getMensagem() { + return mensagem; + } + + public void setMensagem(String mensagem) { + this.mensagem = mensagem; + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/rest/service/AlterarSenhaService.java b/src/java/com/rjconsultores/ventaboletos/rest/service/AlterarSenhaService.java new file mode 100644 index 000000000..a8b613885 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/rest/service/AlterarSenhaService.java @@ -0,0 +1,50 @@ +package com.rjconsultores.ventaboletos.rest.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.rjconsultores.ventaboletos.entidad.Usuario; +import com.rjconsultores.ventaboletos.exception.BusinessException; +import com.rjconsultores.ventaboletos.rest.bean.ParamsAlterarSenha; +import com.rjconsultores.ventaboletos.rest.returns.AlteracaoSenhaRetorno; +import com.rjconsultores.ventaboletos.service.UsuarioService; +import com.rjconsultores.ventaboletos.utilerias.seguridad.ContrasenaUtileria; + +@Service("alterarSenhaService") +public class AlterarSenhaService { + @Autowired + private UsuarioService usuarioService; + + public AlteracaoSenhaRetorno alterarSenha(ParamsAlterarSenha params) { + AlteracaoSenhaRetorno retorno = new AlteracaoSenhaRetorno(); + retorno.setStatus("SUCCESS"); + + if (params.getUsuarioId() == null || + params.getSenhaAtual() == null || params.getSenhaAtual().isEmpty() || + params.getNovaSenha() == null || params.getNovaSenha().isEmpty()) { + retorno.setStatus("ERROR"); + retorno.setMensagem("Chamada invalida"); + + return retorno; + } + + Usuario usuario = usuarioService.obtenerID(params.getUsuarioId()); + + if (usuario == null) { + retorno.setStatus("ERROR"); + retorno.setMensagem("Usuario nao encontrado"); + } else if (!usuario.getSenha().equals(ContrasenaUtileria.encriptarContrasena(params.getSenhaAtual()))) { + retorno.setStatus("ERROR"); + retorno.setMensagem("Senha atual invalida"); + } else { + try { + usuarioService.cambiarContrasena(usuario, params.getNovaSenha()); + } catch (BusinessException e) { + retorno.setStatus("ERROR"); + retorno.setMensagem(e.getMessage()); + } + } + + return retorno; + } +}