Giter Club home page Giter Club logo

user-service's Introduction

User-service

Esta es una aplicación que permite crear usuarios que a la vez generan su propio token JWT. Esta funcionalidad esta expuesta en un RESTFull API.

El diagrama E-R para este proyecto es el siguiente:

Como empezar

Este es un projecto Spring Boot (2.7.8) con Maven (3.9.0) para el manejo de dependencias. La base de datos es de tipo H2 y contiene un script para crear la estructure inicial que se encuentra con el nombre schema.sql.

Prerequisitos

El sistema operativo debe contar con las siguientes herramientas/lenguajes:

  • Java 17.0.7
    Nota: Si tienes la version java 8 utiliza la rama java8-support
  • Maven 3.x.x
  • Git 2.x.x

Instalacion

El repositorio es publico y puede descargarse mediante el siguiente comando:

git clone [email protected]:LadyCuizara/user-service.git

Para generar los artefactos necesario para el despliegue, necesitas ejecutar:

mvn clean package

Por último para levantar el artefacto generado, puedes ejecutar el siguiente comando:

java -jar target/user-service-0.0.1-SNAPSHOT.jar

Mediante este comando se inicializará la aplicación Spring Boot en el puerto 8080 (puede ser modificado en el archivo application.properties)

Como usar

La aplicacion expone una API para poder visualizar todos los endpoints disponibles. Puedes acceder a ella mediante la siguiente URL:

http://localhost:8080/swagger-ui/index.html

Una vez ingresando puedes probar el endpoint que registra usuarios. Este endpoint tiene las siguientes características:

Verbo URL
POST http://localhost:8080/api/users

El parámetro de entrada es un Body Request en formato JSON:

{
  "email": "[email protected]",
  "name": "Juan Perez",
  "password": "Password1!",
  "phones": [
    {
      "citycode": 2,
      "countrycode": 591,
      "number": 77777777
    }
  ]
}

Al mismo tiempo de guardar el usuario en la base de datos, también se genera un token JWT que es retornado en la respuesta, como se ve a continuación:

  • HTTP código de estado = 201
{
  "user": {
    "id": "6fa14028-881b-41eb-bce0-f2c6326b8911",
    "name": "Juan Perez",
    "email": "[email protected]",
    "password": "$2a$10$rT39SpilBW9IvbWbaNOWr.pihfSreTtq3pi2pgIVzjeDlkwV6hWj6",
    "phones": [
      {
        "number": 77777777,
        "cityCode": 2,
        "countryCode": 591
      }
    ],
    "created": "2023-10-21T20:13:32.311+00:00",
    "modified": "2023-10-21T20:13:32.311+00:00"
  },
  "session": {
    "userId": "6fa14028-881b-41eb-bce0-f2c6326b8911",
    "lastLogin": "2023-10-21T20:13:32.567+00:00",
    "token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKdWFuIFBlcmV6IiwiaWF0IjoxNjk3OTE5MjEyLCJleHAiOjE2OTc5MjEwMTJ9.G-h5uCdWiKpyydrz84lNHSEDbJa1shFsNg58XHxu9zA",
    "active": true
  }
}

Para visualizar la base de datos, usted puede acceder a la siguiente URL:

URL JDBC URL Usuario Contraseña
http://localhost:8080/h2-console jdbc:h2:mem:testdb sa sa

Excepciones

La aplicacion verifica las siguientes excepciones:

  • Verificacion del formato de Email - EmailFormatException: Valida que el formato del email sea el siguiente: ([email protected])

  • Verificacion del correo unico - UserAlreadyExistsException : Verifica que el correo del nuevo usuario no haya sido registrado anteriormente

  • Validacion de campos nulos e invalidos: Se verifica que el nombre, email, password del usuario no sean nulos ni vacios.

user-service's People

Contributors

ladycuizara avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.