Closed loveAlakazam closed 6 months ago
@lullaaaby13
model User {
id Int @id @default(autoincrement()) // PK
...
role Role @default(USER)
...
}
enum Role {
USER
ADMIN
}
동성님이 이슈코멘트에서 언급해주셨듯이, 회원을 구분하도록 수정하였습니다. enum Role 을 추가하였고, default값으로는 일반유저 USER 로 해놨습니다.
이슈코멘트에서도 언급해주셨듯이, 관리자 회원은 모든 API에 접근이 가능하도록 수정했습니다.
관리자와 일반유저의 차이점은 2가지 입니다. | 권한 | 관리자 | 일반유저 |
---|---|---|---|
account | admin-{고유-계정문자열} |
k-{카카오유저고유값} , g-{구글유저고유값} , a-{애플유저고유값} |
|
role | ADMIN |
USER |
context의 request.user을 파싱하여 role이 ADMIN 이면 통과하는 커스텀 가드를 생성했습니다. 추후 백오피스 컨트롤러에 적용하시면 됩니다!
import { Body, Controller, Param, ParseIntPipe, Patch, Post, UseGuards } from "@nestjs/common";
import { AdminGuard } from "src/guards/admin-auth.guard";
@UseGuards(AdminGuard)
@Controller("cities")
@ApiTags("백오피스 API - 도시")
export class BackOfficeCityController {
...
}
일반회원 연동로그인에서 해당계정이 트래즐DB에 존재하지않은경우에는 회원가입으로 DB에 신규회원 데이터로우를 생성
만일 기존에 있는 유저라면 로그인 절차를 밟는다.
관리자 회원의경우에는 소셜로그인 형태가 아니라서 account의 중복여부확인하여 이미 가입된 account가 존재하면 409 예외를 발생시키도록한다.
커스텀 데코레이터 BeaererAuth(AdminGuard)
로 대체
@lullaaaby13 AdminBearerAuth 를 생성함으로써 ADMIN인 유저만을 통과시키도록하는 가드 생성완료하였습니다!
그리고 새로운 이슈파서 관리자API 에서 미완성된 관리자 목록조회/정보조회/수정/삭제 내부로직 작성해놓겠습니다.
코멘트 확인하시고 아래 머지해주시면 감사하겠습니다!
⛳️ 기능 구현 배경
백오피스 API 를 접근하기위한 관리자 계정 필요.
관리자계정은 백오피스 API에 접근이 가능합니다.
그러나 일반API에 접근은 불가능합니다.
🧐 기능 구현 내용(Optional)
AdminGuard 생성 Admin 계정 생성 (user.account가
admin-{값}
형태로 되어있음)관리자계정의 생성은 body에서 입력을 받으면됩니다.
📭 이슈 번호
15