# Go-JWTServer Go-JWTServer met a disposition : - Un serveur de stockage de utilisateur sous postgres et d'authenfication Jwt - Un middleware d'authentification Jwt Dépendances: docker, docker-compose ## Serveur ### Configuration Editer le ficher `.env` ``` ## Server web_adress=":3001" ## Postgres db_user="jwtserver" db_pass="jwtserver" db_name="jwtserver" db_host="localhost" ## JWT token_password="NotSoSecretJwtSecretPassword" ``` ### Executer le serveur Lancer le conteneur postgres ```make up``` Dans une autre console, lancer le serveur jwt ```make run``` ## Middleware Le middleware permet d'enregistrer et d'authentifier un utilisateur et de vérifier la validité du token Jwt ##### Exemple ``` r := chi.NewRouter() //add Jwt Authentification r.Use(jwtmiddleware.JwtAuthentication) .Route("/api/", func(r chi.Router) { //Middleware routes r.Post("/user/new", jwtmiddleware.CreateAccount) r.Post("/user/login", jwtmiddleware.Authenticate) }) ``` ## API ##### Enregistrer un utilisateur ``` POST {{host}}/api/user/new content-type: application/json { "email": "test@test.com", "password": "test" } ``` ##### Authentifier un utilisateur ``` POST {{host}}/api/user/login content-type: application/json { "email": "test@test.com", "password": "test" } ``` ##### Réponse ``` { "account": { "ID": 1, "CreatedAt": "2020-07-15T14:08:22.288502Z", "UpdatedAt": "2020-07-15T14:08:22.288502Z", "DeletedAt": null, "email": "test@test.com", "password": "", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJVc2VySWQiOjF9.-bV_jRNcykDMsI-vjxKbiNBsEwqSfDspEEjBTE2nds8" }, "message": "Logged In", "status": true } ```