PHP - 2021-06-01

octofox·2021년 6월 1일
0

개발일지

목록 보기
1/6

PHP 개발일지

php를 개발하는데 객체지향을 적용하고 있다.
cafe24 api를 연동하는데 조금 어려웠다.

주소를 옮겨다니 때마다 토큰을 검사한다.
cafe24 토큰이 만료되어있다면 새로운 cafe24 로그인 창을 여는 자바스크립트를 실행하도록 템플릿에 넘겨주어야한다. 로그인을 완료하게되면 redirect uri로 $_GET을 통해 인증코드를 받게된다.
getAuthCode라는 함수를 해당 uri에 등록해두어서 해당 페이지가 열리면 실행된다.

템플릿과 php로 생성된 변수들을 넘겨주는 일은 controller에 위임했지만 cafe24.php는 controller도 아닌데 router controller에 하나의 함수를 등록했다.

controller가 아닌 cafe24.php의 하나의 함수만 controller에 등록되어있으니 뭔가 찜찜하다.
틀이 깨진 느낌이다.

틀을 깨지 않으면서 이런 예외적인 코드를 잘 작성할 수 는 없을까?

토큰을 검사하는 함수는 Authentication.php class에 작성하고 사용 중이다.
물론 해당 함수는 cafe24.php에 의존하고 있다. Authentication class 생성자에 의존성을 주입하는데 이것이 엄청 자연스러운지는 잘 모르겠다. 토큰은 인증과 관련된 문제이다. 그렇게 생각해서 의존성을 주입했다.

isCafe24TokenAlive 함수는
먼저 기본 로그인을 검사한다.
로그인이 되어있지 않다면 검사를 진행하지 않는다.
토큰정보의 존재여부를 확인한다. 없다면 cafe24 로그인 창을 띄운다.
리프레쉬 토큰의 만료여부를 확인한다. 만료되었다면 cafe24 로그인 창을 띄운다.
strtotime(만료시간 정보) > time();

엑세스 토큰의 만료여부를 확인한다. 만료되었다면 리프레쉬 토큰을 사용해 엑세스 토큰을 재발급 받는다.

아무런 해당사항이 없다면 그냥 만료되지 않은 엑세스 토큰을 사용한다.

디자인 패턴을 공부 중에 있지만 여기에 적용할 만한 패턴은 아직 찾지 못했다.

profile
개발자라고 우기는 노답 소년

0개의 댓글