Nest.js로 LOL 팬 커뮤니티 만들어보기
MOBA장르 게임
- LOL 팬 커뮤니티 기능.
- 회원가입 / 로그인 기능
- LOL 팀 대량 생성 기능
- LOL 팬이 응원할 대상인 LOL 팀을 생성.
- 생성 기능은 운영진만 호출할 수 있게 해야함.
- 인가를 사용해 기능을 구현.
- 효율적 생성을 위해 CSV 파일을 업로드받고 한꺼번에 팀을 생성
- LOL 팀 수정 / 삭제 기능
- 팬이 응원할 팀 정보를 수정하거나 팀 자체를 삭제하는 기능.
- 운영진만 호출할 수 있는 기능.
- LOL 팀 목록 / 상세 조회 기능
- 로그인 한 유저는 존재하는 팀 목록을 볼 수 있다.
- 각 팀의 상세 정보를 간단히 볼 수 있다.
- 원하는 LOL 팀에 응원 메시지 남기기 기능
- 로그인 한 유저라면 누구나 원하는 팀에 자유롭게 응원 메시지를 남길 수 있다.
- 응원 메시지 수정 / 삭제 기능
- 로그인 한 유저라면 본인이 작성한 응원 메시지에 한해서 수정 및 삭제를 할 수 있다.
_________________
환경설정
nest new lol_fan_community #npm
cd lol_fan_community
npm i @nestjs/config @nestjs/jwt @nestjs/passport passport passport-jwt @types/passport-jwt typeorm @nestjs/typeorm mysql2 multer bcrypt @types/bcrypt class-validator class-transformer multer @types/multer papaparse @types/papaparse joi typeorm-naming-strategies lodash @types/lodash
code .
tsconfig.json파일에
"esModuleInterop": true 항목을 추가
cd src
#유저 모듈, 서비스, 컨트롤러 생성하기
nest g mo auth
nest g mo user
nest g s user
nest g co user
#팀 모듈, 서비스, 컨트롤러 생성
nest g mo team
nest g s team
nest g co team
#응원 메시지 모듈, 서비스, 컨트롤러 생성
nest g mo supportMessage
nest g s supportMessage
nest g co supportMessage
# 빌드, 실행은 "tsconfig.json"파일이 있는 곳에서 하기
nest build
npm run start
__________________
참고 : authorization(어써라이제이션)
Passport는 인증 메커니즘을 캡슐화하고, 다양한 인증 전략을 사용하여 애플리케이션을 쉽게 확장할 수 있도록 돕는 모듈 기반의 유연한 인증 프레임워크
구글 및 네이버, 카카오와 같은 소셜 로그인도 추가하기
- `PassportModule.register({ defaultStrategy: 'jwt', session: false })`라는 코드에 주목해주세요.
- 이 Passport의 기본 전략은 당연히 jwt여야 합니다.
- JWT 인증은 stateless 인증 메커니즘이기 때문에 session은 false로 설정해주셔야 합니다.
________________
테스트
________
sample.csv 파일
name,description
GEN,한국롤팀
JDG,중국롤팀
________
mysql로 db lol 만들기
CREATE DATABASE lol
DEFAULT CHARACTER SET = 'utf8mb4';
__________________
.env 파일
DB_HOST="localhost"
DB_PORT=3306
DB_USERNAME="root"
DB_PASSWORD="aaaa1234"
DB_NAME="lol"
DB_SYNC=true
JWT_SECRET_KEY="hellosparta"
_____________________________
필드가 기억나지 않으면 app.module.ts의
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
validationSchema: Joi.object({
여기참고
}),}),]})
DB_SYNC 가 true여야 db가 생성됨
db 생성 후에는 false로 바꾸기
질문하기