240613 백오피스 프로젝트 - 개발 2일차

노재원·2024년 6월 13일
0

내일배움캠프

목록 보기
60/90

협업 기반을 잘 다졌더니 2일차동안 정말 큰 문제가 발생 안했다. 팀원분들의 만족도도 높고 중간에 튜터님께 중간 점검을 받으러 갔을 때도 좋은 결과를 얻을 수 있었다.

중복 인가 코드를 처리하기

슬슬 도메인의 인가 처리를 고민하기 시작했다. 처음 접근 방식은 PermissionChecker 유틸을 만들어서 entityOwnerId 와 role을 받아가지고 하는 식을 고민했다. 그렇게 해서 작성했는데 튜터님과 피드백을 통해서 기초적인 권한 체크는 Entity가, 인가에 대한 처리는 Service에서 추가적으로 진행하는 방식을 썼다.

// entity
fun checkPermission(userId: Long, role: String): Boolean {
        return this.id == userId || role == "ROLE_ADMIN"
    }

// service
private fun checkPermission(user: User, principal: UserPrincipal) {
        check(
            user.checkPermission(
                principal.id,
                principal.role
            )
        ) { throw AccessDeniedException("You do not own this user") }
    }

Entity는 구체적인 Principal의 객체 정보를 알면 안된다고 생각해서 비슷한 중복 로직이 작성됐다.

이 이유는 고민해보자면 Entity는 Boolean 반환만 목적으로 하고 세부적인 체크의 책임은 Entity에서 한 결과를 가지고 로직에서 세부 처리를 하는 느낌이다.

0개의 댓글