== 모니위키활용/Access Control/읽기권한제어 ==


모니위키 1.1.2 이후 ACL이 추가 되었지만, 이하는 보다 매뉴얼적인 방법.


모니위키에서는 / 을 이용해 주소를 계층화 할 수 있다.
주소창에서 보면 디렉토리처럼 보이지만 / 은 특수문자로 실제 data파일 리스트를 보면 모두 상위 디렉토리 이름을 단순히 이름에 포함시킨 하나하나의 파일로 나타내짐을 알 수 있다. 처음 hyacinth 가 읽기권한제어에 대한 필요를 느낀 것은 해당 페이지의 하위 페이지까지 주인만 볼 수 있게 만들자는 생각을 했을 때. 처음에는 페이지가 서버상에 실제로 디렉토리로 구분되어졌다고 생각해 디렉토리 내의 파일리스트를 읽어들이려는 생각을 했으나 모두 파일로 되어 있어 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에서 바로 제어가 불가능하다.)





----
[../] 뒤로