1.0.1 • Published 1 year ago
@mugunth/m-auth v1.0.1
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.gitInstall dependencies:
npm installInstall the
m-authpackage:npm i m-authSet environment variables: Copy the example environment file:
cp .env.example .envUpdate the
.envfile with your configuration (e.g., JWT secret, database URL).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.