반응형
1. 개요
- 지금까지 Backend개발을 하기위한 대략적인 프레임워크 작업을 완료하였다.
- 회원가입까지 완료한 소스 제공한다. 필요하신분은 다운로드해서 사용하길 바란다.
- 개발소스 : backend.zip
- nestjs + typeorm backend 로 1~10편까지 작성되어있다. 필요한 부분은 찾아서 보길 바란다.
2. 회원가입
- Postman에서 실행한 결과 화면이다.
3. 회원가입로직
- 암호화 패키지설치
# bcrypt 패키지 설치
$ npm install --save bcrypt @types/bcrypt
- auth 모듈설치
nest g module auth
nest g service auth
- src > auth > auth.controller.ts
// auth.controller.ts
import {
Body,
Controller,
Post,
Req,
Logger,
UseFilters,
} from '@nestjs/common';
import { CreateUserDto } from '../user/dto/create-user.dto';
import { AuthService } from './auth.service';
import { CustomExceptionFilter } from '../common/exception/custom-exception';
@Controller('auth')
export class AuthController {
private readonly logger = new Logger(AuthController.name);
constructor(private readonly authService: AuthService) {}
@Post('/signup')
@UseFilters(CustomExceptionFilter)
async signUp(
@Req() req: Request,
@Body() createUserDto: CreateUserDto,
): Promise<any> {
return await this.authService.signUp(createUserDto);
}
}
- src > auth > auth.service.ts
// auth.service.ts
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
import { UserService } from '../user/user.service';
import { CreateUserDto } from '../user/dto/create-user.dto';
@Injectable()
export class AuthService {
constructor(private userService: UserService) {}
async signUp(user: CreateUserDto): Promise<CreateUserDto> {
let dbUser: CreateUserDto = await this.userService.findOne(user.userid);
if (dbUser) {
throw new HttpException('userid aleady used', HttpStatus.BAD_REQUEST);
}
return await this.userService.create(user);
}
}
- user.service.ts
// user.service.ts 일부분
async create(dto: CreateUserDto) {
const hashedPassword = await this.hashPassword(dto.userpw);
const user = new User(
dto.userid,
hashedPassword,
dto.usernm,
dto.emailadres,
dto.mbtlno,
dto.age,
);
return this.userRepository.save(user);
}
async hashPassword(userpw: string): Promise<string> {
const saltRounds = 10;
const salt = await bcrypt.genSalt(saltRounds);
const hashedPassword = await bcrypt.hash(userpw, salt);
return hashedPassword;
}
async comparePasswords(
userpw: string,
hashedPassword: string,
): Promise<boolean> {
return await bcrypt.compare(userpw, hashedPassword);
}
4. 완료
- 1편부터 10편까지 실무에서 사용할수 있을만한 nestjs + typeorm3 최신버전으로 백엔드 서버를 만들어 보았다.
- 대략 nestjs를 접한지 3주정도 된것 같다. 아직 전문적이지는 않지만 많은 도움이 되길 바란다.
반응형
'개발 > nest.js' 카테고리의 다른 글
[nvm] node : nvm : 설치 및 여러버전관리 (윈도우,리눅스) (0) | 2023.08.18 |
---|---|
nestjs + typeorm backend JWT 로그인 / 소스포함 (0) | 2023.03.30 |
nestjs + typeorm backend helmet사용 (9) (0) | 2023.03.28 |
nestjs + typeorm backend csrf처리 (8) (0) | 2023.03.27 |
nestjs + typeorm backend 예외처리 (7) (0) | 2023.03.24 |