Skip to content

CHICPRO

  • Life Log
  • Cycling Log
  • Photo Log
    • Portrait
    • Landscape
    • Flower
    • Etc
  • Coding Log
  • Information

그누보드5, 영카트5 관리권한설정 기능 수정

2015-03-03 by 편리

내가 필요하니까 수정을 해보게 된다. 얼마 전에 생각이 나서 수정을 해볼까 하는 생각이 들었지만 막상 하려니 또 귀찮아서 미루고 있다가 오늘 생각이 나서 코드를 변경해보니 그렇게 어렵지도 않은 걸.. 왜 지금까지 미루고 있었는지.. 코드 수정하고 작동은 이상없이 되는 것 같으니까 일단 코드는 공개하는 걸로!!

gnuboard5-auth-list

기존 그누보드5나 영카트5에서는 회원별로 권한 설정을 할 때 메뉴를 select를 이용해서 하나씩 선택하고 아이디를 지정하는 식으로 해줘야 하는데.. 이 경우 회원 여러 명에서 여러 메뉴의 권한을 부여하려면 정말 노가다를 해야한다. 그래서 위 이미지처럼 변경하는 것을 생각을 했고 아래 코드를 적용하면 구현된다. 그러고 보니 영카트5 데모 사이트 구성할 때도 권한설정 때 이 삽질을 했던 기억이.. 그 때 왜 안 고쳤지?

수정할 파일은 adm/auth_list.php, adm/auth_update.php, adm/css/admin.css 3개의 파일이다. 우선 auth_list.php 파일에서 변경할 부분은 아이디별로 권한을 지정하는 부분으로 아래 코드로 변경하면 된다.

<form name="fauthlist2" id="fauthlist2" action="./auth_update.php" method="post" autocomplete="off">
<input type="hidden" name="sfl" value="<?php echo $sfl ?>">
<input type="hidden" name="stx" value="<?php echo $stx ?>">
<input type="hidden" name="sst" value="<?php echo $sst ?>">
<input type="hidden" name="sod" value="<?php echo $sod ?>">
<input type="hidden" name="page" value="<?php echo $page ?>">
<input type="hidden" name="token" value="<?php echo $token ?>">

<section id="add_admin">
    <h2 class="h2_frm">관리권한 추가</h2>

    <div class="local_desc01 local_desc">
        <p>
            다음 양식에서 회원에게 관리권한을 부여하실 수 있습니다.<br>
            권한 <strong>r</strong>은 읽기권한, <strong>w</strong>는 쓰기권한, <strong>d</strong>는 삭제권한입니다.
        </p>
    </div>

    <div class="tbl_frm01 tbl_wrap">
        <table>
        <colgroup>
            <col class="grid_4">
            <col>
        </colgroup>
        <tbody>
        <tr>
            <th scope="row"><label for="mb_id">회원아이디<strong class="sound_only">필수</strong></label></th>
            <td>
                <?php echo help(', 로 구분해 중복 입력 가능'); ?>
                <input type="text" name="mb_id" value="<?php echo $mb_id ?>" id="mb_id" required class="required frm_input">
            </td>
        </tr>
        <tr>
            <th scope="row"><label for="au_menu">접근가능메뉴<strong class="sound_only">필수</strong></label></th>
            <td>
                <ul id="au_menu_list">
                    <?php
                    $i = 0;
                    foreach($auth_menu as $key=>$value)
                    {
                        if (!(substr($key, -3) == '000' || $key == '-' || !$key)) {
                            $li_class = 'au_menu_li';

                            if($i > 0 && $i % 4 == 0)
                                $li_class .= ' au_menu_clear';

                            echo '<li class="'.$li_class.'">'.PHP_EOL;
                            echo '<input type="hidden" name="menu['.$i.']" value="'.$key.'">';
                            echo '<input type="checkbox" name="au_chk[]" id="au_chk_'.$i.'" value="'.$i.'">'.PHP_EOL;
                            echo '<label for="au_chk_'.$i.'">'.$value.'</label>'.PHP_EOL;
                            echo '</li>'.PHP_EOL;

                            $i++;
                        }
                    }
                    ?>
                </ul>
            </td>
        </tr>
        <tr>
            <th scope="row">권한지정</th>
            <td>
                <input type="checkbox" name="r" value="r" id="r" checked>
                <label for="r">r (읽기)</label>
                <input type="checkbox" name="w" value="w" id="w">
                <label for="w">w (쓰기)</label>
                <input type="checkbox" name="d" value="d" id="d">
                <label for="d">d (삭제)</label>
            </td>
        </tr>
        </tbody>
        </table>
    </div>

    <div class="btn_confirm01 btn_confirm">
        <input type="submit" value="추가" class="btn_submit">
    </div>
