mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-23 15:55:49 +00:00
Merge pull request #75 from cheapy-ispp/020-ver-modificar-borrar-admin-usuario#68
Ver, modificar y borrar de admin sobre usuarios funcional
This commit is contained in:
commit
6def510199
10 changed files with 185 additions and 9 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,10 @@ public interface UsuarioRepository extends Repository<Usuario, String> {
|
|||
@Transactional(readOnly = true)
|
||||
Usuario findByUsername(String username);
|
||||
|
||||
@Query("SELECT usuario FROM Usuario usuario")
|
||||
@Transactional(readOnly = true)
|
||||
List<Usuario> findAllUsuario();
|
||||
|
||||
void save(Usuario usuario);
|
||||
|
||||
}
|
||||
|
|
|
@ -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<Usuario> findAllUsuario() throws DataAccessException {
|
||||
return this.usuarioRepository.findAllUsuario();
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public void saveUsuario(final Usuario usuario) throws DataAccessException {
|
||||
|
|
|
@ -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<String, Object> model) {
|
||||
List<Usuario> usuarioLs = this.usuarioService.findAllUsuario();
|
||||
model.put("usuarioLs", usuarioLs);
|
||||
return "usuarios/usuariosList";
|
||||
}
|
||||
|
||||
@GetMapping("/administrators/usuarios/{username}")
|
||||
public String processShowForm(@PathVariable("username") String username, Map<String, Object> 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";
|
||||
}
|
||||
}
|
|
@ -18,7 +18,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;
|
||||
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
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');
|
||||
|
|
57
src/main/webapp/WEB-INF/jsp/usuarios/usuariosList.jsp
Normal file
57
src/main/webapp/WEB-INF/jsp/usuarios/usuariosList.jsp
Normal file
|
@ -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" %>
|
||||
<link href='https://fonts.googleapis.com/css?family=Lobster' rel='stylesheet'>
|
||||
|
||||
<cheapy:layout pageName="usuarios">
|
||||
<h2 style="text-align:center;padding:5px"><fmt:message key="usuarios"/></h2>
|
||||
|
||||
<c:if test="${empty usuarioLs }">
|
||||
<p id="vacio" >No hay ningun usuario.</p>
|
||||
</c:if>
|
||||
<c:if test="${not empty usuarioLs }">
|
||||
<table id="usuarioTable" class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><fmt:message key="nombre"/></th>
|
||||
<th><fmt:message key="apellidos"/></th>
|
||||
<th><fmt:message key="username"/></th>
|
||||
<th><fmt:message key="enabled"/></th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<c:forEach items="${usuarioLs}" var="usuario">
|
||||
<tr>
|
||||
<td>
|
||||
<c:out value="${usuario.nombre}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${usuario.apellidos}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${usuario.usuar.username}"/>
|
||||
</td>
|
||||
<td>
|
||||
<c:out value="${usuario.usuar.enabled}"/>
|
||||
</td>
|
||||
<td>
|
||||
<spring:url value="/administrators/usuarios/{username}" var="usuarioUrl">
|
||||
<spring:param name="username" value="${usuario.usuar.username}"/>
|
||||
</spring:url>
|
||||
<div class="btn-detalles">
|
||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(usuarioUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||
<span class="glyphicon glyphicon-info-sign" aria-hidden="true" style="padding: 5px"> </span>
|
||||
<fmt:message key="details"/></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
</c:if>
|
||||
</cheapy:layout>
|
|
@ -56,6 +56,18 @@
|
|||
Desactivar usuario</button>
|
||||
</div>
|
||||
</sec:authorize>
|
||||
<sec:authorize access="hasAnyAuthority('admin')">
|
||||
<sec:authentication var="principal" property="principal" />
|
||||
<div class="btns-edit">
|
||||
|
||||
<spring:url value="/administrators/usuarios/{username}/disable" var="deactivateUrl">
|
||||
<spring:param name="username" value="${usuario.usuar.username}"/>
|
||||
</spring:url>
|
||||
<button type="button" role="link" onclick="window.location='${fn:escapeXml(deactivateUrl)}'" style="font-family: 'Lobster'; font-size: 20px;">
|
||||
<span class="glyphicon glyphicon glyphicon-trash" aria-hidden="true" style="padding: 5px"> </span>
|
||||
Desactivar usuario</button>
|
||||
</div>
|
||||
</sec:authorize>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -48,6 +48,14 @@
|
|||
<fmt:message key="showUsuario"/> </button>
|
||||
</div>
|
||||
</sec:authorize>
|
||||
|
||||
<sec:authorize access="hasAnyAuthority('admin')">
|
||||
<div class="btn-home">
|
||||
<button type="button" role="link" onclick="window.location='/administrators/usuarios'" style="font-family: 'Lobster'; font-size: 20px;margin:5px;">
|
||||
<span class="glyphicon glyphicon-cutlery" aria-hidden="true" style="padding: 5px"> </span>
|
||||
<fmt:message key="showUsuarios"/> </button>
|
||||
</div>
|
||||
</sec:authorize>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue