cmd/jwtserver | ||
internal/router | ||
middleware | ||
misc/containers/postgres | ||
.env.dist | ||
.gitignore | ||
api.http | ||
docker-compose.yml | ||
go.mod | ||
go.sum | ||
jwt.go | ||
jwtserver | ||
Makefile | ||
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
}