From 47232540b9ac4fb296e9db37b24aba1998f1008e Mon Sep 17 00:00:00 2001 From: Thiloparn <48439369+Thiloparn@users.noreply.github.com> Date: Fri, 9 Apr 2021 18:22:14 +0200 Subject: [PATCH] Ver, modificar y borrar de admin sobre usuarios funcional --- .../cheapy/model/Administrator.java | 16 ++++- .../cheapy/repository/UsuarioRepository.java | 4 ++ .../cheapy/service/UsuarioService.java | 12 ++++ .../cheapy/web/AdministratorController.java | 68 +++++++++++++++++++ .../cheapy/web/UsuarioController.java | 2 +- src/main/resources/db/mysql/data.sql | 15 ++-- ...Form.jsp => createOrUpdateUsuarioForm.jsp} | 0 .../WEB-INF/jsp/usuarios/usuariosList.jsp | 57 ++++++++++++++++ .../WEB-INF/jsp/usuarios/usuariosShow.jsp | 12 ++++ src/main/webapp/WEB-INF/jsp/welcome.jsp | 8 +++ 10 files changed, 185 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/springframework/cheapy/web/AdministratorController.java rename src/main/webapp/WEB-INF/jsp/usuarios/{createOrUpdateUsuariosForm.jsp => createOrUpdateUsuarioForm.jsp} (100%) create mode 100644 src/main/webapp/WEB-INF/jsp/usuarios/usuariosList.jsp diff --git a/src/main/java/org/springframework/cheapy/model/Administrator.java b/src/main/java/org/springframework/cheapy/model/Administrator.java index 44a3ffdf6..0eba5746d 100644 --- a/src/main/java/org/springframework/cheapy/model/Administrator.java +++ b/src/main/java/org/springframework/cheapy/model/Administrator.java @@ -1,15 +1,29 @@ package org.springframework.cheapy.model; +import javax.persistence.CascadeType; import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; import javax.persistence.Table; @Entity @Table(name = "administrators") -public class Administrator extends User{ +public class Administrator extends BaseEntity{ /** * */ private static final long serialVersionUID = 1L; + @OneToOne(cascade = CascadeType.ALL) + @JoinColumn(name = "username", referencedColumnName = "username") + private User usuar; + + public User getUsuar() { + return usuar; + } + + public void setUsuar(User usuar) { + this.usuar = usuar; + } } diff --git a/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java b/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java index a472b2f17..87b11c04d 100644 --- a/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java +++ b/src/main/java/org/springframework/cheapy/repository/UsuarioRepository.java @@ -13,6 +13,10 @@ public interface UsuarioRepository extends Repository { @Transactional(readOnly = true) Usuario findByUsername(String username); + @Query("SELECT usuario FROM Usuario usuario") + @Transactional(readOnly = true) + List findAllUsuario(); + 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 index 9fb6002a8..5c994342d 100644 --- a/src/main/java/org/springframework/cheapy/service/UsuarioService.java +++ b/src/main/java/org/springframework/cheapy/service/UsuarioService.java @@ -1,6 +1,8 @@ package org.springframework.cheapy.service; +import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cheapy.model.Usuario; import org.springframework.cheapy.repository.UsuarioRepository; @@ -27,6 +29,16 @@ public class UsuarioService { String username = authentication.getName(); return this.usuarioRepository.findByUsername(username); } + + @Transactional + public Usuario findByUsername(String username) throws DataAccessException { + return this.usuarioRepository.findByUsername(username); + } + + @Transactional + public List findAllUsuario() throws DataAccessException { + return this.usuarioRepository.findAllUsuario(); + } @Transactional public void saveUsuario(final Usuario usuario) throws DataAccessException { diff --git a/src/main/java/org/springframework/cheapy/web/AdministratorController.java b/src/main/java/org/springframework/cheapy/web/AdministratorController.java new file mode 100644 index 000000000..f1c9b77dc --- /dev/null +++ b/src/main/java/org/springframework/cheapy/web/AdministratorController.java @@ -0,0 +1,68 @@ +package org.springframework.cheapy.web; + +import java.time.format.DateTimeFormatter; +import java.util.List; +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.FoodOffer; +import org.springframework.cheapy.model.NuOffer; +import org.springframework.cheapy.model.SpeedOffer; +import org.springframework.cheapy.model.StatusOffer; +import org.springframework.cheapy.model.TimeOffer; +import org.springframework.cheapy.model.Usuario; +import org.springframework.cheapy.service.ClientService; +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 AdministratorController { + + private static final String VIEWS_USUARIO_CREATE_OR_UPDATE_FORM = "usuarios/createOrUpdateUsuarioForm"; + + private final UsuarioService usuarioService; + + public AdministratorController(final UsuarioService usuarioService, ClientService clientService) { + this.usuarioService = usuarioService; + } + + @GetMapping("/administrators/usuarios") + public String processFindUsuariosForm(Map model) { + List usuarioLs = this.usuarioService.findAllUsuario(); + model.put("usuarioLs", usuarioLs); + return "usuarios/usuariosList"; + } + + @GetMapping("/administrators/usuarios/{username}") + public String processShowForm(@PathVariable("username") String username, Map model) { + Usuario usuario = this.usuarioService.findByUsername(username); + model.put("usuario", usuario); + return "usuarios/usuariosShow"; + } + + @GetMapping(value = "/administrators/usuarios/{username}/disable") + public String disableUsuario(@PathVariable("username") final String username, final ModelMap model) { + + Usuario usuario = this.usuarioService.findByUsername(username); + model.put("usuario", usuario); + return "usuarios/usuariosDisable"; + } + + @PostMapping(value = "/administrators/usuarios/{username}/disable") + public String disableUsuarioForm(@PathVariable("username") final String username, final ModelMap model, final HttpServletRequest request) { + + Usuario usuario = this.usuarioService.findByUsername(username); + usuario.getUsuar().setEnabled(false); + this.usuarioService.saveUsuario(usuario); + return "redirect:/administrators/usuarios"; + } +} diff --git a/src/main/java/org/springframework/cheapy/web/UsuarioController.java b/src/main/java/org/springframework/cheapy/web/UsuarioController.java index 08d6185f8..4fffd6ff6 100644 --- a/src/main/java/org/springframework/cheapy/web/UsuarioController.java +++ b/src/main/java/org/springframework/cheapy/web/UsuarioController.java @@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.PostMapping; @Controller public class UsuarioController { - private static final String VIEWS_USUARIO_CREATE_OR_UPDATE_FORM = "usuarios/createOrUpdateUsuariosForm"; + private static final String VIEWS_USUARIO_CREATE_OR_UPDATE_FORM = "usuarios/createOrUpdateUsuarioForm"; private final UsuarioService usuarioService; diff --git a/src/main/resources/db/mysql/data.sql b/src/main/resources/db/mysql/data.sql index 5f2794626..dae325921 100644 --- a/src/main/resources/db/mysql/data.sql +++ b/src/main/resources/db/mysql/data.sql @@ -9,22 +9,23 @@ INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', ' INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435'); INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487'); -INSERT INTO users (dtype,username,password,enabled) VALUES ('User','admin','admin', TRUE ); +INSERT INTO users (username,password,enabled) VALUES ('admin','admin', TRUE ); INSERT INTO authorities VALUES ('admin','admin'); -INSERT INTO users (dtype,username,password,enabled) VALUES ('User','manoli','manoli', TRUE ); +INSERT INTO users (username,password,enabled) VALUES ('manoli','manoli', TRUE ); INSERT INTO authorities VALUES ('manoli','client'); -INSERT INTO users (dtype,username,password,enabled) VALUES ('User','david','david', TRUE ); +INSERT INTO users (username,password,enabled) VALUES ('david','david', TRUE ); INSERT INTO authorities VALUES ('david','client'); -INSERT INTO users (dtype,username,password,enabled) VALUES ('User','paco','paco', TRUE ); +INSERT INTO users (username,password,enabled) VALUES ('paco','paco', TRUE ); INSERT INTO authorities VALUES ('paco','usuario'); -INSERT INTO users (dtype,username,password,enabled) VALUES ('User','lolo','lolo', TRUE ); +INSERT INTO users (username,password,enabled) VALUES ('lolo','lolo', TRUE ); INSERT INTO authorities VALUES ('lolo','usuario'); -INSERT INTO users (dtype,username,password,enabled) VALUES ('User','pepe','pepe', TRUE ); +INSERT INTO users (username,password,enabled) VALUES ('pepe','pepe', TRUE ); INSERT INTO authorities VALUES ('pepe','usuario'); -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 administrators (id, username) VALUES (1, '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'); diff --git a/src/main/webapp/WEB-INF/jsp/usuarios/createOrUpdateUsuariosForm.jsp b/src/main/webapp/WEB-INF/jsp/usuarios/createOrUpdateUsuarioForm.jsp similarity index 100% rename from src/main/webapp/WEB-INF/jsp/usuarios/createOrUpdateUsuariosForm.jsp rename to src/main/webapp/WEB-INF/jsp/usuarios/createOrUpdateUsuarioForm.jsp diff --git a/src/main/webapp/WEB-INF/jsp/usuarios/usuariosList.jsp b/src/main/webapp/WEB-INF/jsp/usuarios/usuariosList.jsp new file mode 100644 index 000000000..297978c7e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/usuarios/usuariosList.jsp @@ -0,0 +1,57 @@ +<%@ 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" %> + + + +

+ + +

No hay ningun usuario.

+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + +
+ +
+
+
+
diff --git a/src/main/webapp/WEB-INF/jsp/usuarios/usuariosShow.jsp b/src/main/webapp/WEB-INF/jsp/usuarios/usuariosShow.jsp index 4e5e6b962..2feff3623 100644 --- a/src/main/webapp/WEB-INF/jsp/usuarios/usuariosShow.jsp +++ b/src/main/webapp/WEB-INF/jsp/usuarios/usuariosShow.jsp @@ -56,6 +56,18 @@ Desactivar usuario + + +
+ + + + + +
+
diff --git a/src/main/webapp/WEB-INF/jsp/welcome.jsp b/src/main/webapp/WEB-INF/jsp/welcome.jsp index 37142a352..39548df42 100644 --- a/src/main/webapp/WEB-INF/jsp/welcome.jsp +++ b/src/main/webapp/WEB-INF/jsp/welcome.jsp @@ -43,6 +43,14 @@ + + +
+ +
+