게시판 및 그룹 관리자 여러명 등록하기 > 그누4 팁자료실

그누4 팁자료실

그누보드4와 관련된 팁을 여러분들과 함께 공유하세요.
나누면 즐거움이 커집니다.

게시판 및 그룹 관리자 여러명 등록하기 정보

게시판 및 그룹 관리자 여러명 등록하기

본문

어떤 분이 질답 게시판에 올리셨길래 한번 해봤는데

제가 해보기로는 일단 게시판에 복사,삭제,이동등은 다 되든데..
보안상 어떨지는 잘 모르겠네요..

그냥 질답에 답변하려고 만들어 본건데..
혹시 같은 문제로 고민하시거나 SkynSea님이 올리신것도 있던데
좀 복잡해 보여서... 가라로 만들었지만 간단하게 되서 올려봅니다

아무튼 한번 보시고 고수님들의 멋진 태클 부탁드립니다~

사용법은 간단하게 게시판 관리자 필드에 ','문자로 구분해서 넣어주시면 됩니다.

/common.lib.php 파일

// 관리자인가?
function is_admin($mb_id)
{
    global $config, $group, $board;
    if (!$mb_id) return;
    if ($config['cf_admin'] == $mb_id) return 'super';
    if ($group['gr_admin'] == $mb_id) return 'group';


 $board_admin = explode(",",$board['bo_admin']);
 foreach($board_admin as $admin_id){
     if ($admin_id == $mb_id){
   $board['bo_admin'] = $admin_id;
   return 'board';
  }
 }
    return '';
}




 
※ Warning : 충분한 테스트 없이 올렸음을 알려드립니다...


----------------------------------------------------------------------------------------
그룹관리자도 여러명으로 하시려면 아래와 같이 수정하시면 됩니다.
원리는 같습니다.

function is_admin($mb_id)
{
    global $config, $group, $board;

    if (!$mb_id) return;

    if ($config['cf_admin'] == $mb_id) return 'super';

 $group_admin = explode(",",$group['gr_admin']);
 foreach($group_admin as $admin_id){
     if ($admin_id == $mb_id){
   $group['gr_admin'] = $admin_id;
   return 'group';
  }
 }

 $board_admin = explode(",",$board['bo_admin']);
 foreach($board_admin as $admin_id){
     if ($admin_id == $mb_id){
   $board['bo_admin'] = $admin_id;
   return 'board';
  }
 }
    return '';
}

요건 테스트는 안해봤네요.. 아마 될겁니다..

'';
}

----------------------------------------------------------------------------------------

너무 테스트없이 성급히 올린것 같네요

/bbs/move.php 도 수정이 필요하군요..

30번째쭐 쯤에 셀렉트문을 다음과 같이 수정해주시면 제대로 될겁니다..

$sql = " select *
           from $g4[board_table] a,
                $g4[group_table] b
          where a.gr_id = b.gr_id
            and bo_table <> '$bo_table' ";
if ($is_admin == 'group')
    $sql .= " and b.gr_admin REGEXP '$member[mb_id]' ";
else if ($is_admin == 'board')
    $sql .= " and a.bo_admin REGEXP '$member[mb_id]' ";
$sql .= " order by a.gr_id, a.bo_order_search, a.bo_table ";

REGEXP가 좀 문제가 될 것도 같긴한데..
아마 이동 버튼이나 체크박스 출력하는 부분은 정확한 매칭을 통해서
가져오기 때문에 테이블 이름 셀렉트해오는 부분은 REGEXP로 대충 매칭해도
괜찮지 않을까 싶긴합니다..










추신 : 댓글과 추천은 글쓴이에게 오아시스와도 같습니다^^;

추천
6

댓글 33개

사용해보니 게시판 관리자에 넣으면 먹히는거 같구요.
그룹 관리자 필드에는 안먹히네요.. 아무튼 그렇구요 감사드립니다 ^^
테스트를 더 해봤는데요.
관리자의 권한은 가지나(글 쓰기, 수정, 삭제)... 이동,복사는 안됩니다.
이동,복사를 누르면 팝업창이 뜨면서 게시판 리스트가 쫙 뜨면서 첵 박스가 보여야 하는데..

"※ 이동할 게시판을 한개 이상 선택하여 주십시오."  이런 멘트만 나오고 리스트는 안나옵니다..

님은 근데 잘 된다고 하셨는데.. 이상하네요 ㅜㅜ
테스트를 해봤습니다 최종적으로,

글쓰기, 수정, 삭제의 권한을 가진 관리자는 잘 됩니다
하지만 이동, 복사의 권한은 가지는 것 같이 보이나, 실제 첵 박스를 선택하여 복사 혹은 이동을 누르면 해당 게시판 리스트에 아무것도 나오질 않습니다.

