login-auth-services
TypeScript icon, indicating that this package has built-in type declarations

2.4.2 • Public • Published

Login Auth Services

npm license

Login Auth Services is a robust authentication package supporting multiple OAuth providers (Google, GitHub, Microsoft, and Okta) with multi-factor authentication (OTP). It also includes a sync-db command to synchronize your database schema using TypeORM.

🚀 Features

  • 🔒 OAuth Authentication for:
    • Google
    • GitHub
    • Microsoft
    • Okta
  • 🔑 Multi-Factor Authentication (MFA) using One-Time Password (OTP)
  • 🛠 Database Agnostic - Works with any database supported by TypeORM
  • 🔄 Database Synchronization via sync-db command
  • 🔐 JWT-based Authentication
  • 📧 Email verification & password reset using Nodemailer
  • 📦 Easily Integrates with Express.js

📦 Installation

Install via npm:

npm install login-auth-services

or using yarn:

yarn add login-auth-services

📌 TypeORM & Database Setup

This package uses TypeORM for database interactions. You can use any relational database (MySQL, PostgreSQL, SQLite, etc.).

1️⃣ Configure database.config.ts

Create a database.config.ts file to configure TypeORM's DataSource:

import { DataSource } from "typeorm";
import dotenv from "dotenv";

dotenv.config();

export const AppDataSource = new DataSource({
  type: process.env.DATABASE_TYPE as any,
  host: process.env.DATABASE_HOST,
  port: Number(process.env.DATABASE_PORT),
  username: process.env.DATABASE_USERNAME,
  password: process.env.DATABASE_PASSWORD,
  database: process.env.DATABASE_NAME,
  synchronize: false, // Use sync-db instead
  logging: false,
  entities: ["src/entity/*.ts"],
});

AppDataSource.initialize()
  .then(() => console.log("Database connected"))
  .catch((err) => console.error("Database connection failed", err));

2️⃣ Define Entities

Entities define the database structure. Example User entity:

import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  email: string;

  @Column()
  password: string;
}

🔄 Sync Database

This package includes a sync-db command to synchronize your database schema with TypeORM entities.

Running sync-db

Run the following command to apply migrations and synchronize the database:

npx sync-db

This will automatically update the database schema based on TypeORM entities. Ensure synchronize is disabled in database.config.ts to avoid conflicts.


🔑 Authentication Usage

Google OAuth Login

import { GoogleAuthService } from "login-auth-services";

const googleAuth = new GoogleAuthService({
  clientId: "your-client-id",
  clientSecret: "your-client-secret",
  redirectUri: "your-redirect-uri",
});

app.get("/auth/google", async (req, res) => {
  const url = googleAuth.getAuthUrl();
  res.redirect(url);
});

app.get("/auth/google/callback", async (req, res) => {
  const token = await googleAuth.getAccessToken(req.query.code);
  res.json(token);
});

GitHub OAuth Login

import { GitHubAuthService } from "login-auth-services";

const githubAuth = new GitHubAuthService({
  clientId: "your-client-id",
  clientSecret: "your-client-secret",
  redirectUri: "your-redirect-uri",
});

app.get("/auth/github", async (req, res) => {
  const url = githubAuth.getAuthUrl();
  res.redirect(url);
});

app.get("/auth/github/callback", async (req, res) => {
  const token = await githubAuth.getAccessToken(req.query.code);
  res.json(token);
});

📧 Email Verification & Password Reset

Send Verification Email

import { sendVerificationEmail } from "login-auth-services";

await sendVerificationEmail(user.email, user.verificationCode);

📌 Custom Login Authentication

Register User

import { registerUser } from "login-auth-services";

const user = await registerUser({
  email: "user@example.com",
  password: "securepassword",
});

Login User

import { loginUser } from "login-auth-services";

const token = await loginUser({
  email: "user@example.com",
  password: "securepassword",
});

Verify OTP for Multi-Factor Authentication

import { verifyOTP } from "login-auth-services";

const isValid = await verifyOTP({
  email: "user@example.com",
  otp: "123456",
});

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙌 Contributions

Contributions, issues, and feature requests are welcome! Feel free to fork, submit PRs, or open issues on GitHub.


📝 Author

Harshil Patel
📧 Email: [harshilpatel29072003@gmail.com]


This README includes TypeORM configuration, database synchronization with sync-db, and entity setup.

Package Sidebar

Install

npm i login-auth-services

Weekly Downloads

4

Version

2.4.2

License

MIT

Unpacked Size

72.2 kB

Total Files

46

Last publish

Collaborators

  • harshilpatel2907