</section>

</form>

form 부분을 수정하면 된다. 그런 다음 auth_update.php 파일의 코드를 수정한다. 삭제한 코드가 있고 변경해야할 코드가 있다. 아래의 코드는 삭제한다.

$mb = get_member($mb_id);
if (!$mb['mb_id'])
    alert('존재하는 회원아이디가 아닙니다.');

$mb_id 변수에 복수의 아이디를 , 로 구분해 입력할 수 있도록 했기 때문에 위 코드는 필요가 없다. 그리고 실제 DB에 입력, 수정하는 부분의 코드를 아래 코드로 수정한다.

// 아이디
$arr_mb_id = array_map('trim', explode(',', $mb_id));
$count = count($arr_mb_id);

// 선택메뉴
$menu_count = count($_POST['au_chk']);

for($i=0; $i<$count; $i++) {
    $mb = get_member($arr_mb_id[$i], 'mb_id');
    if (!$mb['mb_id'])
        continue;

    for($k=0; $k<$menu_count; $k++) {
        $j = $_POST['au_chk'][$k];
        $au_menu = $_POST['menu'][$j];

        $sql = " insert into {$g5['auth_table']}
                    set mb_id   = '{$arr_mb_id[$i]}',
                        au_menu = '$au_menu',
                        au_auth = '{$_POST['r']},{$_POST['w']},{$_POST['d']}' ";
        $result = sql_query($sql, FALSE);
        if (!$result) {
            $sql = " update {$g5['auth_table']}
                        set au_auth = '{$_POST['r']},{$_POST['w']},{$_POST['d']}'
                      where mb_id   = '{$arr_mb_id[$i]}'
                        and au_menu = '$au_menu' ";
            sql_query($sql);
        }
    }
}

//sql_query(" OPTIMIZE TABLE `$g5['auth_table']` ");

마지막으로 css 코드를 추가해주면 된다. admin.css 파일에 아래의 코드를 추가한다.

/* 관리권한설정 */
#add_admin fieldset {margin-top:20px}
#au_menu_list {margin:0;padding:0;list-style:none}
.au_menu_li{float:left;width:160px;height:25px;line-height:25px;}
.au_menu_clear {clear:both;}

기본 admin.css 파일에서는 431 라인 근처에 코드가 존재하는데 #add_admin fieldset {margin-top:20px} 아래에 위 코드 중에서 3 줄의 css 코드를 추가해주면 된다. css 부분은 적당히 수정하면 된다.

간단한 테스트 결과 이상없이 작동을 하지만 오류가 있을 수도 있기 때문에 실제 적용하기 전에 확실하게 테스트를 거치는 게 좋을 듯 하다. 개발도 개발이지만 테스트가 제일 힘들고 스트레스 맞는 일인 듯!!

Post navigation

Previous Post:

저는 특이한 사람이랍니다.

Next Post:

이번 주말은 어디로 가볼까?

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • php 배열 연산에서 + 와 array_merge 의 차이
  • pcntl_fork 를 이용한 다중 프로세스 실행
  • 아이폰 단축어를 이용하여 주중 공휴일엔 알람 울리지 않게 하기
  • 구글 캘린더 전체일정 재동기화
  • OpenLiteSpeed 웹서버에 HTTP 인증 적용
  • OpenLiteSpeed 웹어드민 도메인 연결
  • WireGuard를 이용한 VPN 환경 구축
  • Ubuntu 22.04 서버에 OpenLiteSpeed 웹서버 세팅
  • 맥 vim 세팅
  • 우분투 시스템 터미널쉘 zsh 로 변경

Recent Comments

  • 편리 on 업무관리용 그누보드 게시판 스킨
  • 임종섭 on 업무관리용 그누보드 게시판 스킨
  • 캐논 5D 펌웨어 | Dslr 펌웨어 업그레이드 방법 82 개의 베스트 답변 on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • Top 5 캐논 5D 펌웨어 Top 89 Best Answers on 캐논 EOS 30D 펌웨어 Ver 1.0.6 , EOS 5D 펌웨어 Ver 1.1.1
  • 편리 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 임팀장 on 워드프레스 애니메이션 gif 파일을 mp4로 변환하여 출력하기
  • 편리 on Notepad++ NppFTP 플러그인 수동 설치
  • paul-j on Notepad++ NppFTP 플러그인 수동 설치
  • YS on Windows 10 iCloud 사진 저장 폴더 변경
  • 편리 on Docker를 이용한 Centos7 + httpd + php 5.4 개발환경 구축

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org
© 2025 CHICPRO | Built using WordPress and SuperbThemes