[XE] 회원 가입 시, 사용자가 수정 불가능한 항목 설정하기

Standard

http://study.prl85.com/xe-관리자만-수정-가능한-회원-정보-항목-설정하기/
에서는 회원 정보 수정 시, 관리자만 수정 가능한 항목을 설정하는 방법을 다루고 있습니다.

이 글에서는 이를 응용하여 회원 가입 시 사용자가 수정 불가능한 항목을 설정하는 방법을 다루겠습니다.
(활용: 특정 서비스 인증키.
즉, 회원 가입/정보 수정 시 사용자가 임의로 수정할 수는 없지만, 관리자가 정한 값을 본인 회원 정보에서는 보여주고 싶은 경우)

회원 정보 수정 때만 아니라, 회원 가입시에도 동일한 함수가 항목들을 출력하는 부분을 처리합니다.

xe – modules – member – member.admin.view.php에서
function _getMemberInputTag($memberInfo, $isAdmin = false)

다만 회원 정보 수정 때와 회원 가입 때 $readonly를 처리하는 부분이 조금 다릅니다.
회원 정보 수정 시에는, 로그인된 정보에서 관리자인지를 가려내서 수정 가능/불가능 여부가 가려지지만, 회원 가입시는 로그인된 정보라는 것이 없기 때문이죠 (로그인되지 않은 상태에서만 회원 가입이 가능하기 때문).
역으로 이 점을 이용해서, 로그인된 정보가 없을 때 (=회원 가입) 원하는 항목을 수정 불가능하게 만들면 됩니다.

$readonly = '';

if (Context::get('logged_info') == null) // 회원 가입시
    $readonly = 'readonly="readonly"';

if (Context::get('logged_info')
    && Context::get('logged_info')->is_admin != 'Y') // 회원 정보 수정시 (관리자만 가능)
    $readonly = 'readonly="readonly"';

회원 가입시에만 혹은 회원 정보 수정시 (이 경우는 관리자만)에 수정이 불가능하게 하려면 해당 항목만 남겨두면 되겠지요.

나머지 사항은 위의 링크를 참고하시면 되겠습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *