go-jwtserver/README.md

95 lines
1.6 KiB
Markdown

# 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
}
```