Skip to content

Complet Project with Rest API & Rest Client with Spring with NoSQL DataBase & Secutiry with Auth0. Frontend with Thymeleaf, HTML + CSS & Boostrap.

Notifications You must be signed in to change notification settings

gerardpuigl/M15-Spring-REST-API-NoSQL-JWT-Auth

Repository files navigation

Spring Rest API & Rest Client & NoSQL & JWT Auth (M15)

spring-long java mongodb thymeleaf auth0 html-5 css-3 bootstrap postman eclipse visual-studio-code

Introduction:

Complet Project with Rest API & Rest Client in Spring with Spring Data JPA conected to NoSQL DataBase & Secutiry with Auth0 external service. Frontend with Thymeleaf, HTML + CSS & Boostrap.

This app is divided in two diferent projects, one act as Rest API Service and the other as Rest Client that consum the API and show the web. In this way a real system of requests is simulated.

AuthenticatedLangindPage ExternalAutheticationService GamePage RakingPage StatisticsPage UserProfilePage

How to run:

To run the project, follow the steps below:

  1. Donwload the content in this repository.
  2. Load the two projects in your IDE. (tested in Eclipse)
  3. The Rest API need to have a MongoDB database enabled in your machine at localhost: 27017 (or modify the project properties file with the url of your MongoDB)
  4. Run both projects at the same time. One acts as a Client and the other as a Rest API. In this way a real system of requests is simulated.
  5. To start the web you need to go to http://localhost:3000/, the API use the port 8080 (it's important to have it free or modify the both project with other port)

Exercise Description [in Catalan]

Exercici per crear una web de Joc de Daus completa.

Rest API: Utilització de Spring MVC, Spring Data JPA amb base de dades MongoDB i Spring Secutiry amb autenticació amb oauth2 amb servei d'auntenticació extern auth0.

Rest Client: Utilització de Spring MVC, Thymeleaf, HTML, CSS i la llibreria Boostrap.

- Nivell 1 - (Rest API Spring)

Crear una applicació Rest API per una web de Joc de Daus.

El joc de daus s’hi juga amb dos daus. En cas que el resultat de la suma dels dos daus sigui 7, la partida és guanyada, sinó és perduda. Un jugador pot veure un llistat de totes les tirades que ha fet i el percentatge d’èxit.

Per poder jugar al joc i realitzar una tirada, un usuari s’ha de registrar amb un nom no repetit. Al crear-se, se l’hi assigna un identificador numèric únic i una data de registre. Si l’usuari així ho desitja, pots no afegir cap nom i es dirà “ANÒNIM”. Pot haver-hi més d’un jugador “ANÒNIM”.

Cada jugador pot veure un llistat de totes les tirades que ha fet, amb el valor de cada dau i si s’ha guanyat o no la partida. A més, pot saber el seu percentatge d’èxit per totes les tirades que ha realitzat.

No es pot eliminar una partida en concret, però si que es pot eliminar tot el llistat de tirades per un jugador.

El software ha de permetre llistar tots els jugadors que hi ha al sistema, el percentatge d’èxit de cada jugador i el percentatge d’èxit mig de tots els jugadors en el sistema.

El software ha de respectar els principals patrons de disseny.

Detalls de construcció:

URL’s:

  • POST: /players : crea un jugador

  • PUT /players : modifica el nom del jugador

  • POST /players/{id}/games/ : un jugador específic realitza una tirada dels daus.

  • DELETE /players/{id}/games: elimina les tirades del jugador

  • GET /players/: retorna el llistat de tots els jugadors del sistema amb el seu percentatge mig d’èxits

  • GET /players/{id}/games: retorna el llistat de jugades per un jugador.

  • GET /players/ranking: retorna el ranking mig de tots els jugadors del sistema. És a dir, el percentatge mig d’èxits.

  • GET /players/ranking/loser: retorna el jugador amb pitjor percentatge d’èxit

  • GET /players/ranking/winner: retorna el jugador amb pitjor percentatge d’èxit

  • Fase 1 Persistència: utilitza com a base de dades mysql

  • Fase 2 Canvia la configuració i utilitza MongoDB per persistir les dades

  • Fase 3 Afegix seguretat: inclou autenticació per JWT en tots els accessos a les URL de l'microservei.

- Nivell 2 - (Rest API Spring)

Modifica el programa amb les següents millores:

  • Modifica tots els identificadors únics per funcionar amb el tipus UUID com a ID.

  • Ara no acceptarem usuaris sense nom, però si aquests decideixen ser anònims, en comptes de printar el seu nom, és printara "anònim" però mantindrem el nom a la base de dades fent que en aquesta ja no hi hagi anònims.

  • Afegeix 2 jocs més de daus i que aquests es guardin els històrics de la mateixa forma que el joc inicial. Han de tenir els seus guanyadors, perdedors i rànquings.

- Nivell 3 - (Rest Client Thymeleaf/HTML/CSS)

Creació d'una web amb Thymeleaf/HTML/CSS per poder jugar. S'ha utilitzat Auth0 per autenticar cada usuari i aquest es vincula amb l'usuari de la base de dades el primer cop que s'hi entra.

S'ha volgut simular una petició a un servidor Rest Api extern i per aquest motiu s'han crear dos projectes, un que fa de Rest API i l'altre de Rest Client.

S'ha utilitzat Bootstrap per donar estètica a la botiga.

About

Complet Project with Rest API & Rest Client with Spring with NoSQL DataBase & Secutiry with Auth0. Frontend with Thymeleaf, HTML + CSS & Boostrap.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published