@an_average_coder/auth_package

1.1.3 • Public • Published

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": "test@example.com",
"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.

Dependencies (6)

Dev Dependencies (3)

Package Sidebar

Install

npm i @an_average_coder/auth_package

Weekly Downloads

9

Version

1.1.3

License

ISC

Unpacked Size

17.4 kB

Total Files

11

Last publish

Collaborators

  • an_average_coder