From 94183d4ab9a77b148942639e760dd5c605e5e681 Mon Sep 17 00:00:00 2001 From: vicsash Date: Wed, 15 May 2024 20:52:17 +0200 Subject: [PATCH] Modales para buscadores, en alumno aun faltan varias cosas y de administrador esta completo. Creacion de controladores. Ediciones a buscador de alumno para que no era posible mirar la lista. Control en borar usuarios como adminsitrador para cuando borran y es un usuario normal tambien borra el alumno correspondiente de tabla de alumnos. --- .../configuration/SecurityConfig.java | 22 +- .../controllers/UserController.java | 191 +++++++++++++++ .../modelControllers/EmpressaController.java | 5 +- .../empresas/AlumnoRepository.java | 2 + .../login/AutoridadesRepository.java | 5 +- .../servicios/empresa/AlumnoService.java | 7 +- .../servicios/empresa/CicloService.java | 2 +- .../servicios/empresa/ContactosService.java | 2 +- .../servicios/empresa/EmpresaService.java | 2 +- .../servicios/empresa/FamiliaService.java | 2 +- .../servicios/empresa/OfertaService.java | 2 +- .../servicios/empresa/SectorService.java | 2 +- .../servicios/empresa/SkillService.java | 2 +- .../servicios/empresa/SucursalService.java | 2 +- .../{ => empresas}/IAlumno.java | 4 +- .../{ => empresas}/ICiclos.java | 2 +- .../{ => empresas}/IContactos.java | 2 +- .../{ => empresas}/IEmpresa.java | 2 +- .../{ => empresas}/IFamilia.java | 2 +- .../{ => empresas}/IOferta.java | 2 +- .../{ => empresas}/ISector.java | 2 +- .../implemetations/{ => empresas}/ISkill.java | 2 +- .../{ => empresas}/ISucursal.java | 2 +- .../implemetations/login/IAutoridad.java | 14 ++ .../servicios/implemetations/login/IRol.java | 16 ++ .../implemetations/login/IUsuario.java | 33 +++ .../servicios/user/AutoridadService.java | 32 +++ .../servicios/user/RolAutoService.java | 24 -- .../servicios/user/RolService.java | 31 +++ .../servicios/user/UsuarioService.java | 63 +++-- .../templates/admin/usuario/create.html | 117 +++------ .../templates/admin/usuario/delete.html | 91 +++++++ .../templates/admin/usuario/update.html | 137 +++++------ .../resources/templates/buscador_admin.html | 78 +++++- .../resources/templates/buscador_alumno.html | 229 +++++++++++++++++- .../templates/user/alumno/update.html | 203 ---------------- .../user/{alumno/create.html => update.html} | 29 +-- 37 files changed, 905 insertions(+), 460 deletions(-) create mode 100644 src/main/java/com/example/proyectofinal/controllers/UserController.java rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/IAlumno.java (87%) rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/ICiclos.java (92%) rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/IContactos.java (92%) rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/IEmpresa.java (93%) rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/IFamilia.java (84%) rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/IOferta.java (92%) rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/ISector.java (86%) rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/ISkill.java (86%) rename src/main/java/com/example/proyectofinal/servicios/implemetations/{ => empresas}/ISucursal.java (92%) create mode 100644 src/main/java/com/example/proyectofinal/servicios/implemetations/login/IAutoridad.java create mode 100644 src/main/java/com/example/proyectofinal/servicios/implemetations/login/IRol.java create mode 100644 src/main/java/com/example/proyectofinal/servicios/implemetations/login/IUsuario.java create mode 100644 src/main/java/com/example/proyectofinal/servicios/user/AutoridadService.java delete mode 100644 src/main/java/com/example/proyectofinal/servicios/user/RolAutoService.java create mode 100644 src/main/java/com/example/proyectofinal/servicios/user/RolService.java create mode 100644 src/main/resources/templates/admin/usuario/delete.html delete mode 100644 src/main/resources/templates/user/alumno/update.html rename src/main/resources/templates/user/{alumno/create.html => update.html} (89%) diff --git a/src/main/java/com/example/proyectofinal/configuration/SecurityConfig.java b/src/main/java/com/example/proyectofinal/configuration/SecurityConfig.java index 7c77122..25aaf94 100644 --- a/src/main/java/com/example/proyectofinal/configuration/SecurityConfig.java +++ b/src/main/java/com/example/proyectofinal/configuration/SecurityConfig.java @@ -1,6 +1,9 @@ package com.example.proyectofinal.configuration; import com.example.proyectofinal.component.CustomAuth; +import com.example.proyectofinal.models.login.Rol; +import com.example.proyectofinal.repositories.login.RolRepository; +import com.example.proyectofinal.repositories.login.UserRepository; import com.example.proyectofinal.servicios.user.UsuarioService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -18,6 +21,9 @@ public class SecurityConfig{ private JdbcTemplate jdbcTemplate; @Autowired private UsuarioService usuarioService; + @Autowired + private RolRepository rolService; + @Autowired private CustomAuth customAuth; @@ -89,7 +95,21 @@ public class SecurityConfig{ // Manually insert authorities for 'ALU' role jdbcTemplate.update("INSERT INTO rol_autoridad (fk_rol, fk_autoridad) VALUES (2, 1)"); // 'ALU' - 'READ' jdbcTemplate.update("INSERT INTO rol_autoridad (fk_rol, fk_autoridad) VALUES (2, 2)"); // 'ALU' - 'EDIT' + createDefaultRolesAuthoritiesAndAdmin(); + } + } + public void createDefaultRolesAuthoritiesAndAdmin() { + try { + if (usuarioService.findByNombreUsuario("admin").isEmpty()) { + Rol adminRole = rolService.findByName("ADMIN"); + usuarioService.createUsuario("admin", "admin", + "admin@example.com", + "1234", + false, adminRole.getId()); + } + } catch (Exception e) { + System.out.println("Exepcion en crearUsuarioPorDefecto: " + e.getMessage()); + e.printStackTrace(); } } - } diff --git a/src/main/java/com/example/proyectofinal/controllers/UserController.java b/src/main/java/com/example/proyectofinal/controllers/UserController.java new file mode 100644 index 0000000..71378d6 --- /dev/null +++ b/src/main/java/com/example/proyectofinal/controllers/UserController.java @@ -0,0 +1,191 @@ +package com.example.proyectofinal.controllers; + +import com.example.proyectofinal.models.empresas.Alumno; +import com.example.proyectofinal.models.empresas.Ciclo; +import com.example.proyectofinal.models.empresas.Skill; +import com.example.proyectofinal.models.login.Usuario; +import com.example.proyectofinal.servicios.empresa.AlumnoService; +import com.example.proyectofinal.servicios.empresa.CicloService; +import com.example.proyectofinal.servicios.empresa.SkillService; +import com.example.proyectofinal.servicios.user.UsuarioService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.server.ResponseStatusException; + +import java.util.Collection; +import java.util.List; +import java.util.Set; + +@Controller +public class UserController { + + @Autowired + private UsuarioService usuarioService; + + @Autowired + private PasswordEncoder passwordEncoder; + + @Autowired + private AlumnoService alumnoService; + + @Autowired + private CicloService cicloService; + @Autowired + private SkillService skillService; + + @GetMapping("/admin/alta_admin_nuevo") + public String showCreateFormAdmin(Model model, Authentication authentication) { + Collection authorities = authentication.getAuthorities(); + boolean isAdmin = authorities.stream() + .anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN")); + if (!isAdmin) { + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página"); + } + + model.addAttribute("usuario", new Usuario()); // Add this line + + return "admin/usuario/create"; + } + + @PostMapping("/admin/alta_admin_nuevo") + public String saveNewAdmin(@ModelAttribute Usuario usuario, Authentication authentication) { + Collection authorities = authentication.getAuthorities(); + boolean isAdmin = authorities.stream() + .anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN")); + if (!isAdmin) { + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página"); + } + usuario.setRol(usuarioService.getRolById(1)); + + if(usuarioService.getUserByLogInName(usuario.getNombreLogIn()) == null){ + usuarioService.createUsuario(usuario.getNombreUsuario(), usuario.getNombreLogIn(), usuario.getEmail(), usuario.getPassword(), usuario.isLogedIn(), usuario.getRol().getId()); + return "redirect:/buscador?userCreated=true"; + }else { + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Este usuario ya existe"); + } + + + } + + @GetMapping("/api/currentUser") + public ResponseEntity getCurrentUser(Authentication authentication) { + String username = authentication.getName(); + Usuario usuario = usuarioService.findByLogInName(username); + return ResponseEntity.ok(usuario); + } + + @GetMapping("/admin/editar_usuario") + public String showUpdateFormAdmin(Model model, Authentication authentication) { + Collection authorities = authentication.getAuthorities(); + boolean isAdmin = authorities.stream() + .anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN")); + if (!isAdmin) { + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página"); + } + List users = usuarioService.findAll(); + model.addAttribute("users", users); + model.addAttribute("usuario", new Usuario()); + return "admin/usuario/update"; + } + + @PostMapping("/admin/update_usuario") + public String updateUser(@ModelAttribute Usuario usuario, Authentication authentication) { + Collection authorities = authentication.getAuthorities(); + boolean isAdmin = authorities.stream() + .anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN")); + if (!isAdmin) { + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página"); + } + Usuario existingUser = usuarioService.findUserById(usuario.getId()); + if (existingUser == null) { + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Este usuario no existe"); + } + String password = existingUser.getPassword(); + existingUser.setPassword(passwordEncoder.encode(password)); + usuarioService.saveUser(usuario); + return "redirect:/buscador?userUpdated=true"; + } + + + @GetMapping("/admin/user/{id}") + public ResponseEntity getUser(@PathVariable Long id) { + Usuario usuario = usuarioService.findUserById(id); + return ResponseEntity.ok(usuario); + } + + @GetMapping("/admin/delete_usuario") + public String showDeleteFormAdmin(Model model, Authentication authentication) { + Collection authorities = authentication.getAuthorities(); + boolean isAdmin = authorities.stream() + .anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN")); + if (!isAdmin) { + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página"); + } + List users = usuarioService.findAll(); + model.addAttribute("users", users); + model.addAttribute("usuario", new Usuario()); + return "admin/usuario/delete"; + } + + @GetMapping("/admin/delete_usuario/{id}") + public String deleteUser(@PathVariable Long id, Authentication authentication) { + Collection authorities = authentication.getAuthorities(); + boolean isAdmin = authorities.stream() + .anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ADMIN")); + if (!isAdmin) { + throw new ResponseStatusException(HttpStatus.FORBIDDEN, "No tienes permisos para acceder a esta página"); + } + Usuario existingUser = usuarioService.findUserById(id); + if (existingUser == null) { + throw new ResponseStatusException(HttpStatus.BAD_REQUEST, "Este usuario no existe"); + } + Usuario user = usuarioService.findUserById(id); + if(user.getRol().getId() == 2){ + Alumno alumno = alumnoService.findByEmail(user.getEmail()); + System.out.println("TEST DELETING ALUMNO WITH ID: " + alumno.getId()+" AND EMAIL: "+alumno.getCorreo()+" AND NAME: "+alumno.getNombre()); + alumnoService.deleteById(alumno.getId()); + } + usuarioService.deleteUser(id); + return "redirect:/buscador?userDeleted=true"; + } + + + + @GetMapping("/usuario/usuario_update_form") + public String showUpdateForm(Model model, Authentication authentication) { + String username = authentication.getName(); + Usuario usuario = usuarioService.findByLogInName(username); + Alumno alumno = alumnoService.findByEmail(usuario.getEmail()); + List ciclos = cicloService.findAll(); + List skills = skillService.findAll(); + model.addAttribute("skills", skills); + model.addAttribute("alumno", alumno); + model.addAttribute("ciclos", ciclos); + return "admin/alumno/update"; + } + + + @PostMapping("/usuario/update") + public ResponseEntity updateAlumno(Alumno alumno, @RequestParam("ciclo") Long ciclo, @RequestParam("skills") List skills){ + try{ + Ciclo cicloEntity = cicloService.findById(ciclo); + Set skillEntities = skillService.findAllByIds(skills); + alumno.setCiclo(cicloEntity); + alumno.setSkills(skillEntities); + alumnoService.save(alumno); + return new ResponseEntity<>("El alumno fue actualizado con exito", HttpStatus.OK); + }catch (Exception e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + + +} diff --git a/src/main/java/com/example/proyectofinal/controllers/modelControllers/EmpressaController.java b/src/main/java/com/example/proyectofinal/controllers/modelControllers/EmpressaController.java index cd170ce..72f3c36 100644 --- a/src/main/java/com/example/proyectofinal/controllers/modelControllers/EmpressaController.java +++ b/src/main/java/com/example/proyectofinal/controllers/modelControllers/EmpressaController.java @@ -4,9 +4,8 @@ import com.example.proyectofinal.models.empresas.Contacto; import com.example.proyectofinal.models.empresas.Empresa; import com.example.proyectofinal.models.empresas.Sector; import com.example.proyectofinal.repositories.empresas.ContactoRepository; -import com.example.proyectofinal.servicios.implemetations.IEmpresa; -import com.example.proyectofinal.servicios.implemetations.ISector; -import jakarta.annotation.security.RolesAllowed; +import com.example.proyectofinal.servicios.implemetations.empresas.IEmpresa; +import com.example.proyectofinal.servicios.implemetations.empresas.ISector; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java b/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java index ee9cfef..4cc08b6 100644 --- a/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/empresas/AlumnoRepository.java @@ -87,5 +87,7 @@ public interface AlumnoRepository extends JpaRepository { @Query("SELECT a FROM Alumno a WHERE lower(a.dni) LIKE %:query%") ArrayList alumnosByDniCust(@Param("query") String query); + @Query("SELECT a FROM Alumno a WHERE lower(a.correo) LIKE %:query%") + Alumno findByCorreo(String query); } diff --git a/src/main/java/com/example/proyectofinal/repositories/login/AutoridadesRepository.java b/src/main/java/com/example/proyectofinal/repositories/login/AutoridadesRepository.java index c6f200d..34a17fc 100644 --- a/src/main/java/com/example/proyectofinal/repositories/login/AutoridadesRepository.java +++ b/src/main/java/com/example/proyectofinal/repositories/login/AutoridadesRepository.java @@ -8,10 +8,9 @@ import java.util.Collection; public interface AutoridadesRepository extends JpaRepository { - @Query("SELECT a FROM Autoridad a WHERE a.nombre = ?1") - Autoridad findByNombre(String read); - @Query(value = "SELECT COUNT(a.id) FROM autoridad a JOIN rol_autoridad ra ON a.id = ra.fk_autoridad WHERE ra.fk_rol = ?1", nativeQuery = true) int countAutoridadesByRolId(Long rolId); + @Query("Select a from Autoridad a where a.nombre = ?1") + Autoridad findByName(String name); } \ No newline at end of file diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/AlumnoService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/AlumnoService.java index e1b624a..b46ba2e 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/AlumnoService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/AlumnoService.java @@ -2,7 +2,7 @@ package com.example.proyectofinal.servicios.empresa; import com.example.proyectofinal.models.empresas.Alumno; import com.example.proyectofinal.repositories.empresas.AlumnoRepository; -import com.example.proyectofinal.servicios.implemetations.IAlumno; +import com.example.proyectofinal.servicios.implemetations.empresas.IAlumno; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.*; import org.springframework.stereotype.Service; @@ -162,4 +162,9 @@ public class AlumnoService implements IAlumno{ return listEmpPrime; } + @Override + public Alumno findByEmail(String email) { + return alumnoRepository.findByCorreo(email); + } + } diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/CicloService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/CicloService.java index 5ad43ad..fb69ed1 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/CicloService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/CicloService.java @@ -3,7 +3,7 @@ package com.example.proyectofinal.servicios.empresa; import com.example.proyectofinal.models.empresas.Ciclo; import com.example.proyectofinal.models.empresas.Familia; import com.example.proyectofinal.repositories.empresas.CicloRepository; -import com.example.proyectofinal.servicios.implemetations.ICiclos; +import com.example.proyectofinal.servicios.implemetations.empresas.ICiclos; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.*; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/ContactosService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/ContactosService.java index fac07c8..8bd306a 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/ContactosService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/ContactosService.java @@ -2,7 +2,7 @@ package com.example.proyectofinal.servicios.empresa; import com.example.proyectofinal.models.empresas.Contacto; import com.example.proyectofinal.models.empresas.Empresa; -import com.example.proyectofinal.servicios.implemetations.IContactos; +import com.example.proyectofinal.servicios.implemetations.empresas.IContactos; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.*; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/EmpresaService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/EmpresaService.java index 8d63520..5a1a376 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/EmpresaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/EmpresaService.java @@ -4,7 +4,7 @@ import com.example.proyectofinal.models.empresas.Oferta; import com.example.proyectofinal.models.empresas.Sucursal; import com.example.proyectofinal.repositories.empresas.EmpressaRepository; import com.example.proyectofinal.repositories.empresas.OfertaRepository; -import com.example.proyectofinal.servicios.implemetations.IEmpresa; +import com.example.proyectofinal.servicios.implemetations.empresas.IEmpresa; import org.springframework.data.domain.PageImpl; import org.springframework.transaction.annotation.Transactional; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/FamiliaService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/FamiliaService.java index 9e765f4..6f09d26 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/FamiliaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/FamiliaService.java @@ -2,7 +2,7 @@ package com.example.proyectofinal.servicios.empresa; import com.example.proyectofinal.models.empresas.Familia; import com.example.proyectofinal.repositories.empresas.FamiliaRepository; -import com.example.proyectofinal.servicios.implemetations.IFamilia; +import com.example.proyectofinal.servicios.implemetations.empresas.IFamilia; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/OfertaService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/OfertaService.java index 3b8a0a5..6212f5a 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/OfertaService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/OfertaService.java @@ -4,7 +4,7 @@ import com.example.proyectofinal.models.empresas.Oferta; import com.example.proyectofinal.models.empresas.Skill; import com.example.proyectofinal.models.empresas.Sucursal; import com.example.proyectofinal.repositories.empresas.OfertaRepository; -import com.example.proyectofinal.servicios.implemetations.IOferta; +import com.example.proyectofinal.servicios.implemetations.empresas.IOferta; import jakarta.persistence.EntityManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.*; diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/SectorService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/SectorService.java index 8323eb6..440acbe 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/SectorService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/SectorService.java @@ -4,7 +4,7 @@ import com.example.proyectofinal.models.empresas.Empresa; import com.example.proyectofinal.models.empresas.Sector; import com.example.proyectofinal.repositories.empresas.OfertaRepository; import com.example.proyectofinal.repositories.empresas.SectorRepository; -import com.example.proyectofinal.servicios.implemetations.ISector; +import com.example.proyectofinal.servicios.implemetations.empresas.ISector; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/SkillService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/SkillService.java index ede9122..b73484f 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/SkillService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/SkillService.java @@ -2,7 +2,7 @@ package com.example.proyectofinal.servicios.empresa; import com.example.proyectofinal.models.empresas.Skill; import com.example.proyectofinal.repositories.empresas.SkillRepository; -import com.example.proyectofinal.servicios.implemetations.ISkill; +import com.example.proyectofinal.servicios.implemetations.empresas.ISkill; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; diff --git a/src/main/java/com/example/proyectofinal/servicios/empresa/SucursalService.java b/src/main/java/com/example/proyectofinal/servicios/empresa/SucursalService.java index 9358adf..87c1302 100644 --- a/src/main/java/com/example/proyectofinal/servicios/empresa/SucursalService.java +++ b/src/main/java/com/example/proyectofinal/servicios/empresa/SucursalService.java @@ -6,7 +6,7 @@ import com.example.proyectofinal.models.empresas.Sucursal; import com.example.proyectofinal.repositories.empresas.OfertaRepository; import com.example.proyectofinal.repositories.empresas.SkillRepository; import com.example.proyectofinal.repositories.empresas.SucursalRepository; -import com.example.proyectofinal.servicios.implemetations.ISucursal; +import com.example.proyectofinal.servicios.implemetations.empresas.ISucursal; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.*; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IAlumno.java similarity index 87% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IAlumno.java index 47aa0a1..df89154 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IAlumno.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IAlumno.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Alumno; @@ -26,4 +26,6 @@ public interface IAlumno extends IPagination { Page getPage(int pageNum, int size, String sortField, String sortDir, String query, String secondaryOption); List searchCustom(String querySearchBar, String query, String secondaryOption); + + Alumno findByEmail(String email); } diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ICiclos.java similarity index 92% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ICiclos.java index 56281d7..627d911 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ICiclos.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ICiclos.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Ciclo; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IContactos.java similarity index 92% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IContactos.java index dbe02ae..b2a42b5 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IContactos.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IContactos.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Contacto; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IEmpresa.java similarity index 93% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IEmpresa.java index 62c2638..f5e4b78 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IEmpresa.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IEmpresa.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Empresa; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IFamilia.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IFamilia.java similarity index 84% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/IFamilia.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IFamilia.java index 48e0d54..37019bb 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IFamilia.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IFamilia.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Familia; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IOferta.java similarity index 92% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IOferta.java index deeb878..8971865 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/IOferta.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/IOferta.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Oferta; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISector.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISector.java similarity index 86% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/ISector.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISector.java index 28db6d1..fbdd3a0 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISector.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISector.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Sector; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISkill.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISkill.java similarity index 86% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/ISkill.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISkill.java index 0d6414b..b0a722c 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISkill.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISkill.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Skill; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISucursal.java similarity index 92% rename from src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java rename to src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISucursal.java index e415401..21a6ca7 100644 --- a/src/main/java/com/example/proyectofinal/servicios/implemetations/ISucursal.java +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/empresas/ISucursal.java @@ -1,4 +1,4 @@ -package com.example.proyectofinal.servicios.implemetations; +package com.example.proyectofinal.servicios.implemetations.empresas; import com.example.proyectofinal.interfaces.IPagination; import com.example.proyectofinal.models.empresas.Empresa; diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IAutoridad.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IAutoridad.java new file mode 100644 index 0000000..f4ec021 --- /dev/null +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IAutoridad.java @@ -0,0 +1,14 @@ +package com.example.proyectofinal.servicios.implemetations.login; + +import com.example.proyectofinal.models.login.Autoridad; +import com.example.proyectofinal.models.login.Rol; + +import java.util.List; + +public interface IAutoridad { + List findAll(); + + Autoridad findById(Long id); + + Autoridad findByName(String name); +} diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IRol.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IRol.java new file mode 100644 index 0000000..463ce23 --- /dev/null +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IRol.java @@ -0,0 +1,16 @@ +package com.example.proyectofinal.servicios.implemetations.login; + +import com.example.proyectofinal.models.empresas.Alumno; +import com.example.proyectofinal.models.login.Rol; +import org.springframework.data.domain.Page; + +import java.util.List; + +public interface IRol { + List findAll(); + + Rol findById(Long id); + + Rol findByName(String name); + +} diff --git a/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IUsuario.java b/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IUsuario.java new file mode 100644 index 0000000..4755623 --- /dev/null +++ b/src/main/java/com/example/proyectofinal/servicios/implemetations/login/IUsuario.java @@ -0,0 +1,33 @@ +package com.example.proyectofinal.servicios.implemetations.login; + +import com.example.proyectofinal.models.login.Rol; +import com.example.proyectofinal.models.login.Usuario; + +import java.util.List; +import java.util.Optional; + +public interface IUsuario { + + Usuario createUsuario(String nombreUsuario, String nombreLogIn, String email, String password, boolean loged, Long rolId); + + Long findRolByName(String user); + + Usuario findByLogInName(String logIn); + + void deleteById(Long id); + + List findAll(); + + Usuario findUserById(Long id); + + Optional findByNombreUsuario(String admin); + + Rol getRolById(int i); + + Usuario getUserByLogInName(String nombreLogIn); + + void saveUser(Usuario usuario); + + void deleteUser(Long id); +} + diff --git a/src/main/java/com/example/proyectofinal/servicios/user/AutoridadService.java b/src/main/java/com/example/proyectofinal/servicios/user/AutoridadService.java new file mode 100644 index 0000000..2b9939e --- /dev/null +++ b/src/main/java/com/example/proyectofinal/servicios/user/AutoridadService.java @@ -0,0 +1,32 @@ +package com.example.proyectofinal.servicios.user; + +import com.example.proyectofinal.models.login.Autoridad; +import com.example.proyectofinal.repositories.login.AutoridadesRepository; +import com.example.proyectofinal.servicios.implemetations.login.IAutoridad; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class AutoridadService implements IAutoridad { + + @Autowired + private AutoridadesRepository autoridadRepository; + + + @Override + public List findAll() { + return autoridadRepository.findAll(); + } + + @Override + public Autoridad findById(Long id) { + return autoridadRepository.findById(id).orElse(null); + } + + @Override + public Autoridad findByName(String name) { + return autoridadRepository.findByName(name); + } +} diff --git a/src/main/java/com/example/proyectofinal/servicios/user/RolAutoService.java b/src/main/java/com/example/proyectofinal/servicios/user/RolAutoService.java deleted file mode 100644 index 4d84600..0000000 --- a/src/main/java/com/example/proyectofinal/servicios/user/RolAutoService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.example.proyectofinal.servicios.user; - -import com.example.proyectofinal.models.login.Autoridad; -import com.example.proyectofinal.models.login.Rol; -import com.example.proyectofinal.repositories.login.AutoridadesRepository; -import com.example.proyectofinal.repositories.login.RolRepository; -import jakarta.annotation.PostConstruct; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.HashSet; -import java.util.Set; - -@Service -public class RolAutoService { - - @Autowired - private RolRepository rolRepository; - - @Autowired - private AutoridadesRepository autoridadRepository; - - -} diff --git a/src/main/java/com/example/proyectofinal/servicios/user/RolService.java b/src/main/java/com/example/proyectofinal/servicios/user/RolService.java new file mode 100644 index 0000000..e501b95 --- /dev/null +++ b/src/main/java/com/example/proyectofinal/servicios/user/RolService.java @@ -0,0 +1,31 @@ +package com.example.proyectofinal.servicios.user; + +import com.example.proyectofinal.models.login.Rol; +import com.example.proyectofinal.repositories.login.RolRepository; +import com.example.proyectofinal.servicios.implemetations.login.IRol; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class RolService implements IRol { + + @Autowired + private RolRepository rolRepository; + + @Override + public List findAll() { + return rolRepository.findAll(); + } + + @Override + public Rol findById(Long id) { + return rolRepository.findById(id).orElse(null); + } + + @Override + public Rol findByName(String name) { + return rolRepository.findByName(name); + } +} diff --git a/src/main/java/com/example/proyectofinal/servicios/user/UsuarioService.java b/src/main/java/com/example/proyectofinal/servicios/user/UsuarioService.java index bf6db3c..f6df287 100644 --- a/src/main/java/com/example/proyectofinal/servicios/user/UsuarioService.java +++ b/src/main/java/com/example/proyectofinal/servicios/user/UsuarioService.java @@ -1,12 +1,12 @@ package com.example.proyectofinal.servicios.user; import com.example.proyectofinal.models.login.Autoridad; -import com.example.proyectofinal.models.login.Usuario; import com.example.proyectofinal.models.login.Rol; +import com.example.proyectofinal.models.login.Usuario; import com.example.proyectofinal.repositories.login.AutoridadesRepository; import com.example.proyectofinal.repositories.login.UserRepository; import com.example.proyectofinal.repositories.login.RolRepository; -import jakarta.annotation.PostConstruct; +import com.example.proyectofinal.servicios.implemetations.login.IUsuario; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -21,9 +21,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; +import java.util.Optional; @Service -public class UsuarioService { +public class UsuarioService implements IUsuario { @Autowired private UserRepository userRepository; @@ -64,23 +65,7 @@ public class UsuarioService { userRepository.resetLogedIn(usuario.getId()); } - @PostConstruct - @Transactional - public void createDefaultRolesAuthoritiesAndAdmin() { - try { - if (userRepository.findByNombreUsuario("admin").isEmpty()) { - Rol adminRole = rolRepository.findByName("ADMIN"); - createUsuario("admin", "admin", - "admin@example.com", - "1234", - false, adminRole.getId()); - } - } catch (Exception e) { - System.out.println("Exepcion en crearUsuarioPorDefecto: " + e.getMessage()); - e.printStackTrace(); - } - } - + @Override public Usuario createUsuario(String nombreUsuario, String nombreLogIn, String email, String password, boolean loged, Long rolId) { // Insert into usuario table //System.out.println("TEST: BEFORE"+ password); @@ -111,10 +96,12 @@ public class UsuarioService { return usuario; } + @Override public Long findRolByName(String user) { return rolRepository.findRoleById(user); } + @Override public Usuario findByLogInName(String logIn) { return userRepository.findByNombreUsuarioLogIn(logIn).orElse(null); } @@ -123,6 +110,41 @@ public class UsuarioService { userRepository.deleteById(id); } + @Override + public List findAll() { + return userRepository.findAll(); + } + + @Override + public Usuario findUserById(Long id) { + return userRepository.findById(id).orElse(null); + } + + @Override + public Optional findByNombreUsuario(String admin) { + return userRepository.findByNombreUsuario(admin); + } + + @Override + public Rol getRolById(int i) { + return rolRepository.findById((long) i).orElse(null); + } + + @Override + public Usuario getUserByLogInName(String nombreLogIn) { + return userRepository.findByNombreUsuario(nombreLogIn).orElse(null); + } + + @Override + public void saveUser(Usuario usuario) { + userRepository.save(usuario); + } + + @Override + public void deleteUser(Long id) { + userRepository.deleteById(id); + } + public void logoutAllUsers() { userRepository.resetAllLogedIn(); } @@ -136,4 +158,5 @@ public class UsuarioService { } return false; } + } \ No newline at end of file diff --git a/src/main/resources/templates/admin/usuario/create.html b/src/main/resources/templates/admin/usuario/create.html index e55a07f..b39e6d1 100644 --- a/src/main/resources/templates/admin/usuario/create.html +++ b/src/main/resources/templates/admin/usuario/create.html @@ -1,13 +1,13 @@ - + - - Creacion: Empresa + Crear Nuevo Administrador + - -

Añadir Empresa

- -
- -
-
- -
- -
-
-
- -
- -
-
- -
- -
- -
+ +

Crear Aministrador

+ +
+ +
+
+
-
- -
- -
+
+ +
+
+
-
- -
- -
+
+ +
+
+
-
- -
- -
+
+ +
+
+
-
- - +
+
+
- - - + \ No newline at end of file diff --git a/src/main/resources/templates/admin/usuario/delete.html b/src/main/resources/templates/admin/usuario/delete.html new file mode 100644 index 0000000..38050be --- /dev/null +++ b/src/main/resources/templates/admin/usuario/delete.html @@ -0,0 +1,91 @@ + + + + Borrar Usuario + + + + + + + + + + +

Borrar Usuario

+
+
+ +
+ +
+
+ + + +
+
+ +
+
+
+ + + \ No newline at end of file diff --git a/src/main/resources/templates/admin/usuario/update.html b/src/main/resources/templates/admin/usuario/update.html index 52722a0..b9bc7f1 100644 --- a/src/main/resources/templates/admin/usuario/update.html +++ b/src/main/resources/templates/admin/usuario/update.html @@ -1,13 +1,13 @@ - + - - Update: Empresa + Editar Usuario + - -

Editar datos de Empresa

-
- -
- -
- -
- -
+ +

Editar Usuario

+ +
+ +
+
+
-
- -
- -
-
+ -
- -
- -
+
+ +
+
+
-
- -
- -
+
+ +
+
+
-
- -
- -
+
+ +
+
+
-
- -
- -
+
+ +
+
+
-
- - +
+
+
- - + \ No newline at end of file diff --git a/src/main/resources/templates/buscador_admin.html b/src/main/resources/templates/buscador_admin.html index 1e340f3..943da9b 100644 --- a/src/main/resources/templates/buscador_admin.html +++ b/src/main/resources/templates/buscador_admin.html @@ -85,7 +85,6 @@

Usuario

-

PAGINA PRINCIPAL

@@ -146,10 +145,85 @@ // When the user clicks anywhere outside of the modal, close it window.onclick = function(event) { - if (event.target == modal) { + if (event.target === modal) { modal.style.display = "none"; } } + + function isValidUserId() { + // Return the fetch Promise + return fetch('/api/currentUser') + .then(response => response.json()) + .then(user => { + // Return true or false based on the user ID validity + return user.id !== null && user.id !== undefined; + }); + } + + function createUser() { + isValidUserId().then(isValid => { + if (isValid) { + window.location.href = "/admin/alta_admin_nuevo"; + } else { + alert("Id invalido"); + } + }); + } + + $(document).ready(function() { + const urlParams = new URLSearchParams(window.location.search); + const userCreated = urlParams.get('userCreated'); + + if (userCreated === 'true') { + alert('Nuevo Usuario creado'); + } + }); + + function editUser() { + isValidUserId().then(isValid => { + if (isValid) { + fetch('/api/currentUser') + .then(response => response.json()) + .then(user => { + window.location.href = "/admin/editar_usuario" + }); + } else { + alert("Id invalido"); + } + }); + } + + $(document).ready(function() { + const urlParams = new URLSearchParams(window.location.search); + const userUpdated = urlParams.get('userUpdated'); + + if (userUpdated === 'true') { + alert('Usuario actualizado correctamente'); + } + }); + + function deleteUser() { + isValidUserId().then(isValid => { + if (isValid) { + fetch('/api/currentUser') + .then(response => response.json()) + .then(user => { + window.location.href = "/admin/delete_usuario" + }); + } else { + alert("Id invalido"); + } + }); + } + + $(document).ready(function() { + const urlParams = new URLSearchParams(window.location.search); + const userDeleted = urlParams.get('userDeleted'); + + if (userDeleted === 'true') { + alert('Usuario Borrado'); + } + }); // Get reference to the date picker var datePicker = document.getElementById('datePicker'); diff --git a/src/main/resources/templates/buscador_alumno.html b/src/main/resources/templates/buscador_alumno.html index a181646..0236616 100644 --- a/src/main/resources/templates/buscador_alumno.html +++ b/src/main/resources/templates/buscador_alumno.html @@ -50,14 +50,90 @@ #date{ margin-top: 15px; } + #user{ + position: relative; + margin-left: 50px; + padding: 0px; + background-color: #dddddd; + width: 50px; /* Adjust as needed */ + height: 50px; /* Adjust as needed */ + display: flex; + flex-direction: column; /* New property */ + align-items: center; /* Vertically center the contents */ + justify-content: center; /* Horizontally center the contents */ + text-align: center; /* Center the text */ + } + + #user-icon { + width: 22px; /* Adjust as needed */ + height: 22px; /* Adjust as needed */ + } + + #user p { + font-size: 10px; /* Adjust as needed */ + } + #info{ + position: relative; + margin-left: 50px; + padding: 0px; + background-color: #dddddd; + width: 50px; /* Adjust as needed */ + height: 50px; /* Adjust as needed */ + display: flex; + flex-direction: column; /* New property */ + align-items: center; /* Vertically center the contents */ + justify-content: center; /* Horizontally center the contents */ + text-align: center; /* Center the text */ + } + + #info-icon { + width: 22px; /* Adjust as needed */ + height: 22px; /* Adjust as needed */ + } + + #info p { + font-size: 10px; /* Adjust as needed */ + } + + + .modal-content p{ + background-color: antiquewhite; + } +
+
+ +

Usuario

+
+
+ +

Información

+
+

PAGINA PRINCIPAL

+ + + + +
@@ -68,7 +144,6 @@ -
-
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- - -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- -
- -
- -
-
- - -
- -
- -
-
- -
-

Select Skills

- -
- -
- - -
-
- - - - - diff --git a/src/main/resources/templates/user/alumno/create.html b/src/main/resources/templates/user/update.html similarity index 89% rename from src/main/resources/templates/user/alumno/create.html rename to src/main/resources/templates/user/update.html index 2443888..2b2bed3 100644 --- a/src/main/resources/templates/user/alumno/create.html +++ b/src/main/resources/templates/user/update.html @@ -2,7 +2,7 @@ - Creacion: Alumno + Update: Alumno @@ -51,9 +51,10 @@ -

Añadir Alumno

+

Editar datos de Alumno

-
+ +
@@ -97,7 +98,6 @@
-
@@ -112,14 +112,14 @@
- +
- +
@@ -150,7 +150,7 @@

Select Skills

@@ -160,6 +160,7 @@
+ - \ No newline at end of file +