From 506f7678b1ddd20b42b143b5447151b8113e43fc Mon Sep 17 00:00:00 2001 From: Fernando Pietchaki Domingues <fpd09@inf.ufpr.br> Date: Tue, 2 Apr 2013 14:02:07 -0300 Subject: [PATCH] =?UTF-8?q?adicinado=20altera=C3=A7=C3=A3o=20de=20senha=20?= =?UTF-8?q?por=20parte=20do=20Usu=C3=A1rio=20e=20corrigida=20via=20Adminis?= =?UTF-8?q?trador?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../participatorio/web/UsuarioController.java | 53 +++++++++++++++++++ .../web/UsuarioController_Roo_Controller.aj | 13 ----- .../WEB-INF/i18n/application.properties | 2 + .../webapp/WEB-INF/i18n/messages.properties | 1 + src/main/webapp/WEB-INF/views/footer.jspx | 10 ++++ .../webapp/WEB-INF/views/projetos/list.jspx | 4 +- .../WEB-INF/views/usuarios/accepted.jspx | 11 ++++ .../views/usuarios/changepassword.jspx | 17 ++++++ .../webapp/WEB-INF/views/usuarios/error.jspx | 11 ++++ .../webapp/WEB-INF/views/usuarios/views.xml | 9 ++++ 11 files changed, 118 insertions(+), 15 deletions(-) create mode 100644 src/main/webapp/WEB-INF/views/usuarios/accepted.jspx create mode 100644 src/main/webapp/WEB-INF/views/usuarios/changepassword.jspx create mode 100644 src/main/webapp/WEB-INF/views/usuarios/error.jspx diff --git a/pom.xml b/pom.xml index 89fc388..b660e17 100644 --- a/pom.xml +++ b/pom.xml @@ -326,7 +326,7 @@ </dependencies> <build> <plugins> - <plugin> + <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat6-maven-plugin</artifactId> <version>2.0</version> diff --git a/src/main/java/br/ufpr/c3sl/participatorio/web/UsuarioController.java b/src/main/java/br/ufpr/c3sl/participatorio/web/UsuarioController.java index 4ef263f..0cb64df 100644 --- a/src/main/java/br/ufpr/c3sl/participatorio/web/UsuarioController.java +++ b/src/main/java/br/ufpr/c3sl/participatorio/web/UsuarioController.java @@ -5,11 +5,14 @@ import javax.validation.Valid; import org.springframework.roo.addon.web.mvc.controller.scaffold.RooWebScaffold; import org.springframework.security.authentication.encoding.ShaPasswordEncoder; +import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import br.ufpr.c3sl.participatorio.Usuario; @@ -34,4 +37,54 @@ public class UsuarioController { return "redirect:/usuarios/" + encodeUrlPathSegment(usuario.getId().toString(), httpServletRequest); } + @RequestMapping(method = RequestMethod.PUT, produces = "text/html") + public String update(@Valid Usuario usuario, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) { + if (bindingResult.hasErrors()) { + populateEditForm(uiModel, usuario); + return "usuarios/update"; + } + + ShaPasswordEncoder encoder = new ShaPasswordEncoder(256); + + usuario.setSenha(encoder.encodePassword(usuario.getSenha(), "")); + + uiModel.asMap().clear(); + usuario.merge(); + return "redirect:/usuarios/" + encodeUrlPathSegment(usuario.getId().toString(), httpServletRequest); + } + + + + @RequestMapping(value = "changepassword", method = RequestMethod.GET) + public String chancePassword() { + return "usuarios/changepassword"; + } + + @RequestMapping(value = "accepted", method = RequestMethod.GET) + public String accepted() { + return "usuarios/accepted"; + } + + @RequestMapping(value = "error", method = RequestMethod.GET) + public String error() { + return "usuarios/error"; + } + + @RequestMapping(value = "updatepassword", method = RequestMethod.GET) + public String updatePassword(@RequestParam(value = "oldpassword", required = true) String opass, + @RequestParam(value = "newpassword", required = true) String npass) { + Usuario p = (Usuario) Usuario.entityManager().createNativeQuery("select * from usuario where login='" + +SecurityContextHolder.getContext().getAuthentication().getName()+"'", + Usuario.class).getSingleResult(); + + ShaPasswordEncoder encoder = new ShaPasswordEncoder(256); + + if (!(p.getSenha().equals(encoder.encodePassword(opass, "")))) + return "redirect:error"; + + p.setSenha(encoder.encodePassword(npass, "")); + + p.merge(); + return "redirect:accepted"; + } } diff --git a/src/main/java/br/ufpr/c3sl/participatorio/web/UsuarioController_Roo_Controller.aj b/src/main/java/br/ufpr/c3sl/participatorio/web/UsuarioController_Roo_Controller.aj index e902971..ca2c015 100644 --- a/src/main/java/br/ufpr/c3sl/participatorio/web/UsuarioController_Roo_Controller.aj +++ b/src/main/java/br/ufpr/c3sl/participatorio/web/UsuarioController_Roo_Controller.aj @@ -9,9 +9,7 @@ import br.ufpr.c3sl.participatorio.web.UsuarioController; import java.io.UnsupportedEncodingException; import java.util.Arrays; import javax.servlet.http.HttpServletRequest; -import javax.validation.Valid; import org.springframework.ui.Model; -import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -48,17 +46,6 @@ privileged aspect UsuarioController_Roo_Controller { return "usuarios/list"; } - @RequestMapping(method = RequestMethod.PUT, produces = "text/html") - public String UsuarioController.update(@Valid Usuario usuario, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) { - if (bindingResult.hasErrors()) { - populateEditForm(uiModel, usuario); - return "usuarios/update"; - } - uiModel.asMap().clear(); - usuario.merge(); - return "redirect:/usuarios/" + encodeUrlPathSegment(usuario.getId().toString(), httpServletRequest); - } - @RequestMapping(value = "/{id}", params = "form", produces = "text/html") public String UsuarioController.updateForm(@PathVariable("id") Long id, Model uiModel) { populateEditForm(uiModel, Usuario.findUsuario(id)); diff --git a/src/main/webapp/WEB-INF/i18n/application.properties b/src/main/webapp/WEB-INF/i18n/application.properties index f213008..262d0be 100644 --- a/src/main/webapp/WEB-INF/i18n/application.properties +++ b/src/main/webapp/WEB-INF/i18n/application.properties @@ -67,6 +67,8 @@ label_br_ufpr_c3sl_participatorio_usuario_permissao=Permissão label_br_ufpr_c3sl_participatorio_usuario_plural=Usuários label_br_ufpr_c3sl_participatorio_usuario_senha=Senha label_br_ufpr_c3sl_participatorio_usuario_version=Versão +label_br_ufpr_c3sl_participatorio_usuario_oldpass=Senha Atual +label_br_ufpr_c3sl_participatorio_usuario_newpass=Nova Senha menu_category_ministerio_label=Ministério menu_category_projeto_label=Projeto diff --git a/src/main/webapp/WEB-INF/i18n/messages.properties b/src/main/webapp/WEB-INF/i18n/messages.properties index f931665..f9867e3 100644 --- a/src/main/webapp/WEB-INF/i18n/messages.properties +++ b/src/main/webapp/WEB-INF/i18n/messages.properties @@ -100,5 +100,6 @@ security_login_form_name=Usuário security_login_form_name_message=Digite seu nome de Usuário security_login_form_password=Senha security_login_form_password_message=Digite sua senha +security_login_change_password=Alterar Senha security_login_unsuccessful=Seu login não foi realizado, Tente outra vez. Motivo: security_logout=Logout diff --git a/src/main/webapp/WEB-INF/views/footer.jspx b/src/main/webapp/WEB-INF/views/footer.jspx index bb9998e..14e1d8a 100644 --- a/src/main/webapp/WEB-INF/views/footer.jspx +++ b/src/main/webapp/WEB-INF/views/footer.jspx @@ -11,6 +11,16 @@ </span> <c:if test="${pageContext['request'].userPrincipal != null}"> <c:out value=" | "/> + + <span> + <spring:url value="/usuarios/changepassword" var="changepass"/> + <a href="${changepass}"> + <spring:message code="security_login_change_password"/> + </a> + </span> + + <c:out value=" | "/> + <span> <spring:url value="/resources/j_spring_security_logout" var="logout"/> <a href="${logout}"> diff --git a/src/main/webapp/WEB-INF/views/projetos/list.jspx b/src/main/webapp/WEB-INF/views/projetos/list.jspx index 142c8d7..40300d2 100644 --- a/src/main/webapp/WEB-INF/views/projetos/list.jspx +++ b/src/main/webapp/WEB-INF/views/projetos/list.jspx @@ -5,12 +5,14 @@ <sec:authorize ifAnyGranted="Administrador"> <page:list id="pl_br_ufpr_c3sl_participatorio_Projeto" items="${projetos}" z="user-managed"> <table:table data="${projetos}" id="l_br_ufpr_c3sl_participatorio_Projeto" path="/projetos" z="user-managed"> - <!-- <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_pai" property="pai" z="JnX374OPNV+3oLlfOcMYu3wG024="/> --> + <!-- <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_pai" property="pai" z="JnX374OPNV+3oLlfOcMYu3wG024="/> --> <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_nome" property="nome" z="djZOsc2/qBPTa0C3ffNAlDEgP0U="/> <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_acao" property="acao" z="2hGM9LKsHjh5/zpeavaa+slBUkA="/> <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_demanda" property="demanda" z="K99mnRN9vX7sE9XtHufPcJBkBdg="/> <!-- <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_outroAcao" property="outroAcao" z="KDK14ptwJLWXh4xCooeqI+wBnJk="/> --> <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_ministerio" property="ministerio" z="qYUkNm475DOx0s81JEz3ff7BQho="/> + <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_pai" property="pai" z="JnX374OPNV+3oLlfOcMYu3wG024="/> + <table:column id="c_br_ufpr_c3sl_participatorio_Projeto_outroAcao" property="outroAcao" z="KDK14ptwJLWXh4xCooeqI+wBnJk="/> </table:table> </page:list> </sec:authorize> diff --git a/src/main/webapp/WEB-INF/views/usuarios/accepted.jspx b/src/main/webapp/WEB-INF/views/usuarios/accepted.jspx new file mode 100644 index 0000000..c4c845e --- /dev/null +++ b/src/main/webapp/WEB-INF/views/usuarios/accepted.jspx @@ -0,0 +1,11 @@ +<div xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + <spring:message var="app_name" code="application_name" htmlEscape="false" /> + <spring:message var="title" code="welcome_titlepane" arguments="${app_name}" htmlEscape="false" /> + <util:panel id="title" title="Aceito"> + <b> + Operação realizada com sucesso. + </b> + </util:panel> +</div> diff --git a/src/main/webapp/WEB-INF/views/usuarios/changepassword.jspx b/src/main/webapp/WEB-INF/views/usuarios/changepassword.jspx new file mode 100644 index 0000000..835296d --- /dev/null +++ b/src/main/webapp/WEB-INF/views/usuarios/changepassword.jspx @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<div xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:page="urn:jsptagdir:/WEB-INF/tags/form" xmlns:table="urn:jsptagdir:/WEB-INF/tags/form/fields" version="2.0"> + <jsp:directive.page import="org.springframework.ui.Model"/> + <jsp:directive.page contentType="text/html;charset=UTF-8"/> + <jsp:output omit-xml-declaration="yes"/> + + + <b>Informe sua senha antiga e sua nova senha.</b> + <p/> + <form name="chancepassword" action="updatepassword" method="get"> + <field:input field="oldpassword" type="password" id="c_br_ufpr_c3sl_participatorio_usuario_oldpass" disableFormBinding="true" z="user_managed"/> + <field:input field="newpassword" type="password" id="c_br_ufpr_c3sl_participatorio_usuario_newpass" disableFormBinding="true" z="user_managed"/> + <input type="submit" value="Save"/> + </form> + + +</div> diff --git a/src/main/webapp/WEB-INF/views/usuarios/error.jspx b/src/main/webapp/WEB-INF/views/usuarios/error.jspx new file mode 100644 index 0000000..03262ef --- /dev/null +++ b/src/main/webapp/WEB-INF/views/usuarios/error.jspx @@ -0,0 +1,11 @@ +<div xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> + <jsp:directive.page contentType="text/html;charset=UTF-8" /> + <jsp:output omit-xml-declaration="yes" /> + <spring:message var="app_name" code="application_name" htmlEscape="false" /> + <spring:message var="title" code="welcome_titlepane" arguments="${app_name}" htmlEscape="false" /> + <util:panel id="title" title="Error"> + <b> + Não foi possível concluir a operação. + </b> + </util:panel> +</div> diff --git a/src/main/webapp/WEB-INF/views/usuarios/views.xml b/src/main/webapp/WEB-INF/views/usuarios/views.xml index af1ed3f..711d6cf 100644 --- a/src/main/webapp/WEB-INF/views/usuarios/views.xml +++ b/src/main/webapp/WEB-INF/views/usuarios/views.xml @@ -13,4 +13,13 @@ <definition extends="default" name="usuarios/update"> <put-attribute name="body" value="/WEB-INF/views/usuarios/update.jspx"/> </definition> +<definition extends="default" name="usuarios/accepted"> + <put-attribute name="body" value="/WEB-INF/views/usuarios/accepted.jspx"/> + </definition> +<definition extends="default" name="usuarios/error"> + <put-attribute name="body" value="/WEB-INF/views/usuarios/error.jspx"/> + </definition> +<definition extends="default" name="usuarios/changepassword"> + <put-attribute name="body" value="/WEB-INF/views/usuarios/changepassword.jspx"/> + </definition> </tiles-definitions> -- GitLab