Skip to content

joj3000/technical-test-api

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Technical-test-api

Url: https://technical-test-api.onrender.com

Authentification

Les tokens générés sont des JWT.

accessToken : Un jeton utilisé pour accéder aux API sécurisées, qui expire rapidement pour minimiser le risque en cas de compromission. Il contient généralement des informations d'identification de l'utilisateur et des droits d'accès. Expire au bout de 5 minutes

refreshToken : Un jeton plus durable utilisé pour obtenir un nouvel accessToken une fois que l'accessToken initial a expiré. Son utilisation renforce la sécurité en limitant la fréquence de saisie des informations d'authentification par l'utilisateur. Expire au bout de 15 minutes

Processus d'utilisation : L'utilisateur se connecte, reçoit à la fois un accessToken et un refreshToken. L'accessToken est utilisé pour les requêtes subséquentes jusqu'à son expiration.

Renouvellement : À l'expiration de l'accessToken, le refreshToken est envoyé à un point d'API spécifique pour obtenir un nouvel accessToken sans que l'utilisateur n'ait le besoin de se reconnecter.

Temps d'expiration :
AccessToken: 5 minutes refreshToken: 15 minutes

Connexion

POST /signin
content-type: application/json

Payload

{
  "email": string,
  "password": string
}

Responses

200:
{
  "accessToken": string,
  "refreshToken": string
}

400:
{
  "error": "incorrect_credentials",
  "message": "Email or password is not correct. Check them twice",
}


Renouvellement du token

Demande un nouvel accessToken et refreshToken.

POST /refresh
content-type: application/json

Payload

{
  "refreshToken": string
}

Responses

200:
{
  "accessToken": string,
  "refreshToken": string
}

401:
{
  "error": "no_token",
  "message": "User must provide a token",
}

401:
{
  "error": "expired_token",
  "message": "Token is expired",
}


Récuperer les utilisateurs

GET /users
content-type: application/json
headers:
  - authorization: accessToken

Responses

200:
[{
  "id": string,
  "firstName": string,
  "lastName": string,
  "position": string
}]


Créer un nouvel utilisateur

POST /users
content-type: application/json
headers:
  - authorization: accessToken

Payload

{
  "firstName": string,
  "lastName": string,
  "position": string
}

Responses

200:
{
  "id": string,
  "firstName": string,
  "lastName": string,
  "position": string
}

400:
{
  "error": "invalid_data",
  "message": "Data are not correct",
}


Modifier un utilisateur

PATCH /users/:id
content-type: application/json
headers:
  - authorization: accessToken

Payload

{
  "firstName": string, // nullable
  "lastName": string, // nullable
  "position": string // nullable
}

Response

200:
{
  "id": string,
  "firstName": string,
  "lastName": string,
  "position": string
}

404:
{
  "error": "user_not_found",
  "message": "User not found",
}
DELETE /users/:id
content-type: application/json
headers:
  - authorization: accessToken

201: Ok

404:
{
  "error": "user_not_found",
  "message": "User not found",
}

Error

{
  "error": string,
  "message": string
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 86.1%
  • Dockerfile 13.9%