diff --git a/src/main/java/org/springframework/cheapy/configuration/SecurityConfiguration.java b/src/main/java/org/springframework/cheapy/configuration/SecurityConfiguration.java index 25364f7b0..6382e7dbc 100644 --- a/src/main/java/org/springframework/cheapy/configuration/SecurityConfiguration.java +++ b/src/main/java/org/springframework/cheapy/configuration/SecurityConfiguration.java @@ -44,6 +44,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { .antMatchers("/logout").authenticated() .antMatchers("/usuarios/new").permitAll() + .antMatchers("/usuarios/**").hasAnyAuthority("usuario") .antMatchers("/admin/**").hasAnyAuthority("admin") .antMatchers("/owners/**").hasAnyAuthority("owner", "admin") diff --git a/src/main/java/org/springframework/cheapy/model/User.java b/src/main/java/org/springframework/cheapy/model/User.java index 4ef2dec13..81b834002 100644 --- a/src/main/java/org/springframework/cheapy/model/User.java +++ b/src/main/java/org/springframework/cheapy/model/User.java @@ -43,5 +43,4 @@ public class User{ public void setEnabled(boolean enabled) { this.enabled = enabled; } - } diff --git a/src/main/java/org/springframework/cheapy/model/Usuario.java b/src/main/java/org/springframework/cheapy/model/Usuario.java index 9079bc72e..6299ca2b5 100644 --- a/src/main/java/org/springframework/cheapy/model/Usuario.java +++ b/src/main/java/org/springframework/cheapy/model/Usuario.java @@ -12,9 +12,9 @@ import javax.validation.constraints.NotBlank; @Table(name = "usuarios") public class Usuario extends BaseEntity{ - /** nombre, apellidos, dni, direccion, telefono, email, username - * (id,nombre, apellidos, dni, direccion, telefono, email, usuar) - */ + /* nombre, apellidos, dni, direccion, telefono, email, username + (id,nombre, apellidos, dni, direccion, telefono, email, usuar)*/ + private static final long serialVersionUID = 1L; @NotBlank @@ -89,11 +89,11 @@ public class Usuario extends BaseEntity{ this.email = email; } - public User getUser() { + public User getUsuar() { return usuar; } - public void setUser(User username) { + public void setUsuar(User username) { this.usuar = username; } diff --git a/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java b/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java index d895c5916..1dd0a9296 100644 --- a/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/NuOfferRepository.java @@ -2,7 +2,6 @@ package org.springframework.cheapy.repository; import java.util.List; -import org.springframework.cheapy.model.FoodOffer; import org.springframework.cheapy.model.NuOffer; import org.springframework.cheapy.model.StatusOffer; import org.springframework.data.repository.Repository; diff --git a/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java b/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java new file mode 100644 index 000000000..a472b2f17 --- /dev/null +++ b/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java @@ -0,0 +1,18 @@ +package org.springframework.cheapy.repository; + +import java.util.List; + +import org.springframework.cheapy.model.Usuario; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.Repository; +import org.springframework.transaction.annotation.Transactional; + +public interface UsuarioRepository extends Repository { + + @Query("SELECT usuario FROM Usuario usuario WHERE username =:username") + @Transactional(readOnly = true) + Usuario findByUsername(String username); + + void save(Usuario usuario); + +} diff --git a/src/main/java/org/springframework/cheapy/service/UsuarioService.java b/src/main/java/org/springframework/cheapy/service/UsuarioService.java new file mode 100644 index 000000000..9fb6002a8 --- /dev/null +++ b/src/main/java/org/springframework/cheapy/service/UsuarioService.java @@ -0,0 +1,35 @@ + +package org.springframework.cheapy.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cheapy.model.Usuario; +import org.springframework.cheapy.repository.UsuarioRepository; +import org.springframework.dao.DataAccessException; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class UsuarioService { + + private UsuarioRepository usuarioRepository; + + + @Autowired + public UsuarioService(final UsuarioRepository usuarioRepository) { + this.usuarioRepository = usuarioRepository; + } + + @Transactional + public Usuario getCurrentUsuario() throws DataAccessException { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + String username = authentication.getName(); + return this.usuarioRepository.findByUsername(username); + } + + @Transactional + public void saveUsuario(final Usuario usuario) throws DataAccessException { + this.usuarioRepository.save(usuario); + } +} diff --git a/src/main/java/org/springframework/cheapy/web/UsuarioController.java b/src/main/java/org/springframework/cheapy/web/UsuarioController.java new file mode 100644 index 000000000..08d6185f8 --- /dev/null +++ b/src/main/java/org/springframework/cheapy/web/UsuarioController.java @@ -0,0 +1,86 @@ +package org.springframework.cheapy.web; + +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +import org.springframework.beans.BeanUtils; +import org.springframework.cheapy.model.SpeedOffer; +import org.springframework.cheapy.model.StatusOffer; +import org.springframework.cheapy.model.Usuario; +import org.springframework.cheapy.service.UsuarioService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; + +@Controller +public class UsuarioController { + + private static final String VIEWS_USUARIO_CREATE_OR_UPDATE_FORM = "usuarios/createOrUpdateUsuariosForm"; + + private final UsuarioService usuarioService; + + public UsuarioController(final UsuarioService usuarioService) { + this.usuarioService = usuarioService; + } + + @GetMapping("/usuarios/show") + public String processShowForm(Map model) { + Usuario usuario = this.usuarioService.getCurrentUsuario(); + model.put("usuario", usuario); + return "usuarios/usuariosShow"; + } + + @GetMapping(value = "/usuarios/edit") + public String updateUsuario(final ModelMap model, HttpServletRequest request) { + Usuario usuario = this.usuarioService.getCurrentUsuario(); + model.addAttribute("usuario", usuario); + return UsuarioController.VIEWS_USUARIO_CREATE_OR_UPDATE_FORM; + } + + @PostMapping(value = "/usuarios/edit") + public String updateUsuario(@Valid final Usuario usuarioEdit, final BindingResult result, + final ModelMap model, HttpServletRequest request) { + + Usuario usuario = this.usuarioService.getCurrentUsuario(); + BeanUtils.copyProperties(usuario, usuarioEdit, "nombre", "apellidos", "dni", "direccion", "telefono", "usuar"); + usuarioEdit.getUsuar().setUsername(usuario.getNombre()); + usuarioEdit.getUsuar().setEnabled(true); + this.usuarioService.saveUsuario(usuarioEdit); + return "redirect:/usuarios/show"; + } + + @GetMapping(value = "/usuarios/disable") + public String disableUsuario(final ModelMap model) { + + Usuario usuario = this.usuarioService.getCurrentUsuario(); + model.put("usuario", usuario); + return "usuarios/usuariosDisable"; + } + + @PostMapping(value = "/usuarios/disable") + public String disableUsuarioForm(final ModelMap model, final HttpServletRequest request) { + + Usuario usuario = this.usuarioService.getCurrentUsuario(); + usuario.getUsuar().setEnabled(false); + this.usuarioService.saveUsuario(usuario); + + try { + + request.logout(); + + } catch (ServletException e) { + + e.printStackTrace(); + + } + + return "redirect:/login"; + + } +} diff --git a/src/main/resources/db/mysql/data.sql b/src/main/resources/db/mysql/data.sql index c279eadf3..5f2794626 100644 --- a/src/main/resources/db/mysql/data.sql +++ b/src/main/resources/db/mysql/data.sql @@ -24,10 +24,10 @@ INSERT INTO authorities VALUES ('lolo','usuario'); INSERT INTO users (dtype,username,password,enabled) VALUES ('User','pepe','pepe', TRUE ); INSERT INTO authorities VALUES ('pepe','usuario'); -INSERT INTO usuarios VALUES (1, 'admin', 'admin', 'admin', 'C/admin', '000000000', 'admin@gmail.com','admin'); -INSERT INTO usuarios VALUES (2, 'Paco', 'Naranjo', '21154416G', 'C/Esperanza', '666973647', 'Paco@gmail.com','paco'); -INSERT INTO usuarios VALUES (3, 'Lolo', 'Lopez', '25486596L', 'C/Macarena', '690670547' ,'Lolo@gmail.com','lolo'); -INSERT INTO usuarios VALUES (4, 'Pepe', 'Lopez', '12456776V', 'C/Macarena', '690670547', 'Pepe@gmail.com','pepe'); +INSERT INTO usuarios (id, nombre, apellidos, dni, direccion, telefono, email, username) VALUES (1, 'admin', 'admin', 'admin', 'C/admin', '000000000', 'admin@gmail.com','admin'); +INSERT INTO usuarios (id, nombre, apellidos, dni, direccion, telefono, email, username) VALUES (2, 'Paco', 'Naranjo', '21154416G', 'C/Esperanza', '666973647', 'Paco@gmail.com','paco'); +INSERT INTO usuarios (id, nombre, apellidos, dni, direccion, telefono, email, username) VALUES (3, 'Lolo', 'Lopez', '25486596L', 'C/Macarena', '690670547' ,'Lolo@gmail.com','lolo'); +INSERT INTO usuarios (id, nombre, apellidos, dni, direccion, telefono, email, username) VALUES (4, 'Pepe', 'Lopez', '12456776V', 'C/Macarena', '690670547', 'Pepe@gmail.com','pepe'); INSERT INTO clients (id, name, email, address, init, finish, telephone, description, code, food, username) VALUES (1,'bar manoli','manoli@gmail.com','C/Betis','10:00','22:00','608726190', 'description 1', 'code1', 'ESPAÑOLA','manoli'); INSERT INTO clients (id, name, email, address, init, finish, telephone, description, code, food, username) VALUES (2,'bar david','david@gmail.com','C/Sevilla','09:30','22:00','608726190', 'description 2', 'code2', 'americana','david'); diff --git a/src/main/webapp/WEB-INF/jsp/usuarios/createOrUpdateUsuariosForm.jsp b/src/main/webapp/WEB-INF/jsp/usuarios/createOrUpdateUsuariosForm.jsp new file mode 100644 index 000000000..e63363513 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/usuarios/createOrUpdateUsuariosForm.jsp @@ -0,0 +1,45 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> + + + +

+ +

+ + +
+ + + + + + + +
+
+
+
+ + + + + + + + +
+
+
+
+ +
diff --git a/src/main/webapp/WEB-INF/jsp/usuarios/usuariosDisable.jsp b/src/main/webapp/WEB-INF/jsp/usuarios/usuariosDisable.jsp new file mode 100644 index 000000000..a728c3f55 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/usuarios/usuariosDisable.jsp @@ -0,0 +1,26 @@ +<%@ page session="false" trimDirectiveWhitespaces="true"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> + + + + +

¿Está seguro de que quiere eliminar su cuenta?

+ + + +
+ + +
+
+ + +
+
diff --git a/src/main/webapp/WEB-INF/jsp/usuarios/usuariosShow.jsp b/src/main/webapp/WEB-INF/jsp/usuarios/usuariosShow.jsp new file mode 100644 index 000000000..4e5e6b962 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/usuarios/usuariosShow.jsp @@ -0,0 +1,62 @@ +<%@ page session="false" trimDirectiveWhitespaces="true" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="cheapy" tagdir="/WEB-INF/tags" %> +<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+ + + + + +
+
+
+ + +
diff --git a/src/main/webapp/WEB-INF/jsp/welcome.jsp b/src/main/webapp/WEB-INF/jsp/welcome.jsp index c5bc812e3..43be3e422 100644 --- a/src/main/webapp/WEB-INF/jsp/welcome.jsp +++ b/src/main/webapp/WEB-INF/jsp/welcome.jsp @@ -38,6 +38,15 @@ + + + + +
+ +