Go to file
Matthieu Lamalle 3f03090762 update conf var names 2020-07-22 10:14:13 +02:00
cmd/jwtserver update conf var names 2020-07-22 10:14:13 +02:00
internal/router set uuid and refresh token path 2020-07-21 11:08:01 +02:00
middleware update conf var names 2020-07-22 10:14:13 +02:00
misc/containers/postgres first commit 2020-07-16 10:51:50 +02:00
.env.dist update conf var names 2020-07-22 10:14:13 +02:00
.gitignore first commit 2020-07-16 10:51:50 +02:00
Makefile first commit 2020-07-16 10:51:50 +02:00
README.md typo markdown 2020-07-16 14:48:26 +02:00
api.http set uuid and refresh token path 2020-07-21 11:08:01 +02:00
docker-compose.yml first commit 2020-07-16 10:51:50 +02:00
go.mod set uuid and refresh token path 2020-07-21 11:08:01 +02:00
go.sum set uuid and refresh token path 2020-07-21 11:08:01 +02:00
jwt.go update package 2020-07-16 11:34:56 +02:00
jwtserver update internal path 2020-07-16 14:04:51 +02:00

README.md

Go-JWTServer

Go-JWTServer met a disposition :

  • Un serveur de stockage de utilisateur sous postgres et d'authenfication Jwt
  • Un middleware d'authentification Jwt

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
}