Skip to content

Commit

Permalink
Updated Spring Security
Browse files Browse the repository at this point in the history
  • Loading branch information
andresWeitzel committed Jul 5, 2022
1 parent 76360a8 commit 8c54be6
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public class ProductoController {
@ApiResponse(responseCode = "404", description = "La Inserción del Producto no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@PostMapping("/")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public ResponseEntity<?> addProducto(@RequestBody Producto producto) {

try {
Expand All @@ -76,6 +77,7 @@ public ResponseEntity<?> addProducto(@RequestBody Producto producto) {
@ApiResponse(responseCode = "404", description = "La Actualización del Producto no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@PutMapping("/")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public ResponseEntity<?> updateProducto(@RequestBody Producto producto) {

try {
Expand Down Expand Up @@ -115,7 +117,7 @@ public ResponseEntity<?> deleteProducto(@RequestBody UUID id) {
}

// =================
// ===== GETALL ====
// ===== GET ALL ====
// =================
@Operation(summary = "Listado Paginado de Productos")
@ApiResponses(value = {
Expand All @@ -125,7 +127,7 @@ public ResponseEntity<?> deleteProducto(@RequestBody UUID id) {
@ApiResponse(responseCode = "404", description = "El Listado de Productos no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/listado")
//@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getAllProducto(Pageable pageable) {

return productoService.findAllProducto(pageable);
Expand All @@ -148,7 +150,7 @@ public Page<Producto> getAllProducto(Pageable pageable) {
@ApiResponse(responseCode = "404", description = "El Producto según su ID no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/id/{id}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Producto getById(@PathVariable("id") long id) {
return productoService.findById(id);
}
Expand All @@ -165,7 +167,7 @@ public Producto getById(@PathVariable("id") long id) {
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su CODIGO no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/codigo/{codigo}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByCodigo(@PathVariable("codigo") String codigo, Pageable pageable) {
return productoService.findByCodigo(codigo, pageable);
}
Expand All @@ -182,7 +184,7 @@ public Page<Producto> getByCodigo(@PathVariable("codigo") String codigo, Pageabl
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su IMAGEN no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/imagen/{imagen}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByImagen(@PathVariable("imagen") String imagen, Pageable pageable) {
return productoService.findByImagen(imagen, pageable);
}
Expand All @@ -199,7 +201,7 @@ public Page<Producto> getByImagen(@PathVariable("imagen") String imagen, Pageabl
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su NOMBRE no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/nombre/{nombre}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByNombre(@PathVariable("nombre") String nombre, Pageable pageable) {
return productoService.findByNombre(nombre, pageable);

Expand All @@ -217,7 +219,7 @@ public Page<Producto> getByNombre(@PathVariable("nombre") String nombre, Pageabl
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su MARCA no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/marca/{marca}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByMarca(@PathVariable("marca") String marca, Pageable pageable) {
return productoService.findByMarca(marca, pageable);
}
Expand All @@ -234,7 +236,7 @@ public Page<Producto> getByMarca(@PathVariable("marca") String marca, Pageable p
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su TIPO no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/tipo/{tipo}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByTipo(@PathVariable("tipo") String tipo, Pageable pageable) {
return productoService.findByTipo(tipo, pageable);
}
Expand All @@ -251,7 +253,7 @@ public Page<Producto> getByTipo(@PathVariable("tipo") String tipo, Pageable page
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su GRUPO no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/grupo/{grupo}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByGrupo(@PathVariable("grupo") String grupo, Pageable pageable) {
return productoService.findByGrupo(grupo, pageable);
}
Expand All @@ -268,7 +270,7 @@ public Page<Producto> getByGrupo(@PathVariable("grupo") String grupo, Pageable p
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su PESO no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/peso/{peso}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByPeso(@PathVariable("peso") double peso, Pageable pageable) {
return productoService.findByPeso(peso, pageable);
}
Expand All @@ -285,7 +287,7 @@ public Page<Producto> getByPeso(@PathVariable("peso") double peso, Pageable page
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su PRECIO_UNIDAD no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/precio-unidad/{precioUnidad}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByPrecioUnidad(@PathVariable("precioUnidad") double precioUnidad, Pageable pageable) {
return productoService.findByPrecioUnidad(precioUnidad, pageable);
}
Expand All @@ -303,7 +305,7 @@ public Page<Producto> getByPrecioUnidad(@PathVariable("precioUnidad") double pre
@ApiResponse(responseCode = "404", description = "El Listado de Productos o Producto según su STOCK no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/stock/{stock}")
@PreAuthorize("hasRole('ROLE_USER')")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Producto> getByStock(@PathVariable("stock") int stock, Pageable pageable) {
return productoService.findByStock(stock, pageable);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
Expand All @@ -24,6 +26,7 @@

@RestController
@RequestMapping("/api/v1/admin/usuarios")
@CrossOrigin(origins = "*")
public class UsuarioController {

@Autowired
Expand All @@ -44,6 +47,7 @@ public class UsuarioController {
@ApiResponse(responseCode = "404", description = "La Inserción del Usuario no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@PostMapping("/")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public ResponseEntity<?> addUsuario(@RequestBody Usuario usuario) {

try {
Expand All @@ -68,6 +72,7 @@ public ResponseEntity<?> addUsuario(@RequestBody Usuario usuario) {
@ApiResponse(responseCode = "404", description = "La Actualización del Usuario no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@PutMapping("/")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public ResponseEntity<?> updateUsuario(@RequestBody Usuario usuario) {

try {
Expand All @@ -93,6 +98,7 @@ public ResponseEntity<?> updateUsuario(@RequestBody Usuario usuario) {
@ApiResponse(responseCode = "404", description = "La Eliminación del Usuario no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@DeleteMapping("/{id}")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public ResponseEntity<?> deleteUsuario(@RequestBody long id) {

try {
Expand All @@ -118,6 +124,7 @@ public ResponseEntity<?> deleteUsuario(@RequestBody long id) {
@ApiResponse(responseCode = "404", description = "El Listado de Usuarios no está Disponible ya que el recurso pedido no existe. Comprobar solicitud", content = @Content),
@ApiResponse(responseCode = "500", description = "Se ha producido un error interno en el Servidor", content = @Content) })
@GetMapping("/listado")
@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_ADMIN')")
public Page<Usuario> getAllUsuario(Pageable pageable) {

return usuarioService.getAllUsuario(pageable);
Expand Down
9 changes: 1 addition & 8 deletions src/main/java/com/api/produc/sup/security/entities/Rol.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,7 @@ public class Rol {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;

/*
@NotNull
@Enumerated(EnumType.STRING)
@Type(type = "pgsql_enum")
@Column(columnDefinition = "rol")
private TipoRol rol;
*/

@NotNull
@Enumerated(EnumType.STRING)
@Column(columnDefinition = "rol")
Expand Down
11 changes: 8 additions & 3 deletions src/main/java/com/api/produc/sup/security/jwt/JwtEntryPoint.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,14 @@ public class JwtEntryPoint implements AuthenticationEntryPoint {
private final static Logger logger = LoggerFactory.getLogger(JwtEntryPoint.class);

@Override
public void commence(HttpServletRequest req, HttpServletResponse res, AuthenticationException e) throws IOException, ServletException {
logger.error("fail en el método commence");
res.sendError(HttpServletResponse.SC_UNAUTHORIZED, "no autorizado");
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException {
logger.error("fail en el método commence: " + authException.getMessage());

response.resetBuffer();
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.setHeader("Content-Type", "application/json");
response.getOutputStream().print("{\"status\":401,\"error\":\"Unauthorized\",\"message\":\"No esta autorizado\"}");
response.flushBuffer();
}
}

40 changes: 0 additions & 40 deletions src/main/java/com/api/produc/sup/security/utils/CreateRoles.java

This file was deleted.

8 changes: 4 additions & 4 deletions src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ server.error.whitelabel.enabled=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none
#spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.show-sql=true
spring.datasource.url=jdbc:postgresql://localhost:5432/microdb_productos_supermercado?serverTimezone=UTC
spring.jpa.show-sql=true
spring.datasource.url=jdbc:postgresql://localhost:5432/microdb_productos_supermercado?stringtype=unspecified
spring.datasource.username=postgres
spring.datasource.password=postgres

Expand All @@ -27,11 +27,11 @@ spring.data.rest.limit-param-name=limit
spring.data.rest.default-page-size = 10


# --- Habilitamos logging
# --- LOGGING
logging.level.org.springframework.data=debug
logging.level.=errors


# security
# --- SPRING SECURITY
jwt.secret = secret
jwt.expiration = 36000

0 comments on commit 8c54be6

Please sign in to comment.