@mugunth/m-auth
v1.0.1
Published
A secure authentication system built with Node.js, Express, and JSON Web Tokens (JWT)
Downloads
125
Maintainers
Readme
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
Install dependencies:
npm install
Install the
m-auth
package:npm i m-auth
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).Start the server:
npm run dev
API Endpoints
User Registration
- URL:
/api/auth/register
- Method:
POST
- Request Body:
{ "name": "mugunth", "email": "[email protected]", "password": "strong_password" }
- Response:
{ "user": { "_id": "user_id", "email": "[email protected]" } }
User Login
- URL:
/api/auth/login
- Method:
POST
- Request Body:
{ "email": "[email protected]", "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.