@an_average_coder/auth_package
v1.1.3
Published
login and signup feature
Downloads
11
Readme
MERN Authentication System
A flexible and dynamic authentication system for MERN stack applications. This package provides an easy-to-use solution for user signup and login, allowing you to define custom user fields and integrate with MongoDB seamlessly.
Features
- User signup and login
- Dynamic user schema
- Secure password hashing
- JSON Web Token (JWT) authentication
- Easy integration with MongoDB
Installation
npm install @an_average_coder/auth_package
Configuration
Create a configs.json file to define your user schema fields:
{
"userSchema": {
"firstName": {
"type": "String",
"required": true,
"minLength": 1,
"maxLength": 50
},
"middleName": {
"type": "String",
"required": false,
"minLength": 1,
"maxLength": 50
},
"lastName": {
"type": "String",
"required": true,
"minLength": 1,
"maxLength": 50
},
"email": {
"type": "String",
"required": true,
"minLength": 1,
"maxLength": 50
},
"password": {
"type": "String",
"required": true,
"minLength": 1,
"maxLength": 50
},
"username": {
"type": "String",
"required": true,
"minLength": 1,
"maxLength": 50
},
"name": {
"type": "String",
"required": false,
"minLength": 1,
"maxLength": 50
}
},
"saltRound": 10,
"cookieConfig": {
"httpOnly": true
}
}
Set up environment variables in a .env file:
- MONGO_URI=your_mongo_db_uri
- ACCESS_TOKEN_SECRET="your_secret",
- REFRESH_TOKEN_SECRET="your_refresh_token_secret",
- ACCESS_TOKEN_EXPIRY="1h",
- REFRESH_TOKEN_EXPIRY="7d"
Usage
Here's an example of how to use this package in your MERN stack project:
Setup Express App
const express = require('express');
const authSystem = require('@an_average_coder/auth_package');
require('dotenv').config();
const app = express();
app.use(express.json());
app.use('/auth', authSystem);
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Signup
Send a POST request to /auth/signup with the following JSON body:
{
"firstName": "Test",
"lastName", "User"
"username": "testuser",
"password": "testpassword",
"email": "[email protected]",
"age": 30
}
Login
Send a POST request to /auth/login with the following JSON body:
{
"username": "testuser",
"password": "testpassword"
}
Protecting Routes using Middleware
const express = require('express');
const authSystem = require('@an_average_coder/auth_package');
const { authMiddleware } = require('@an_average_coder/auth_package');
require('dotenv').config();
const app = express();
app.use(express.json());
app.use('/auth', authSystem);
app.get('/protected', authMiddleware, (req, res) => {
res.send('This is a protected route');
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
Testing
To run tests, use the following command:
- npx jest
Changelog
- All notable changes to this project are documented in Changelog.