nodejs
[Gosrock/Nestjs] Guard 사용중인 Controller 내부 특정 메소드에 모든 접근 허가하기 (NoAuth)
고스락 티켓 예매 페이지 22th 의 일부인 @NoAuth 데코레이터 구현에 관한 글입니다 우선 이 글은 Nestjs 에서 AuthGuard 등의 Custom Guard 구현에 대해 알고 있다고 가정하고 작성했습니다 📝 Reference Guards - https://jakekwak.gitbook.io/nestjs/overview/guards 🔍 문제 상황 우선 고스락 티켓 프로젝트에서는 AccessTokenGuard 라는 커스텀 가드를 구현했고 이는 Role 기반으로 엑세스 토큰에서 유저와 그 권한을 뽑아와서 해당 요청 메소드에 접근 권한이 있는지 확인하고 접근 인가 / 불가 처리를 하는 것이다 자세한 것은 고티켓 팀장님의 포스팅을 참고하십쇼 https://devnm.tistory.com/16?cate..
[Gosrock/Nestjs] Socket.io 사용하여 실시간 공연 입장 시스템 구현하기
학교 컴공 밴드 동아리 고스락 여름방학 프로젝트인 고스락 티켓 예매 페이지 22th 의 일부인 socket 구현에 대한 글입니다 nestjs + socket.io 를 사용하여 구현하였습니다 📝 Reference nestjs + socket.io(EventsGateway) - https://www.youtube.com/watch?v=gkJ1N6PDCEc&t=690s chat app with nestjs - https://www.youtube.com/watch?v=7xpLYk4q0Sg&t=722s docs nest js (gateway) - https://docs.nestjs.com/websockets/gateways 💻 socket.io 모듈 설치 npm i @nestjs/websockets @nestjs..
[NestJs] 따라하면서 배우는 NestJs - 9 (로그, 설정)
✅ Logger 모듈 추가 📝./src/main.ts import { Logger } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const logger = new Logger(); const port = 3000; const app = await NestFactory.create(AppModule); await app.listen(port); logger.log(`Application running on port ${port}`); } bootstrap(); expressjs 에서는 Winston 모듈을..
[NestJs] 따라하면서 배우는 NestJs - 8 (권한 부여, 유저와 게시글 관계 부여)
✅ Boards 모듈에서 AuthGuard 사용하기 📝./src/boards/boards.module.ts import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { AuthModule } from 'src/auth/auth.module'; import { BoardRepository } from './board.repository'; import { BoardsController } from './boards.controller'; import { BoardsService } from './boards...
[NestJs] 따라하면서 배우는 NestJs - 7 (JWT, passport 이용한 인증 구현)
✅ JWT, passport 모듈 추가 npm i @nestjs/jwt @nestjs/passport passport passport-jwt --save ✔ @nestjs/jwt - nest에서 jwt를 사용하기 위한 모듈 ✔ @nestjs/passport - nest에서 passport를 사용하기 위한 모듈 ✔ passport - passport 모듈 ✔ passport-jwt - passport와 jwt를 연동하기 위한 모듈 📝./src/auth/auth.module.ts import { Module } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passpor..
[NestJs] 따라하면서 배우는 NestJs - 6 (auth 모듈 구현)
✅ 인증을 위한 auth 모듈 생성 nest g module auth nest g controller auth --no-spec nest g service auth --no-spec ✅ User Entity & Repository 구현 및 등록 📝 ./src/auth/user.entity.ts import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class User extends BaseEntity { @PrimaryGeneratedColumn() id: number; @Column() username: string; @Column() password: string; } 📝 ./src/au..
[NestJs] 따라하면서 배우는 NestJs - 5 (레포지토리 구현 및 DB 이용 CRUD)
✅ 레포지토리 의존성 주입 📝 ./src/boards/boards.service.ts import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { BoardRepository } from './board.repository'; @Injectable() export class BoardsService { constructor( @InjectRepository(BoardRepository) private boardRepository: BoardRepository, ) {} } 컨트롤러에 서비스를 주입한 것 처럼 서비스에 레포지토리를 주입해준다 여기서는 역시 생성자 주입 사용 데코레..
[NestJs] 따라하면서 배우는 NestJs - 4 (Postgres, TypeORM 적용)
✅ ORM(Object Relational Mapping) 객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결해주는 것 객체 클래스 vs 관계형 db 테이블간 불일치를 해소 ✅ Postgres, TypeORM 설치 및 적용 npm i pg typeorm @nestjs/typeorm --save pg : postgres 모듈 typeorm : TypeORM 모듈 @nestjs/typeorm : nest와 TypeORM 간의 연동 예제에서는 postgresSQL과 pgAdmin4 사용 💾 postgresSQL for MAC - https://postgresapp.com/downloads.html 💾 pgAdmin4 for MAC - https://www.pgadmin.org/download/pgad..