Este proyecto contiene el proyecto backend del trabajo práctico cuatrimestral correspondiente a la materia de Orientación a Objetos II.
- Java SE 17
- Spring Boot 3.2.5
- Spring Data JPA
- Spring Security
- Autenticación con JSON Web Token (JWT)
- Lombok
El Backend está realizado con una arquitectura REST. El mismo expone endpoints, los cuales luego el Frontend los consumirá y obtendrá objetos o colecciones JSONs, que luego utilizará en los diferentes componentes.
- Deberás clonar este mismo repositorio, ejecutando por consola el siguiente comando:
git clone https://github.com/leandroblandi/grupo-21-OO2-2024.git
- Deberás dirigirte a tu IDE de preferencia, en este caso, los integrantes del desarrollo, utilizamos Spring Tool Suite. Seleccionas el workspace que suelas utilizar, sino creas uno.
- Una vez seleccionado el Workspace, eliges la pestaña: a. "File" b. Luego la opción "Import" c. Y eliges el tipo de proyecto con nombre "Existing Maven Projects" d. Finalmente, apretas el botón "Next".
- Por ultimo, presionas el botón Browse, y buscas la carpeta donde clonaste el repositorio
- Si todo va bien, verá en el recuadro Projects, verás el
pom.xml
importado correctamente con el nombrecom.unla.grupo21:tpc-oo2-sci:0.0.1-SNAPSHOT.jar
, lo dejas seleccionado. - Finish.
Muy importante. Antes de levantar el servidor y ejecutar la aplicación por primera vez, es muy importante que crees un esquema llamado 'tpc-oo2'. Si no sabes como hacerlo, puedes abrir ejecutar el siguiente comando SQL:
CREATE SCHEMA `tpc-oo2`;
De esa forma, se ejecutará el archivo data.sql
al levantar el proyecto, eso incluirá algunos registros iniciales para poder utilizar la aplicación sin problemas.
Para poder levantar correctamente la base de datos, deberás configurar ciertas variables de entorno. Para eso, sigue los siguientes pasos: Con el IDE abierto, seleccionas la pestaña “Run” Luego, “Run Configurations”
- Presiona el botón “Add”, ubicado al lado del recuadro de variables
- Como nombre de variable de URL a la base de datos, agrega DB_URL:
- El valor será la ruta a la base de datos recién creada, normalmente con el valor de la imagen
- Como nombre de variable de usuario, agrega DB_USERNAME:
- El valor será tu nombre de usuario configurado en MySQL
- Como nombre de variable de contraseña, agrega “DB_PASSWORD”:
- El valor será tu contraseña para acceder a MySQL
- Una vez agregadas estas tres variables, presiona el botón “Apply”, ubicado en la esquina inferior derecha.
El servidor se iniciará en el puerto 8080
, por lo cual, asegúrate de tener libre ese puerto, o que no haya otro servidor Tomcat corriendo en el mismo puerto.
Para iniciar el servidor, puedes hacer click derecho sobre el proyecto en el Package Explorer, y seleccionar la opción:
1. "Run As"
2. Luego, "Spring Boot App".
Una vez iniciaste la aplicación, Spring inicializará todo lo necesario, incluyendo la creación de las tablas, y algunos datos iniciales como para que puedas usar la aplicación normalmente.
El punto de partida de la aplicación, como para probar que funciona, puede ser el siguiente endpoint:
GET: http://localhost:8080/api/test
El mismo debería responder con un JSON como:
{
"date": "2024-06-19T13:11:25.229",
"details": "La API está funcionando correctamente"
}
Eso significa que la aplicación está corriendo de manera exitosa. El verdadero punto de partida es el login, es decir, el inicio de sesión. El usuario por defecto con los permisos suficientes tiene como username "dummy", y la contraseña es "1234", tal como verás en el siguiente JSON:
{
"usuario": "dummy",
"clave": "1234"
}
Si deseas un usuario que solo tenga permisos de cliente, puedes usar el siguiente:
{
"usuario": "mcarreira",
"clave": "1234"
}
La aplicación maneja un uso de roles, donde cada usuario puede tener solo un rol. Los roles cargados en el sistema son:
ROLE_CLIENTE
: Es el rol que cualquier usuario obtiene al registrarse en la aplicación.ROLE_ADMINISTRADOR
: Unicamente los adminsitradores tienen este rol.
Cabe aclarar que los endpoints están restringidos según rol. Es decir, un cliente no puede hacer todo lo que el administrador sí puede. Aquí se lista las cosas que un visitante puede hacer:
- Testear el backend
- Registrarse
- Iniciar sesión
Sin embargo, si el visitante se registra e inicia sesión, obtendrá el rol ROLE_CLIENTE
, por lo que podrá hacer lo siguiente:
- Ver los artículos
- Realizar una compra de uno/varios artículos
- Ver las compras realizadas
Por último, el usuario con rol ROLE_ADMINISTRADOR
puede hacer lo siguiente:
- Sección artículos
- Ver artículos
- Cargar artículos
- Modificar artículos
- Eliminar artículos
- Sección lotes:
- Ver lotes
- Cargar lotes
- Aprovisionar lotes
- Eliminar lotes
- Sección usuarios:
- Ver clientes
- Eliminar clientes