1.0.1 • Published 1 year ago

@mugunth/m-auth v1.0.1

Weekly downloads
-
License
GNU
Repository
-
Last release
1 year ago

Here's an expanded README.md file for your authentication system, including installation with m-auth:

# Authentication System

## Overview
This authentication system provides a secure way to manage user registration, login, and protected routes using JSON Web Tokens (JWT).

## Features
- User registration with email and password
- User login with email and password
- Token-based authentication using JWT
- Protected routes with authentication guard
- Error handling and logging

## Dependencies
- **express**: Node.js web framework
- **jsonwebtoken**: JWT implementation
- **bcrypt**: Password hashing
- **mongoose**: MongoDB ORM

## Installation

1. **Clone the repository:**
   ```bash
   git clone https://github.com/Mugunth140/MAuth.git
  1. Install dependencies:

    npm install
  2. Install the m-auth package:

    npm i m-auth
  3. Set environment variables: Copy the example environment file:

    cp .env.example .env

    Update the .env file with your configuration (e.g., JWT secret, database URL).

  4. Start the server:

    npm run dev

API Endpoints

User Registration

  • URL: /api/auth/register
  • Method: POST
  • Request Body:
    {
      "name": "mugunth",
      "email": "mugunth@mugunth.me",
      "password": "strong_password"
    }
  • Response:
    {
      "user": {
        "_id": "user_id",
        "email": "user@example.com"
      }
    }

User Login

  • URL: /api/auth/login
  • Method: POST
  • Request Body:
    {
      "email": "user@example.com",
      "password": "your_password"
    }
  • Response:
    {
      "token": "jwt_token"
    }

Protected Route

  • URL: /api/protected
  • Method: GET
  • Request Header:
    • Authorization: Bearer <token>
  • Response:
    {
      "message": "Protected content"
    }

Error Handling

  • Validation Errors: 400 Bad Request
  • Authentication Errors: 401 Unauthorized
  • Internal Server Errors: 500 Internal Server Error

Security Considerations

  • Use bcrypt for secure password hashing.
  • Keep the JWT secret key secure.
  • Validate all user inputs to prevent attacks.
  • Use HTTPS in production for secure data transmission.

Database Schema

User Model

  • name: String
  • email: String
  • password: String (hashed)

Code Structure

  • server.js: Main server file.
  • routes/: Route files.
  • auth/: Authentication files.
  • models/: Database model files.

License

This project is licensed under the GNU General Public License v3.0.

Author

Mugunth140

Acknowledgments

  • Thanks to OWASP for security guidelines.
  • The open-source community for best practices.