권한 분기

홍성표·2022년 6월 13일
0

권한 분기

  • 사용자에 따라 보여주는 페이지가 다르다.
  • 이를 위해 권한에 분기를 주는 컴포넌트를 만들고 이를 이용해 사용자에 권한에 따라 보여주는 페이지를 다르게 주는 것을 권한 분기라고 한다.
export const WithAuth = (Component: any) => (props: any) => {
  const router = useRouter();

  useEffect(() => {
    if (!localStorage.getItem("accessToken")) {
      Modal.error({
        content: "로그인 후 이용 가능합니다.",
        onOk() {
          router.push("/23-04-login-check");
        },
      });
    }
  }, []);
  return <Component {...props} />;
};
  • useEffect 안에서 accessToken 이 있는지 확인하는 컴포넌트.
const FETCH_USER_LOGGED_IN = gql`
  query fetchUserLoggedIn {
    fetchUserLoggedIn {
      email
      name
    }
  }
`;

function LoginSuccessPage() {
  const { data } = useQuery(FETCH_USER_LOGGED_IN);
  
  return <div>{data?.fetchUserLoggedIn.name}님 환영합니다.</div>;
}

export default WithAuth(LoginSuccessPage);
  • 마지막 줄에서 LoginSuccessPageWithAuth 로 감싸주어 권한체크를 진행한다.
  • 이렇게 HOC 방식을 사용하면 재사용성을 높여 편리하게 사용할 수 있다.
profile
안녕하세요. 홍성표입니다.

0개의 댓글