Skip to content

Este repositorio contiene el proyecto de Spring Boot que corresponde al Trabajo Práctico Cuatrimestral de la materia de Orientación a Objetos II

Notifications You must be signed in to change notification settings

leandroblandi/grupo-21-OO2-2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Trabajo práctico cuatrimestral - Orientación a Objetos II

Este proyecto contiene el proyecto backend del trabajo práctico cuatrimestral correspondiente a la materia de Orientación a Objetos II.

Listado de herramientas/tecnologías que utiliza el proyecto:

  • 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.

Instalando el proyecto localmente

1. Importando el proyecto

  1. Deberás clonar este mismo repositorio, ejecutando por consola el siguiente comando:
    git clone https://github.com/leandroblandi/grupo-21-OO2-2024.git
  2. 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.
  3. 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".
  4. Por ultimo, presionas el botón Browse, y buscas la carpeta donde clonaste el repositorio
  5. Si todo va bien, verá en el recuadro Projects, verás el pom.xml importado correctamente con el nombre com.unla.grupo21:tpc-oo2-sci:0.0.1-SNAPSHOT.jar, lo dejas seleccionado.
  6. Finish.

1.1 Ejecución de script SQL

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.

1.2 Configuración de variables de entorno

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”

1.3 Sobre la solapa “Environments” haz lo siguiente:

  • 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.

2. Levantando el servidor por primera vez

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".

3. Utilizando la aplicación

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.

3.1. Probando la aplicación

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

3.1.1 Roles

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.

3.1.2 Permisos según roles

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

About

Este repositorio contiene el proyecto de Spring Boot que corresponde al Trabajo Práctico Cuatrimestral de la materia de Orientación a Objetos II

Topics

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages