모니위키 1.1.2 이후 ACL이 추가 되었지만, 아래는 그 이전의 매뉴얼적인 방법.
모니위키에서는 / 을 이용해 주소를 계층화한다. 주소창에서 보면 디렉토리처럼 보이지만 / 은 단지 특수문자로 페이지 리스트 파일을 보면 상위 디렉토리 이름을 이름에 포함시킨 하나하나의 파일로 나타내짐을 알 수 있다. 해당 페이지의 하위 페이지까지 모두 권한 제어가 필요했을 때, 처음에는 페이지가 서버에서 실제로 디렉토리로 구분되어졌다고 생각해 디렉토리 내의 파일리스트를 읽어들이려는 생각을 했으나 모두 파일로 되어 있어 ereg 함수를 이용할 수 있었다.
# 모니위키 1.1.2 기준
1. config.php 에 $control_read='1'; 를 추가한다.
마찬가지로 $security_class = '(사용하는시큐리티플러그인)'; 를 추가한다.
hyacinth 의 경우 needtologin 을 수정-사용
2. /plugin/security/needtologin.php 에 다음 함수를 추가한다.
function may_read($action,&$options) {
if (ereg("특정 페이지",$options
'page')) {
if ($options
'id'=='아이디수정') return 1;
$options
'err'=sprintf(_(" "),$action);
return 0;
}
return 1;
}
※ 특정 페이지 이름은 정규 표현식 사용이 가능하다.
예) Secret로 시작되는 모든 페이지는 ^Secret
모니위키 1.1.2 버전에서 $control_read='1'; 제어가 추가되었는데
그 이전 버전에서는 직접 wiki.php 내의 read 액션 제어부분을 수정했어야만 했다.
2005년 경, hyacinth 가 수정해 썼고
안용열님이 그 점을 feature request 해주셨는데 그 것이 피드백 된 것으로 보인다.
요는 $control_read='1'; 로 read 액션 제어를 획득하는 것에 있다.
(read 액션만큼은 다른 액션과는 다르게 Security Plugin에서 곧바로 제어가 불가능하다.)