μ°λ¦¬ νλ‘μ νΈμμ μ¬μ©μλ
ROLE_GUESTνΉμROLE_HOSTμ ν΄λΉνλ κΆνμ κ°μ§ μ μλ€. κ·Έλ¦¬κ³ , κΆνμ λ°λΌ μ κ·Όν μ μλ API λν μμ΄νλ€. μλ₯Ό λ€μ΄, λ¬Όν λ±λ‘μ ν΄λΉνλ API CallμROLE_GUESTμ κΆνμ κ°μ§ μ μ λ§μ΄ κ°λ₯νλ€. μ¦, ν΄λΌμ΄μΈνΈλ‘λΆν° API Callμ΄ λ€μ΄μ€λ©΄ μλ² μΈ‘μ ν΄λΉ μ μ μ κΆνμ νμΈνλ μμ μ΄ νμνλ€.
μ²μμλ 컨νΈλ‘€λ¬λ¨μμ getCurrentUserRole() λ©μλλ₯Ό ν΅ν΄ νμ¬ λ‘κ·ΈμΈν μ μ μ κΆνμ λΆλ¬μ, κΆνμ΄ μΌμΉνμ§ μμΌλ©΄ μμΈλ₯Ό λμ Έμ£Όλ λ°©μμ κ³ λ €νλ€. νμ§λ§, μ΄λ κ² νμ λ λ¬Έμ μ μ΄ λͺκ°μ§ μ‘΄μ¬νλλ°,
@PutMapping("/keep")
public BaseResponse<Void> keep(@Valid @RequestBody MatchingKeepRequest matchingRequest, HttpServletRequest servletRequest) {
Long userId = extractUserId(servletRequest);
if (!RequestParser.getCurrentUserRole().equals("ROLE_HOST")) {
throw new CustomRuntimeException(UserException.NOT_AUTHORIZED);
}
return matchingService.keep(matchingRequest, userId);
}
RequestParserμ getCurrentUserRole() λ©μλλ₯Ό μ¬μ©νλ κ²λΆν°, κΆνμ λΉκ΅νκ³ , μμΈλ₯Ό λμ§λ μμ
κΉμ§, μ½λκ° κΉλν΄λ³΄μ΄μ§ μλλ€.AOPλ₯Ό λμ νμ¬ κΆν κ²μ¦ λ‘μ§μ κ³΅ν΅ κ΄μ¬μ¬λ‘ λΆλ¦¬νμ¬ κ΄λ¦¬νκΈ°λ‘ νλ€.
**AOP(Aspect-Oriented Programming)**λ μ ν리μΌμ΄μ λ‘μ§μ λν λΆκ°μ μΈ κ΄μ¬μ¬λ₯Ό λΉμ¦λμ€ λ‘μ§κ³Ό λΆλ¦¬νλ κ°λ μ΄λ€.
μ¦, MatchingController λ° MatchingServiceμ keep λ©μλμ λΉμ¦λμ€ λ‘μ§μ λ³΄κ΄ μμ²μ μ²λ¦¬νλ κ²μ΄κ³ , λΆκ΄μ¬μ¬λ κΆν νμΈ λ±μ΄ μλ€.
μ¬κΈ°μ κΆν κ²μ¦ ννΈλ₯Ό λͺ¨λννκ³ μ νλ κ²μ΄λ€. μ΄ μΈμλ AOPλ λ‘κΉ
, νΈλμμ
κ΄λ¦¬ λ±μ λ°λ³΅μ μ΄κ±°λ ν‘λ¨ κ΄μ¬μ¬(cross-cutting concern)λ₯Ό λͺ¨λννλ λ°μ μ μ©νλ€.

ν‘λ¨ κ΄μ¬μ¬λ, μ¬λ¬ λͺ¨λμ΄λ κ³μΈ΅μ κ±Έμ³ λ°λ³΅μ μΌλ‘ λνλλ κΈ°λ₯μ΄λ λ‘μ§μ μλ―Ένλ€. μ¬κΈ°μλ κΆν νμΈ λ‘μ§μ΄ μ΄μ μνλ€.