login-auth-services v2.4.2
Login Auth Services
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:
- 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-dbcommand - š JWT-based Authentication
- š§ Email verification & password reset using Nodemailer
- š¦ Easily Integrates with Express.js
š¦ Installation
Install via npm:
npm install login-auth-servicesor 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-dbThis 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.
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago
11 months ago