Yongrok

XE ID 규칙 변경하기 본문

컴퓨터

XE ID 규칙 변경하기

Yongrok 2013.05.23 23:08

이번에 XE 시스템을 설치하면서 운용중인 서버의 계정과 XE의 계정을 동일하게 사용할 수 있도록 하려 했는데, 문제가 생겼다.
기존 사용자중 계정 중간에 . 이 포함된 계정이 존재하는데, XE에서는 아이디에 다음과 같은 제약을 걸고 있는 것.

영문, 숫자, _만 가능하며 첫 글자는 영문이어야 한다.

처음에는 대수롭지 않게 고칠 수 있을 줄 알았는데...
eXpress Engine는 CMS를 목표로 만들어진 시스템이라 상당히 복잡하게 구현되어 있다...
XE 사이트에서 제공하는 개발자용 문서를 열심히 봐도 글쎄... 어디를 고쳐야 할지 당최 알 수가 없다 ㅎㅎ

열심히 삽질을 해서 제약을 걸고 있는 코드는 모두 찾아서 블로그 포스트로 정리

  • common/js/xe.js
  • common/js/xe.min.js

위의 두 파일에서는 javascript 기반으로 id의 제약사항을 검사한다.
xe.js에서 userid로 검색하면 쉽게 정규식을 찾을 수 있다. xe.min.js에서도 userid로 검색하면 된다.

  • classes/validator/Validator.class.php

XE에서 Request를 처리할때 Context 클래스에서 인자들의 무결성을 검사하는 부분이 있는데, 이때 validator 클래스를 사용한다. 위 파일에는 userid에 대한 제약이 predefined rule로 존재한다. predefined rule 이나 userid로 검색해서 정규식을 치환해 주자.

  • classes/xml/xmlquery/argument/Argument.class.php

이 파일은 XE에서 DB에 날리는 query에 대한 argument를 담당하는 클래스인데, executeQuery 문을 실행시 checkFilter 함수를 실행함으로써 넘어온 argument에 대한 무결성을 확인하는 과정을 거친다. 이 클래스 안에도 switch 문에서 userid로 사용자 아이디에 대한 정규식 검사를 하므로 이도 치환해 주자.

반전은 운용중인 서버에 . 이 포함된 계정은 서버에 단 하나만 있었다는거 ㅋㅋㅋ

xe의 안정성 유지를 위해 그냥 순정으로 쓰고, 한명의 사용자에 양해를 구해야 할 것 같다.

0 Comments
댓글쓰기 폼