그리고 최고관리자의 글을 삭제하려고 하면 보통 "높은 권한은 삭제안된다"라는 메세지가 뜨는걸로 아는데.. 아무 메세지 없이 삭제도 안되고 그냥 리프레쉬만 되고 원상 복귀 하네요..

님의 노력에는 감사 드립니다 ^^
최종적으로.... 님 짱입니다.
아주 잘 됩니다. 복사,이동까지 완벽합니다..
누군가가 에러 잡아낼지 모르지만요 ^^

감사합니다.~~~~### ^^__^^
네^^;
제가 그누보드를 실제로 쓰는게 아니라..
어떤식으로 동작하는지 세세한 부분까지는 알지 못합니다..;;
님이 말씀하신 부분 테스트 해볼려고 그누보드 수정해 놓은게 많아서
새로 받아서 깔았는데.. "높은 권한은 삭제가 안된다"라는 메세지는 안보이네요^^;
어쨌는 제대로 동작한다니 다행이군요..
맞습니다. 그누 쓰면서 저도 php 잘 모르지만 아직은 불안정한 뭔가가 남아 있는듯한 느낌이 듭니다 .. 사용하지도 않으신데 바로 바로 수정하시는걸 보면 실력이 보통이 아니신듯 하네요... 감사합니다~~
common.lib.php 를 되도록 수정 안하는 것이 낫지 않을까요?
저는 되도록 /extend 디렉토리에 라이브러리를 넣어 사용하는 편이라서...
extend 를 활용하는 것이 좋을 듯한데... 안되는 것이 조금 있기는 하지만요...
그나저나 extend만 사용하면 되도록 그누 배포본이 조금 수정되었으면 하는 바램이...
베짱이님 말씀대로 extend 디렉토리를 활용해 봤습니다.
아래 소스를 extend 디렉토리에 적당한 파일명(virtualAdmin.php 등)으로 저장하면 됩니다.
저는 잘 되는거 같던데 다른 분들은 어떨지..

<?
if (!defined("_GNUBOARD_")) exit;

// 관리자로 둔갑할 아이디들
$adminList = array("user1", "user2");

if (in_array($member[mb_id], $adminList))
{
$g4[cf_admin] = $member[mb_id];
$member[mb_level] = 10;
$is_admin = "super";
}
?>

관리자로 사용할 아이디를 레벨 10인 회원에게서 뽑아 온다던가 여분필드를 사용하면 더욱 좋겠죠.
궁금한게 있는데요. 왜 원 파일 보다는 extend를 수정하는게 낫죠..
원 파일은 그대로 보존하는게 나중에 혼란이나 업데이트(관리)를 위해 편하고 안정적이라서 그러시는거죠?
아마도 그런것 같습니다^^;
자바스크립트에서는 함수를 없애고 새로 정의 할 수도 있는데
php에서는 그게 안되서.. 좀 아쉽네요..
그것만 됐어도.. extend에서 쉽게 처리할 수 있었을텐데 ㅠㅠ
아주 잘되네요..
위에 소스를 입력하고 꼭 수정해야될 부분이 있습니다.

adm/board_form.php

158라인에

    <td><input type=text class=ed name=bo_admin maxlength=20 value='<?=$board[bo_admin]?>'></td>

윗 부분을 아랫부분으로 수정하시면 잘 되실겁니다.

 <td><input type=text class=ed name=bo_admin size=60 maxlength=120 value='<?=$board[bo_admin]?>'></td>
만약 여러 게시판 관리자들에게 게시판관리 기능(게시판 생성, 수정, 복사 등)이 필요하시다면 아래 파일들을 수정해주셔야 합니다.

/adm/board_list.php:
  $sql_search .= " and (a.gr_id = b.gr_id and b.gr_admin = '$member[mb_id]') ";
->
  $sql_search .= " and (a.gr_id = b.gr_id and b.gr_admin REGEXP '$member[mb_id]') ";

/adm/boardgroup_list.php:
  $sql_search .= " and (gr_admin = '$member[mb_id]') ";
->
  $sql_search .= " and (gr_admin REGEXP '$member[mb_id]') ";

/lib/common.lib.php:
  $sql .= " left join $g4[member_table] b on (b.mb_id = a.gr_admin)
                  where b.mb_id = '$member[mb_id]' ";
->
  $sql .= " left join $g4[member_table] b on (a.gr_admin REGEXP b.mb_id)
                  where b.mb_id = '$member[mb_id]' ";

물론 최고관리자가 환경설정->관리권한설정에서 원하시는 회원들에게 게시판관리, 게시판그룹관리 권한을 주셔야합니다.
전체 0 |RSS
그누4 팁자료실 내용 검색
  • 개별 목록 구성 번호 제목 작성자 작성일 추천 조회
  • 게시물이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT