Register a new user in the system.
Request Body:
{
"username": "string",
"email": "string",
"fullname": "string",
"password": "string"
}Response:
{
"success": true,
"message": "User registered successfully",
"user": {
"id": "user_id",
"username": "username",
"email": "email",
"role": "User"
}
}Authenticate user and return access and refresh tokens.
Request Body:
{
"email": "string",
"password": "string"
}Response:
{
"success": true,
"message": "Login successful",
"accessToken": "jwt_access_token",
"refreshToken": "jwt_refresh_token",
"user": {
"id": "user_id",
"username": "username",
"email": "email",
"fullname": "fullname",
"role": "User"
}
}Refresh access token using refresh token.
Request Body:
{
"refreshToken": "jwt_refresh_token"
}Response:
{
"success": true,
"message": "Token refreshed successfully",
"accessToken": "new_jwt_access_token",
"user": {
"id": "user_id",
"username": "username",
"email": "email",
"fullname": "fullname",
"role": "User"
}
}Logout user and invalidate refresh token.
Request Body:
{
"refreshToken": "jwt_refresh_token"
}Response:
{
"success": true,
"message": "Logged out successfully"
}Get all roles (requires authentication).
Headers:
Authorization: Bearer <access_token>
Response:
[
{
"_id": "role_id",
"name": "Admin",
"permissions": [
{
"_id": "permission_id",
"name": "Manage Users",
"description": "Admin can manage users"
}
]
}
]Create a new role (requires authentication).
Headers:
Authorization: Bearer <access_token>
Request Body:
{
"name": "string",
"permissions": ["permission_id_1", "permission_id_2"]
}Get all permissions (requires authentication).
Headers:
Authorization: Bearer <access_token>
Create a new permission (requires authentication).
Headers:
Authorization: Bearer <access_token>
Request Body:
{
"name": "string",
"description": "string"
}Test endpoint for Admin role only.
Headers:
Authorization: Bearer <access_token>
Response:
{
"message": "Welcome, Admin"
}Test endpoint for User role only.
Headers:
Authorization: Bearer <access_token>
Response:
{
"message": "Welcome, User"
}All endpoints return consistent error responses:
{
"success": false,
"message": "Error description"
}Common HTTP status codes:
400- Bad Request401- Unauthorized403- Forbidden404- Not Found500- Internal Server Error
- JWT Access Tokens: Short-lived (1 day) for API access
- Refresh Tokens: Long-lived (7 days) for token renewal
- Password Hashing: bcrypt with salt rounds
- Role-Based Access Control: Granular permissions
- Token Invalidation: Secure logout mechanism