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.
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago