[소소한팁1] 특정 아이디에 대한 최고관리자권한부여와 관리메뉴노출제한

Tip & Tech

활용팁

홈 > 회원포럼 > 활용팁
활용팁

[소소한팁1] 특정 아이디에 대한 최고관리자권한부여와 관리메뉴노출제한

2 은형제아빠 2 70 1 0

안녕하세요. 은형제아빠입니다.

웹디자인으로 시작해 기획일까지 하다가 개발자가 없는 상황에서 

어쩔수 없이 개발소스까지 들여다보며 좌충우돌했던 경험을 공유해드리고자 소소한 팁 남겨봅니다.

=========================================================================================

기본설치 환경은 그누보드+아미나 5.3.3.3 버전입니다.

사이트를 제작하다보면 실제 사이트를 관리하는 사용자에게 최고관리자 권한을 부여해줘야 하는 경우가 있습니다. 

그와 동시에 관리자메뉴는 필요한 메뉴만 노출되도록 해줄 경우가 있지요. 회원관리, 게시판관리 등만... 

이에 대한 소소한을 공유해드립니다. 내용이 조금 길지만..최대한 쉽게 작성해봤어요. 감사합니다.


----설명----

사이트를 실제 관리하는 사용자에게 최고관리자권한을 주되 

관리자 메뉴중 필요한 메뉴만 오픈해주려면...


2가지 작업을 처리.


<가, 관리자메뉴 파일 코드 추가>

1. 관리자메뉴 파일에서 최고관리자인 admin인 경우에만 메뉴 노출되도록 처리.

관리자 메뉴를 노출하지 않을 파일만 열어 적용해줍니다.

맨위에 <?php 바로 아래

if ($member[mb_id] == 'admin') {

를 추가.

맨 아래 ?> 바로 위에 } 추가.

이렇게 하면 admin이라는 아이디로만 메뉴가 나오게 됩니다. 

처음 그누보드를 설치할 때 admin이 아닌 다른 아이디를 입력하는 경우도 있지요. master라든지.. 

그 아이디를 적용해주면 됩니다.


만약 회원관리 메뉴만 노출하겠다면, 회원관리만 빼고 다른 파일은 모두 위에 코드 적용해줍니다.


아래는 각 관리자메뉴별 파일안내입니다. admin에게만 보여질 파일을 열어 수정하시면 됩니다.

파일 위치 :                           설명

/adm/admin.menu100.php     환경설정 

/adm/admin.menu200.php     회원관리 

/adm/admin.menu300.php     게시판관리

/adm/admin.menu777.php     테마관리

/adm/admin.menu888.php     파트너관리 (파트너 프로그램 설치시 활성화 되는 메뉴)

/adm/admin.menu900.php     SMS관리



<나, 클라이언트 아이디 최고관리자 권한 설정방법>

클라이언트(납품받는 업체)에서 사용 하는 아이디가 예를 들어 abcd라고 한다면


1. 레벨 변경 >>> abcd의 레벨을 10으로 지정. 

2. super (최고관리자)권한 부여 >> /lib/common.lib.php 파일을 열고 


890번 줄쯤 근처에     

if (!$mb_id) return; 코드 아래쪽에     

if( in_array($mb_id, array( 'abcd') ) ) return 'super'; 코드 추가. 위치는 아래 소스 참조.

==========================================================================

// 관리자인가?

function is_admin($mb_id)

{

    global $config, $group, $board;

    if (!$mb_id) return;

   // ---- 최고관리자 추가 시작 ----

    if( in_array($mb_id, array( 'abcd') ) ) return 'super'; //클라이언트 아이디

    if ($config['cf_admin'] == $mb_id || chk_multiple_admin($mb_id, $config['as_admin'])) return 'super';

    if (isset($group['gr_admin']) && chk_multiple_admin($mb_id, $group['gr_admin'])) return 'group';

    if (isset($board['bo_admin']) && chk_multiple_admin($mb_id, $board['bo_admin'])) return 'board';


    return '';

}

==========================================================================

최고관리자 권한 부여하는 방법은 몇가지 되니 편한데로.


이렇게 가, 나 두가지 작업을 하게 되면 abcd 아이디는 최고관리자 권한을 가지면서 관리자 메뉴는 회원관리만 보여지게 된다. 

최고관리자가 되는 이유는 모든 게시물을 컨트롤 할 수 있기 위해서고

관리자메뉴를 제한하는것은 섣불이 관리 메뉴 설정들을 만져서 사이트가 이상해지는것을 미연에 방지하기 위함임.





한가지 질문..... 

회원관리 안에 있는 서브메뉴중에서 특정 메뉴 미노출하려면....

예를 들어 투표관리를 admin만 노출한다면.......


<?php

$menu['menu200'] = array (

    array('200000', '회원관리', G5_ADMIN_URL.'/member_list.php', 'member'),

    array('200100', '회원관리', G5_ADMIN_URL.'/member_list.php', 'mb_list'),

    array('200300', '회원메일발송', G5_ADMIN_URL.'/mail_list.php', 'mb_mail'),

    array('200800', '접속자집계', G5_ADMIN_URL.'/visit_list.php', 'mb_visit', 1),

    array('200810', '접속자검색', G5_ADMIN_URL.'/visit_search.php', 'mb_search', 1),

    array('200820', '접속자로그삭제', G5_ADMIN_URL.'/visit_delete.php', 'mb_delete', 1),

    array('200200', '포인트관리', G5_ADMIN_URL.'/point_list.php', 'mb_point'),


);

 if ($member[mb_id] == 'admin') {

        $menu['menu200'][] = array('200900', '투표관리', G5_ADMIN_URL.'/poll_list.php', 'mb_poll');

    }

?>



위와같이 투표관리 항목을 따로 분리해서 작성해주면 된다.

그러면 admin 계정으로 로그인할 때만 투표관리 메뉴가 보이게 된다


특정 레벨로도 지정할 수 있겠다.

같은 최고관리자인데도... 레벨이 다를 경우... 누구는 4이고 누구는 5라면... 최고관리자 5레벨이상만 또는 5레벨에게만 노출하고자 할때... 등등...


몇레벨 이상......일때   (5레벨 이상일때라면)   

$member[mb_id] == 'admin')를  if($member[mb_level] >= 5)라고 수정


몇레벨일때... (5레벨만)

$member[mb_id] == 'admin')를  if($member[mb_level] == 5)라고 수정


다양하게 응용 가능합니다. 

감사합니다.

2 Comments
26 dawn 11.19 17:31  
감사합니다
11 선우샵 11.19 18:39  
감사합니다
제목
최근 글
최근 댓글
Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand