$security_class='needtologin'이와같이 설정을 합니다.
if ($DBInfo->control_read and !$DBInfo->security->is_allowed('read',$options))이부분을
if (!$DBInfo->security->is_allowed('read',$options))이와같이 고칩니다.
function is_allowed($action="read",&$options) { if (0 == strcmp('ACL',substr($options['page'],0,3))) { if($options['id']=='박수환' || $options['id']=='박경종') return 1; $options['err']=sprintf(_("You are not allowed to '%s' on %s"),$action,$options['page']); return 0; } if( 0 == $this->confirm_user($options['id'],$action,$options['page']) ) { $options['err']=sprintf(_("You are not allowed to '%s' on %s"),$action,$options['page']); return 0; } $method='may_'.$action; if (method_exists($this, $method)) { return $this->$method ($action,$options); } if ($options['id']!='Anonymous') return 1; // XXX return 1; }
$this->confirm_user($options['id'],$action,$options['page'])이부분이 있는데 여기에 confirm_user 란 함수를 만들어줘야 합니다.
function confirm_user($id,$action,$page) { $fp = fopen("/var/www/moniwiki/data/text/ACL","r"); // 위키에 ACL페이지가 저장되는곳 if( !$fp ) return 1; while( !feof($fp) ) { $str = fgets($fp,4096); if( $str[0] == '#' ) continue; if( 0 == strcmp($action ,substr( $str, 0, 4 )) ) { $ar = explode( ' ',$str ); $mode = $ar[0]; $pn = $ar[1]; $usr = $ar[2]; if( 0 == strcmp($pn ,substr($page,0,strlen($pn))) ) { if( strstr($usr,$id) ) return 1; return 0; } } } fclose( $fp ); return 1; } function is_allowed($action="read",&$options) { if (0 == strcmp('ACL',substr($options['page'],0,3))) { if($options['id']=='박수환' || $options['id']=='박경종' return 1; $options['err']=sprintf(_("You are not allowed to '%s' on %s"),$action,$options['page']); return 0; } if( 0 == $this->confirm_user($options['id'],$action,$options['page']) ) { $options['err']=sprintf(_("You are not allowed to '%s' on %s"),$action,$options['page']); return 0; } . . . .
# 이와같이 # 으로 시작되는 문자열은 주석입니다. # '''위키문법과 혼동되지않게 하기위해 # 뒤에는 항상 공백을 하나 넣어주시기 바랍니다.''' # # 에러처리를 하지 않았으므로 수정사항이 완벽할때 저장해주세요 :) # # 액션은 read 와 edit 만 지원합니다. # # 한 페이지의 특정 권한은 한번만 가능하며 중복할수 없습니다. # 즉 '''read 위키/사용법''' 으로 시작하는 줄은 한줄만 존재 할수 있습니다. # 여러줄이 존재할 경우 첫번째 줄만 인식합니다. # # 페이지이름으로 사용한 문자열을 포함한 모든 페이지의 접근권한을 설정하기때문에 # 예를 들어 페이지이름에 단순히 '''f''' 만 적게되면 f 나 F 가 들어간 모든페이지의 접근권한이 # 설정이 됩니다. # # 설정방법은 # 액션|페이지이름|허용된사용자 # 입니다. # 접근권한을 설정한 페이지는 설정된 사용자만 설정된 동작이 가능합니다. # 아무런 접근권한을 설정하지 않은 페이지는 누구나 접근 가능합니다. # # read 위키/사용법 박수환,zilitwo # edit 위키/사용법 zilitwo # # 위와 같이 설정할 경우 '''위키/사용법''' 을 포함한 하위 모든 하위페이지는 # '''박수환''' 과 '''zilitwo''' 사용자가 읽을수 있으며 '''zilitwo''' 사용자만이 # 편집을 할 수 있습니다.. read test 박수환,zilitwo edit test zilitwo