nestjs-auth-service
v1.0.0
Published
Reusable NestJS authentication module with JWT, TypeORM, and bcrypt.
Readme
Auth Service
Reusable NestJS authentication module with JWT, TypeORM, and bcrypt.
Installation
npm install path/to/auth-service-1.0.0.tgzQuick Setup
1. Create User Entity
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity('users')
export class UserEntity {
@PrimaryGeneratedColumn({ name: 'id' })
userId: number; // Required
@Column({ unique: true, name: 'email' })
emailId: string; // Required
@Column({ name: 'password' })
password: string; // Required
// Add your custom fields
@Column({ nullable: true, name: 'first_name' })
firstName?: string;
}2. Configure App Module
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AuthModule } from 'auth-service';
import { UserEntity } from './entities/user.entity';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'postgres',
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
entities: [UserEntity],
synchronize: false,
}),
AuthModule.forRoot({
userEntity: UserEntity,
jwtSecret: process.env.JWT_SECRET,
refreshSecret:process.env.JWT_REFRESH_SECRET || process.env.JWT_SECRET
jwtExpiration: '1h',
refreshTokenExpiration: '7d',
}),
],
})
export class AppModule {}API Endpoints
| Method | Endpoint | Auth Required |
|--------|----------|---------------|
| POST | /auth/register | No |
| POST | /auth/login | No |
| GET | /auth/profile | Yes |
| GET | /auth/refresh | Yes (refresh token) |
| POST | /auth/logout | Yes |
Usage
Protect Routes
import { Controller, Get, UseGuards } from '@nestjs/common';
import { AuthGuard } from 'auth-service';
@Controller('products')
export class ProductsController {
@Get()
@UseGuards(AuthGuard)
getProducts(@Request() req) {
return { userId: req.user.userId };
}
}Use Services
import { Injectable } from '@nestjs/common';
import { AuthService } from 'auth-service';
@Injectable()
export class MyService {
constructor(private authService: AuthService) {}
async createUser(email: string, password: string) {
return this.authService.createUserAccount({ email, password });
}
}Environment Variables
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=password
DB_NAME=myapp
JWT_SECRET=your-secret-key
JWT_EXPIRATION=1h
JWT_REFRESH_EXPIRATION=7dExports
import {
AuthModule,
AuthService,
AuthRepository,
AuthGuard,
AuthDto,
AuthModuleConfig,
} from 'auth-service';License
MIT
