From ee4b48354d1705eb89b3618f3d37e250857e2713 Mon Sep 17 00:00:00 2001 From: jon ander Date: Wed, 2 Apr 2025 20:32:57 +0200 Subject: [PATCH] Fix user management routes, enhance user management page with a table, and add CSS for styling --- .../controllers/UserController.java | 15 ++++- .../services/UserDetailsServiceImpl.java | 2 +- .../services/UserService.java | 7 ++- .../{ => db}/Inventario_bueno_v1.sql | 0 src/main/resources/db/Modelo_Inventario.mwb | Bin 0 -> 13889 bytes src/main/resources/static/css/table_style.css | 54 ++++++++++++++++++ src/main/resources/templates/management.html | 4 +- .../resources/templates/user_management.html | 42 +++++++------- 8 files changed, 98 insertions(+), 26 deletions(-) rename src/main/resources/{ => db}/Inventario_bueno_v1.sql (100%) create mode 100644 src/main/resources/db/Modelo_Inventario.mwb create mode 100644 src/main/resources/static/css/table_style.css diff --git a/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java b/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java index 3982f37..e4646ad 100644 --- a/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java +++ b/src/main/java/com/ieslamar/GestionInventario/controllers/UserController.java @@ -1,16 +1,20 @@ package com.ieslamar.GestionInventario.controllers; +import com.ieslamar.GestionInventario.entities.User; import com.ieslamar.GestionInventario.services.UserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; +import java.util.List; @Controller public class UserController { + private final UserService userService; public UserController(UserService userService) { @@ -42,8 +46,15 @@ public class UserController { public String managementPage(){ return "management"; } - @GetMapping("/user_managemment") - public String userManagementPage(){ +// @GetMapping("/user_management") +// public String userManagementPage(){ +// return "user_management"; +// } + + @GetMapping("/user_management") + public String listUsers(Model model) { + List users = userService.getAllUsers(); + model.addAttribute("users", users); return "user_management"; } diff --git a/src/main/java/com/ieslamar/GestionInventario/services/UserDetailsServiceImpl.java b/src/main/java/com/ieslamar/GestionInventario/services/UserDetailsServiceImpl.java index 13431c5..1c10255 100644 --- a/src/main/java/com/ieslamar/GestionInventario/services/UserDetailsServiceImpl.java +++ b/src/main/java/com/ieslamar/GestionInventario/services/UserDetailsServiceImpl.java @@ -9,6 +9,7 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.stereotype.Service; import java.util.Collections; +import java.util.List; @Service public class UserDetailsServiceImpl implements UserDetailsService { @@ -23,7 +24,6 @@ public class UserDetailsServiceImpl implements UserDetailsService { public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User user = userRepository.findByNombre(username) .orElseThrow(() -> new UsernameNotFoundException("Usuario no encontrado")); - return new org.springframework.security.core.userdetails.User( user.getNombre(), user.getPassword(), diff --git a/src/main/java/com/ieslamar/GestionInventario/services/UserService.java b/src/main/java/com/ieslamar/GestionInventario/services/UserService.java index 2ca58e9..f49529f 100644 --- a/src/main/java/com/ieslamar/GestionInventario/services/UserService.java +++ b/src/main/java/com/ieslamar/GestionInventario/services/UserService.java @@ -3,12 +3,14 @@ package com.ieslamar.GestionInventario.services; import com.ieslamar.GestionInventario.entities.Role; import com.ieslamar.GestionInventario.entities.User; import com.ieslamar.GestionInventario.repos.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class UserService { - private final UserRepository userRepository; private final PasswordEncoder passwordEncoder; @@ -25,4 +27,7 @@ public class UserService { user.setMail(mail); userRepository.save(user); } + public List getAllUsers() { + return userRepository.findAll(); + } } diff --git a/src/main/resources/Inventario_bueno_v1.sql b/src/main/resources/db/Inventario_bueno_v1.sql similarity index 100% rename from src/main/resources/Inventario_bueno_v1.sql rename to src/main/resources/db/Inventario_bueno_v1.sql diff --git a/src/main/resources/db/Modelo_Inventario.mwb b/src/main/resources/db/Modelo_Inventario.mwb new file mode 100644 index 0000000000000000000000000000000000000000..c2c05d69f12d25a462dce1c1c6ca9b95aa95bc13 GIT binary patch literal 13889 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/css/table_style.css b/src/main/resources/static/css/table_style.css new file mode 100644 index 0000000..3bb191d --- /dev/null +++ b/src/main/resources/static/css/table_style.css @@ -0,0 +1,54 @@ +body { + font-family: Arial, sans-serif; + display: flex; + flex-direction: column; + align-items: center; + margin: 0; + padding: 20px; + } + .container { + width: 80%; + max-width: 800px; + border: 1px solid #ccc; + padding: 10px; + } + .header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 10px; + background-color: #f4f4f4; + } + table { + width: 100%; + border-collapse: collapse; + } + thead { + background-color: #ddd; + } + th, td { + padding: 10px; + border: 1px solid #ccc; + text-align: left; + } + .footer { + padding: 10px; + background-color: #f4f4f4; + text-align: right; + } + .id-column { + width: 50px; /* Columna ID más estrecha */ + } + .email-column { + width: 250px; /* Columna Email más ancha */ + } + .table-container { + height: 400px; /* Altura fija del contenedor */ + overflow-y: auto; /* Scroll vertical */ + border: 1px solid #ddd; /* Borde opcional */ + } + .action-buttons { + display: flex; + justify-content: center; + gap: 10px; /* Espacio entre botones */ + } diff --git a/src/main/resources/templates/management.html b/src/main/resources/templates/management.html index cd5100e..c27ae51 100644 --- a/src/main/resources/templates/management.html +++ b/src/main/resources/templates/management.html @@ -7,11 +7,11 @@