Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/namish18/smartshelf/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Authentication API provides endpoints for user registration, login, logout, and profile management. Most endpoints require JWT authentication via cookies or Authorization header.

Register User

Create a new user account. Access: Public

Request Body

name
string
required
User’s full name
email
string
required
User’s email address (will be converted to lowercase)
password
string
required
User’s password (minimum 6 characters)
role
string
User role: Admin, Manager, or Worker (defaults to Worker)

Response

success
boolean
Indicates if the request was successful
message
string
Response message
data
object
user
object
_id
string
User ID
name
string
User’s name
email
string
User’s email
role
string
User’s role
isActive
boolean
Account status
token
string
JWT authentication token

Example Request

{
  "name": "John Doe",
  "email": "john@example.com",
  "password": "securepass123",
  "role": "Worker"
}

Example Response

{
  "success": true,
  "message": "User registered successfully",
  "data": {
    "user": {
      "_id": "65a1234567890abcdef12345",
      "name": "John Doe",
      "email": "john@example.com",
      "role": "Worker",
      "isActive": true
    },
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  }
}

Login User

Authenticate and login a user. Access: Public

Request Body

email
string
required
User’s email address
password
string
required
User’s password

Response

Same structure as register endpoint.

Example Request

{
  "email": "john@example.com",
  "password": "securepass123"
}

Example Response

{
  "success": true,
  "message": "Login successful",
  "data": {
    "user": {
      "_id": "65a1234567890abcdef12345",
      "name": "John Doe",
      "email": "john@example.com",
      "role": "Worker",
      "isActive": true
    },
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  }
}

Logout User

Logout the current user by clearing the authentication cookie. Access: Private (requires authentication)

Response

{
  "success": true,
  "message": "Logout successful",
  "data": null
}

Get Current User

Get the profile of the currently authenticated user. Access: Private (requires authentication)

Response

success
boolean
Indicates if the request was successful
message
string
Response message
data
object
user
object
User object with id, name, email, role, and isActive fields

Example Response

{
  "success": true,
  "message": "User profile fetched successfully",
  "data": {
    "user": {
      "_id": "65a1234567890abcdef12345",
      "name": "John Doe",
      "email": "john@example.com",
      "role": "Worker",
      "isActive": true
    }
  }
}

Update Profile

Update the current user’s name and/or email. Access: Private (requires authentication)

Request Body

name
string
New name (optional)
email
string
New email address (optional, must be unique)

Example Request

{
  "name": "John Smith",
  "email": "johnsmith@example.com"
}

Example Response

{
  "success": true,
  "message": "Profile updated successfully",
  "data": {
    "user": {
      "_id": "65a1234567890abcdef12345",
      "name": "John Smith",
      "email": "johnsmith@example.com",
      "role": "Worker",
      "isActive": true
    }
  }
}

Change Password

Change the current user’s password. Access: Private (requires authentication)

Request Body

currentPassword
string
required
User’s current password
newPassword
string
required
New password (minimum 6 characters)

Example Request

{
  "currentPassword": "securepass123",
  "newPassword": "newsecurepass456"
}

Example Response

{
  "success": true,
  "message": "Password changed successfully",
  "data": null
}

Error Responses

All authentication endpoints may return the following error responses:

400 Bad Request

{
  "success": false,
  "message": "Please provide all required fields"
}

401 Unauthorized

{
  "success": false,
  "message": "Invalid email or password"
}

403 Forbidden

{
  "success": false,
  "message": "Your account has been deactivated. Please contact admin."
}

500 Internal Server Error

{
  "success": false,
  "message": "Error during login"
}