포럼
이메일, 유저아이디 관련 정규식 고치는 작업한 후기
2012.05.26 19:44
현재 1.5.2.2까지 업데이트했는데, 1.5.x에서 오픈아이디 관련 코드들이 한참 깨져있는 상황이라
오픈아이디 회원들을 다음달에 이메일 기반 회원인증으로 바꾸도록 안내할 예정이었습니다.
이메일 기반 인증으로 바꾸면 이메일 주소를 바꿀 수 없게 될텐데, 오픈아이디에 연결된 이메일주소가 잘 안 쓰는 것이라든가 하면 불편할 것 같아서 미리 바꿔놓도록 가이드하려고 했는데 아이디 값 검증에 걸려서 회원정보 수정이 안되더군요.
오픈아이디로 신규회원 등록과 로그인은 가능하도록 고쳐놨었는데 이건 또 어디에서 걸리는건지 몰라 한참 헤맸습니다.
처음엔 정규식이 잘못 된건가 싶어 한참 검증하고(http://regexpal.com/ 여기 편하더군요)
캐쉬 문제인건가 싶어 또 한참 삽질해봤으나 아니었고. ㅎㅎ
XE 내부 흐름이 어떻게 되는지 몰랐던 탓에 에러 메시지 보며 grep 으로 소스 뒤져가며 한참 찾았네요.
결론적으로
classes/xml/xmlquery/argument/Argument.class.php - 오픈아이디 새로 등록할때는 여기에서 걸렸었고,
common/js/xml_js_filter.js - 이건 로그인 상태에서 회원정보 수정할때 클라이언트 사이드 검증인 것 같고(에러메시지가 alert으로 떠서), 그리고 이메일주소로 아이디 비번 찾기할때도 쓰인 듯.
classes/validator/Validator.class.php - 여기서는 회원정보 수정할때 서버사이드 검증인 것 같더군요(에러메시지가 세션변수 통해서 오는 걸로 봐서).
위 3곳에서 검증을 하는데, 그 3곳의 정규식 패턴이 일치하지는 않더군요.
상관없긴 했지만, URL의 경우에도 xml_js_filter와 Validator에서는 소문자만 가능하도록 되어있던 듯. (Argument에서는 대소문자 구별안하는 설정)
XE 내부 아키텍처를 잘 모르는 사람의 말이니 이렇게 해놓은 이유가 있었을 것 같기도 합니다만
비슷한 정보가 다른 코드로 산재해서 표현되어있다보면 갱신할때 깨질 위험이 있을 것 같은데
일치시키는게 어떨까 하는 생각이 들었습니다.
아무튼 이메일 정규식은 ._%+- 가 가능하도록 구글링해서 찾은 걸로 바꾸고
유저아이디에는 . 하나 추가해서 오픈아이디도 인식하도록
3곳 모두 통일해보았는데
일단 로그인/새 오픈아이디 등록/회원정보수정/이메일로 아이디 찾기/아이디 이메일 비번답변으로 새 비번받기
등은 잘 돌아가네요.
이걸 되게 하느라 오후에 한참 시간을 보냈는데,
다음달에 로그인방식 전환할때 내부 회원들의 CS 처리를 해야할 일은 많이 줄어들을 것 같네요.
로그인 방식 전환하고 나서 한 2주 지난 다음에 최신 릴리즈된 것으로 업데이트해야지 생각했는데,
오픈아이디 패턴은 필요없지만, 이메일 주소 패턴은 업데이트된 버전이 릴리즈 될때까지는 업데이트를 미뤄야겠더군요.
이상 그냥 삽질 후기였습니다. ㅎ
다른 사이트들에도 똑같은 정책을 적용하려고, 수정한 3가지 파일을 덮어썼는데 전혀 반영이 안되서 한참 삽질 후에 원인을 파악했습니다.
common/js/xml_js_filter.js 의 경우 디버그 모드일때는 이 파일이 로드되지만,
디버그 모드가 아닐 때는 같은 경로의 xe.min.js 가 로드되더군요.
xe.min.js는 minify.ini에 정의된 규칙대로 js 파일을 하나로 minify된거였구요.
xe.min.js에서 찾아서 똑같이 고쳐 주니 돌아가네요.
이거 찾느라 또 근 한시간 보냈네요;;