Skip to main content
Version: v0.16

Local Authentication

Local authentication uses email/password credentials and is enabled by default.

Overview

  • Email-based user identification
  • Optional email verification
  • Password reset functionality
  • JWT token-based sessions

User Registration

curl -X POST 'http://localhost:3000/authentication/local/new' \
-H 'Content-Type: application/json' \
-d '{
"email": "user@example.com",
"password": "securePassword123"
}'

Response:

{
"user": {
"email": "user@example.com",
"active": true,
"isVerified": false,
"_id": "..."
}
}

Login

curl -X POST 'http://localhost:3000/authentication/local' \
-H 'Content-Type: application/json' \
-d '{
"email": "user@example.com",
"password": "securePassword123"
}'

Response:

{
"userId": "...",
"accessToken": "eyJhbGciOiJIUzI1NiIs...",
"refreshToken": "aDYLqHPw6yK+GTNsWApA..."
}

Token Usage

Include the access token in subsequent requests:

curl -X GET 'http://localhost:3000/protected-route' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Token Refresh

Access tokens expire. Use the refresh token to get new tokens:

curl -X POST 'http://localhost:3000/authentication/renew' \
-H 'Authorization: Bearer YOUR_REFRESH_TOKEN'
caution

Refreshing tokens invalidates the previous token pair.

Password Reset Flow

1. Request Reset

curl -X POST 'http://localhost:3000/authentication/forgot-password' \
-H 'Content-Type: application/json' \
-d '{"email": "user@example.com"}'

2. Reset Password

curl -X POST 'http://localhost:3000/authentication/reset-password' \
-H 'Content-Type: application/json' \
-d '{
"passwordResetToken": "token-from-email",
"password": "newSecurePassword"
}'

Email Verification

Resend Verification

curl -X POST 'http://localhost:3000/authentication/local/resend-verification' \
-H 'Content-Type: application/json' \
-d '{"email": "user@example.com"}'

Verify Email

User clicks link in email, which calls:

GET /hook/authentication/verify-email/{token}

Account Management

Change Email

curl -X POST 'http://localhost:3000/authentication/local/change-email' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"newEmail": "newemail@example.com"}'

Change Password

curl -X POST 'http://localhost:3000/authentication/local/change-password' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"oldPassword": "currentPassword",
"newPassword": "newPassword123"
}'

Logout

curl -X POST 'http://localhost:3000/authentication/logout' \
-H 'Authorization: Bearer YOUR_TOKEN'