๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[Nest JS ๋กœ CRUD ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ] (29) ์ปค์Šคํ…€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ƒ์„ฑํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿ‘ฉ‍๐Ÿ’ป ๋ฐฑ์—”๋“œ(Back-End)/Nest js

[Nest JS ๋กœ CRUD ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ] (29) ์ปค์Šคํ…€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ƒ์„ฑํ•˜๊ธฐ

์ง•์ง•์•ŒํŒŒ์นด 2023. 6. 9. 11:16
728x90
๋ฐ˜์‘ํ˜•

<๋ณธ ๋ธ”๋กœ๊ทธ๋Š” John Ahn ์˜ ์œ ํŠœ๋ธŒ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :-)>

=> ๋”ฐ๋ผํ•˜๋ฉด์„œ ๋ฐฐ์šฐ๋Š” NestJS

 

๐Ÿงธ ์ปค์Šคํ…€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ƒ์„ฑํ•˜๊ธฐ 

๐ŸŽ€ get-decorator.ts

import { ExecutionContext, createParamDecorator } from "@nestjs/common";
import { User } from "./user.entity";

// ์ปค์Šคํ…€ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ƒ์„ฑํ•จ
// req.user ๊ฐ€ ์•„๋‹Œ user ํŒŒ๋ผ๋งˆํ‹ฐ๋กœ ๋ฐ”๋กœ ์œ ์ € ๊ฐ์ฒด ๊ฐ–๊ณ  ์˜ค๊ธฐ
export const GetUser = createParamDecorator((data, ctx: ExecutionContext): User => {
    const req = ctx.switchToHttp().getRequest();
    return req.user;

})

 

๐ŸŽ€ auth.controller.ts

import { Body, Controller, Post, Req, UseGuards, ValidationPipe } from '@nestjs/common';
import { AuthService } from './auth.service';
import { AuthCredentialsDto } from './dto/auth-credential.dto';
import { AuthGuard } from '@nestjs/passport';
import { GetUser } from './get-decorator';
import { User } from './user.entity';

@Controller('auth')
export class AuthController {
    constructor( private authService: AuthService) {}
    
    // localhost:3000/auth/signUp
    @Post("/signup")
    // ValidationPipe : ์š”์ฒญ์ด ์ปจํŠธ๋กค๋Ÿฌ์— ์žˆ๋Š” ํ•ธ๋“ค๋Ÿฌ๋กœ ๋“ค์–ด์™”์„ ๋•Œ Dto ์— ์žˆ๋Š” ์œ ํšจ์„ฑ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ฒดํฌ
    signUp(@Body(ValidationPipe) authCredentialsDto: AuthCredentialsDto): Promise<void> {
        return this.authService.signUp(authCredentialsDto);
    }
    
    // ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
    @Post("/signin")
    signIn(@Body(ValidationPipe) authCredentialsDto: AuthCredentialsDto): Promise<{accessToken: string}> {
        return this.authService.signIn(authCredentialsDto);
    }

    // TEST
    @Post("/authTest")
    // ์ธ์ฆ ๋ฏธ๋“ค์›จ์–ด
    // ์ง€์ •๋œ ๊ฒฝ๋กœ๋กœ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ๊ณผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ์„ ์„œ๋ฒ„์— ์•Œ๋ ค์คŒ
    @UseGuards(AuthGuard())
    test(@GetUser() user: User) {
        console.log("user", user);
    }

}
728x90
๋ฐ˜์‘ํ˜•
Comments