Learn to create authentication with express js
git clone [email protected]:sugiartofahmi/express-refresh-token.git
yarn
yarn dev
-
ENV
- rename .env-example to .env
- change value on env
PORT, DB_URL and JWT_SECRET
example :
PORT = 9000
DB_URL = mongodb+srv://<username>:<password>@cluster0.8lcu8fs.mongodb.net/my-db
JWT_SECRET = jwtscrect
Endpoint : POST /auth/register
Request Body :
{
"email": "[email protected]",
"password": "passwordmu",
"name": "Nama Kamu"
}
Response Body Success :
{
"status": "success",
"user": {
"_id": "id",
"name": "Nama Kamu",
"email": "[email protected]"
}
}
Response Body Error :
{
"status": "failed",
"message": "email already exist, please login"
}
{
"status": "failed",
"message": "password not match"
}
Endpoint : POST /auth/login
Request Body :
{
"email": "[email protected]",
"password": "passwordmu"
}
Response Body Success :
{
"status": "success",
"user": {
"_id": "id",
"name": "Nama Kamu",
"email": "[email protected]"
},
"token": {
"access_token": "unique-token",
"refresh_token": "unique-token"
}
}
Response Body Error :
{
"status": "failed",
"message": "account not found"
}
{
"status": "failed",
"message": "Wrong password"
}
Endpoint : POST /auth/refresh
Request Body :
{
"refresh_token": "unique-token"
}
Response Body Success :
{
"status": "success",
"access_token": "unique-token"
}
Response Body Error :
{
"status": "failed",
"message": "Token is not valid"
}
Endpoint : GET /user/me
Headers :
- Authorization :Bearer token
Response Body Success:
{
"status": "success",
"user": {
"_id": "id",
"name": "Nama Kamu",
"email": "[email protected]"
}
}
Response Body Error :
{
"status": "failed",
"message": "Token is not valid"
}
Endpoint : POST /auth/logout
Request Body :
{
"refresh_token": "unique-token"
}
Response Body Success:
{
"status": "success",
"message": "Logged Out Sucessfully"
}
Response Body Error :
{
"status": "failed",
"message": "Invalid token"
}