Ver, modificar y borrar de admin sobre usuarios funcional
This commit is contained in:
Thiloparn 2021-04-09 18:41:19 +02:00 committed by GitHub
commit 6def510199
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 185 additions and 9 deletions

View file

@ -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;
}
}

View file

@ -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);
}

View file

@ -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 {

View file

@ -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";
}
}

View file

@ -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;

View file

@ -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');

View 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>

View file

@ -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>

View file

@ -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>