[NestJS] Role Guard 만들기 + (Passport ~ JWT Guard ~ Role Guard Flow 정리)
·
📁Back-end/Nest.js
NestJS RBAC 구현 상세 가이드: 인증(JWT)부터 인가(Role Guard)까지 파이프라인 분석1. 하나의 큰 흐름 정리: 인증과 인가 파이프라인RBAC 시스템은 요청이 Controller에 도달하기 전에 **인증(JwtAuthGuard)**과 **인가(RolesGuard)**의 두 단계를 순차적으로 거치는 파이프라인으로 동작한다.단계구성 요소핵심 역할데이터 흐름인증 (Authentication)JwtAuthGuard -> JwtStrategy사용자 식별 및 request.user 객체 생성.JWT Payload를 DB 조회하여 Role 정보를 포함한 객체를 request.user에 할당.인가 (Authorization)RolesGuard접근 권한 확인 및 제어.라우트의 필수 역할과 reques..
[SQL] 프로그래머스, 오랜 기간 보호한 동물(1)
·
📁SQL/SQL
문제보호소에 들어온 동물의 목록을 담은 테이블(ANIMAL_INS)과 보호소에서 입양을 보낸 동물의 목록을 담은 테이블(ANIMAL_OUTS)이 주어진다.이 때, 입양을 가지 못한 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해야 한다.과정문제를 정리해보면 '입양을 가지 못한 동물'은 ANIMAL_INS 테이블에는 있지만 ANIMAL_OUTS 테이블에는 없는 동물이다.즉, AIMAL_INS - ANIMAL_OUTS 집합이라고 할 수 있다. 이를 표현하자면 LEFT JOIN으로 ANIMAL_INS 집합을 추려내고, WHERE 조건을 통해 교집합 부분을 빼줄 수 있다.결과SELECT I.NAME, I.DATETIMEFROM ANIMAL_INS ILEFT J..
[Python] 백준 1764번, 듣보잡
·
📁Algorithm/Algorithm
문제김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.과정문제에서1) 들어보지 못한 사람2) 본 적 없는 사람의 두 집단의 교집합을 구하라고 했기 때문에,들어보지 못한 사람의 list를 만들고 본적 없는 사람의 명단을 for문을 돌려서 겹치는 부분이 있으면 듣보잡으로 구분했다.import sysinput = sys.stdin.readlinen,m = map(int,input().split())not_heard_set = set()for _ in range(n) : not_heard_name = input().rstrip() not_heard_set.add(not_heard_name)result = []for _ ..
[Python] 백준 1764번, 듣보잡
·
📁Algorithm/Algorithm
문제김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.과정문제에서1) 들어보지 못한 사람2) 본 적 없는 사람의 두 집단의 교집합을 구하라고 했기 때문에,들어보지 못한 사람의 list를 만들고 본적 없는 사람의 명단을 for문을 돌려서 겹치는 부분이 있으면 듣보잡으로 구분했다.import sysinput = sys.stdin.readlinen,m = map(int,input().split())not_heard_set = set()for _ in range(n) : not_heard_name = input().rstrip() not_heard_set.add(not_heard_name)result = []for _ ..
[Python] 백준 10816번 숫자카드2
·
📁Algorithm/Algorithm
문제넷 째 줄에 입력된 카드를 상근이가 몇 개씩 가지고 있는지 출력해야 하는 문제이다. 과정문제에서 두 개의 리스트가 나오기 때문에 다음과 같은 방향으로 풀어야겠다고 생각했다.1. 상근이가 가지고 있는 카드 묶음을 'list -> map'으로 변환해준 뒤 나온 카드의 숫자만큼 count 해줌2. 두 번째 카드 묶음을 반복문을 돌려 각 카드가 상근이의 카드 묶음에서 몇 개나 존재하는지를 파악 그런데 문제를 푸는 과정에서 다음의 코드가 오류날 가능성이 있었다.for num in my_list: if my_map[num] : my_map[num] = my_map[num] + 1 else : my_map[num] = 1내가 의도한 방향으로는 my_map이라는 map 안에 num이라는 k..
[MySQL] 컬럼 별칭 참조하기
·
📁SQL/SQL
문제프로그래머스 '진료과별 총 예약 횟수 출력하기'에서 SELECT에 정의된 컬럼 별칭을 ORDER BY의 정렬에 써야했다. 과정보통은 상단에 정의된 컬럼 별칭을 사용하려고 할 때 다음과 같이 쓰려고 할 것이다.ORDER BY '5월예약건수', '진료과코드' 하지만 이런식으로 사용하면 안된다.GROUP BY, ORDER BY, HAVING 절에 별칭을 사용할 경우1) 별칭을 그대로 써주거나2) 별칭을 백틱(``)에 감싸서 써줘야 한다. -- 올바른 답안 1 --ORDRE BY 5월예약건수, 진료과코드-- 올바른 답안 2--ORDER BY `5월예약건수`,`진료과코드`
[MySQL] 중성화 여부 파악하기(프로그래머스)
·
📁SQL/SQL
문제보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이 때 중성화가 되어있다면 'O', 아니라면 'X'를 표시해주세요.과정한 컬럼에서 중성화가 되었다면 'O', 아니면 'X' 라는 두 가지 선택지가 있기 때문에1) CASE WHEN문을 이용하여 풀기2) IF문을 이용하여 풀기위 두 가지 풀이를 생각했다. 1) CASE WHENSELECT ANIMAL_ID, NAME, CASE WHEN (SEX_UPON_INTAKE LIKE '%Neutered%') OR (SEX_UPON_IN..
[MySQL] 중복 제거하기
·
📁SQL/SQL
🔥문제프로그래머스 '중복 제거하기' 문제 🔥과정기본형-- 중복제거DISTINCT 컬럼명SELECT COUNT(DISTINCT NAME)FROM ANIMAL_INSWHERE NAME IS NOT NULL
[MySQL] Datetime 타입을 특정 형태로 변환하기
·
📁SQL/SQL
🔥 문제프로그래머스 'Datetime에서 date로 형 변환'Datetime 타입에서 특정한 타입으로 변환시켜야 하는 문제가 있었다. 🔥 과정-- 아래와 같은 datetime 형태를2017-04-13 16:29:00-- 이런식으로 바꿔야했음2017-04-13 기본형DATE_FORMAT(datetime 컬럼명, '%Y-%m-%d') 적용SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME,'%Y-%m-%d) AS '날짜'FROM ANIMAL_INS