웹사이트 최고관리자인 admin이 KBOARD 게시판 관리를 다른 사용자인 web_manager에게도 동일한 권한을 주어서 관리하려고 합니다.
그래서 KBOARD 관리자 모드의 "선택된 관리자"라는 항목에 'web_manager'를 등록 시켰습니다.
예상대로 web_manager로 로그인을 하면 일반 사용자와는 다른 화면 (공지사항이 나오는 화면)이 제공됩니다.
그래서 web_manager에게 게시판 관리 일체를 위임하려고 하는데.....
web_manager로 로그인을 하면, 게시판 글 삭제 기능이 안된다고 합니다. 비밀번호를 물어오네요^^;;;
KBOARD 게시판 관리는 공지사항 등록서부터 '글삭제', '사용자 관리' 일체를 위임하고 싶은데,
어떻게 하면 좋을까요. 업그레이드 버젼을 기다리기에는 시간이 촉박하고 해서.... 소스코드를 수정하는 방법으로 라도 처리를 했으면 좋겠는데...
방법을 알려주시면 참으로 고맙겠습니다.
참고로, web_manager에게는 admin 계정을 오픈할 수 없는 상황입니다.
도움을 부탁드립니다.
읽기, 쓰기권한 모두 제한없음
선택된 관리자 입력 후 테스트 했지만
오류는 발견되지 않았습니다.
권한을 어떻게 주셨나요?
또한 관리자로 입력한 사용자명과 로그인한 사용자를 다시 확인 해보시겠어요?
게시글인가요? 댓글인가요?
늦은 시간까지 답글 주셔서 고맙습니다^^
게시글에 대해서 삭제 권한을 주려고 하는 겁니다.
지금 테스트 해보니, web_manager 에게 WP의 관리자 권한을 주면 원했던 "게시판 삭제 권한"이 가능해집니다.
그런데 저는 쇼핑몰 사이트를 준비 중인데, web_manager에서 WP의 관리자 권한까지를 주면 안됩니다.
그래서 권한은 쇼핑몰 운용시에 나오는 "Shop Manager"등급으로 지정이 되어있습니다.
Shop Manager 등급을 부여한 상황에서는 안되는가 봅니다^^;;;
그래서 제가 부탁드리고 싶은 것은 소스 코드에 "게시판에 관해서는 삭제 기능등 전체 권한을 부여하는 username"을
추가하는 방법이 있으면 좋겠다는 생각입니다. 이 것이 가능한지요?
늦은 시간까지 답변 주셔서 감사합니다.
선택된 관리자에 계정의 아이디를 입력하면 삭제도 가능한 관리자가 됩니다.
해당 계정의 워드프레스 권한과는 무관합니다. 최하 레벨인 구독자 권한이여도 이 권한은 독립적으로 동작합니다.
KBoard.class.php 파일의
public function isEditor($writer_uid) 메소드 내용을 아래처럼 변경 해보시겠어요?
public function isEditor($writer_uid){
if($writer_uid == $this->userdata->data->ID && $this->userdata->data->ID){
// 본인인 경우
return true;
}
else if($this->isAdmin()){
// 게시판 관리자 허용
return true;
}
else{
return false;
}
}
아~~~ 아쉽게도 해당 파일을 수정해서 테스트 해 봤는데..... 마찬가지입니다.
참고로 저는 사용자 권한 관리용 플러그인 White Label 이라는 플러그인을 사용하고 있어서
그 것의 영향 때문일 수도 있어서 플러그인을 비활성화 시켜서 해보았습니다만,
마찬가지로 web_manager (WP상의 등급은 Shop Manager) 로 로그인해서
비밀글로 잠긴 글을 삭제하려니 안되네요^^;;;
아참! 깜박했습니다!!! 제가 삭제하려는 글은 전부다 '비밀글'입니다.
비밀글이 아닌 것은 다시 테스트 해보고 올리겠습니다^^;;;
admin 으로 해당글을 클릭하면 해당글이 나옵니다. 아래에 삭제 버튼이 있구요.....
web_manager로 해당글을 클릭하면 '비밀번호'를 물어오는 화면이 뜹니다.
결론은 web_manager로 해당글을 클릭하면, admin 처럼 해당글이 보이면서 삭제버튼이 나오는 것입니다.
전혀 예상하지 못했던 혼란을 드려서 죄송합니다.
p.s 편리한 게시판을 개발하려면 신경쓸 곳이 엄청 많아서 노고가 많으시다는 것에 감사합니다.
나중에 도네이션도 하고, 좀 더 부탁도 드리겠습니다^^*
KBoard.class.php 파일의 public function isReader($writer_uid, $secret='') 메소드 내용을 바꿔보세요.
차후 권한 관련하여 면밀히 테스트 해보고 기능을 업그레이드 하도록 하겠습니다^^
public function isReader($writer_uid, $secret=''){
$admin_user = array_map(create_function('$string', 'return trim($string);'), explode(',', $this->admin_user));
if($this->permission_read == 'all' && !$secret){
return true;
}
else if($writer_uid == $this->userdata->data->ID && $this->userdata->data->ID){
// 본인일경우 허용
return true;
}
else if(@in_array('administrator', $this->userdata->roles) || @in_array('editor', $this->userdata->roles)){
// 최고관리자 허용
return true;
}
else if(($this->permission_read == 'all' || $this->permission_read == 'author' || $this->permission_read == 'editor') && @in_array($this->userdata->data->user_login, $admin_user)){
// 선택된 관리자 권한일때, 사용자명과 선택된관리자와 비교후, 일치하면 허용
return true;
}
else if($this->permission_read == 'author' && $this->userdata->data->ID && !$secret){
// 로그인 사용자 권한일때, role대신 ID값이 있으면, 모든 사용자 허용
return true;
}
else{
return false;
}
}
오늘 아침에도 일찍이 수정 자료를 올려주시고.....^^*
고맙습니다.
다시한번 감사드리고요..... 제가 원하는 바대로 해결이 되어서, 프로젝트는 추석전에 잘 마무리 될 것 같습니다.
코스모스팜! KBOARD! 앞으로 많은 발전과 성장을 기원합니다.
제가 KBOARD에 관심이 많은데, 앞으로도 자주 들르겠습니다.
그리고 오프라인에서도 뵐 기회가 있었으면 좋겠네요^^*