크롬80버전 결제 이슈, 영카트5 주요패치 확인!

게시판 관리자를 여러명으로 변경 및 루미집사님의 전자결재 스킨에 적용하기 > 그누보드5 팁자료실

컨텐츠몰 10% 할인!
그누보드5
영카트5
매뉴얼
Q & A
제작의뢰
컨텐츠몰
부가서비스
소모임
커뮤니티

그누보드5 팁자료실

게시판 관리자를 여러명으로 변경 및 루미집사님의 전자결재 스킨에 적용하기 정보

게시판 관리자를 여러명으로 변경 및 루미집사님의 전자결재 스킨에 적용하기

본문

게시판 관리자가 하나의 ID만 지정되는 것을

여러명의 관리자를 설정할 수 있도록 변경 작업을 해보았습니다.

 

그누보드는 자주 사용해보지 않은지라 버그가 있을 수 있읍니다만,

작은 도움이라도 되면 좋겠습니다.

 

PS. 제 홈페이지에서 작성하고 여기에서는 붙여넣기를 했더니 이미지들이 팝업이 안뜨네요...

    번거로우시겠지만, 아래 링크로 가시면 이미지를 자세히 보실 수 있습니다.

    http://mansu.kim/bbs/board.php?w=u&bo_table=intranet&wr_id=3

 

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

회사내에서는 몇몇은(사장님이라던가...) 

전자결재등 모든 게시판에서 본인의 권한이 없더라도

관리를 위하여 게시글이나 댓글을 모두 볼 수 있어야 한다.

 

그러나 현재 시스템에는 그런 기능이 없다.

그누보드 자체에서는 게시판 하나 당 한명의 관리자만 등록할 수 있다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585016089_8922.png
 

sir에서 검색을 하여 보니...

9685dbe58fa77d00aa7e00df1f1aaacb_1585016322_4397.png

엄청 많은 글들이 올라 있는 것을 확인... 상단에 있는 몇 개를 읽어보니...

대부분이 아래 글을 참고하라거나 응용하는 게시글로 연결된다.

   손쉽게 최고관리자 여러명 추가하기

간단하고 빠른 적용이 필요한 사람들에겐 굉장히 좋은 방법인건 분명하지만... 

소스에 ID를 매핑하는 것이라 매번 개발자가 작업을 해주어야 하는 번거로움이 있다.

 

그래서... 아래와 같이 콤마로 구분하는 방법으로 만들고자 한다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585017633_9724.png
 

그누보드는 $is_admin 이라는 변수로 관리자 여부를 판단한다.

최고관리자인지, 그룹게시판 관리자인지, 게시판관리자인지 여부를 따져서 처리한다.

우리는 게시물 관리자를 복수로 할 것임으로 $bo_admin으로 검색을 하여

얼마나 많은 부분을 수정해야 하는지 찾아보자.

9685dbe58fa77d00aa7e00df1f1aaacb_1585020240_9937.png
 

이제 분석을 해보겠습니다...

9685dbe58fa77d00aa7e00df1f1aaacb_1585038866_7871.png
 

9685dbe58fa77d00aa7e00df1f1aaacb_1585038909_578.png
9685dbe58fa77d00aa7e00df1f1aaacb_1585038944_4403.png
9685dbe58fa77d00aa7e00df1f1aaacb_1585038995_5712.png
9685dbe58fa77d00aa7e00df1f1aaacb_1585039018_489.png
9685dbe58fa77d00aa7e00df1f1aaacb_1585039055_0617.png
 

게시판 관리자를 사용하는 경우는 3가지 케이스로 파악된다.

1. 게시판 관리자인지 여부 확인

   - $member['mb_id'] == $board['bo_admin']

   - $member['mb_id'] != $board['bo_admin']2. 

2. 관리자의 정보를 얻기 위한 쿼리

   - sql_fetch("select {$fields} from {$g5['member_table']} where mb_id in ('{$board['bo_admin']}') limit 1 ");

3. 계정의 삭제 또는 탈퇴시 게시판관리자일 경우 처리하는 부분

   - sql_query(" update {$g5['board_table']} set bo_admin = '' where bo_admin = '$mb_id' ");

4. 게시물 이동시 게시판관리자가 담당하는 모든 게시판을 가져오는 쿼리

   - $sql .= " and a.bo_admin = '{$member['mb_id']}' ";

 

음.. 대부분이 1번의 경우이고,

그런데, 2번의 경우는 딱 common.lib.php의 get_admin 함수에서만 사용함으로

아래와 같이 직접 수정한다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585039873_0588.png
4번의 경우도 딱 한번이다. 이 경우는 게시판의 글을 이동시킬때 사용되는 쿼리.

게시판 관리자가 게시글을 옮길때에도 권한이 있는 게시판으로만 이동시켜야 하기에 

쿼리 내부에 조건문이 들어 있다. 하기와 같이 변경.

9685dbe58fa77d00aa7e00df1f1aaacb_1585045534_9722.png
 

그리고, 3번과경우도 딱 한 번임이지만, 1번을 이유로 만든 함수를 이용해야 함으로 마지막에 설명하겠음.

 

이제 마지막 남은 첫번째 케이스...

현재 로그인한 사용자의 ID와 게시판관리자로 등록된 아이디를 직접 비교하는 형식이다.

대부분 iF 문에 들어 있어 위와 같이 단순한 작업으로는 어렵다.

 

로그인한 사용자의 ID가 게시판관리자 아이디 문자열에 포함되는지 여부로 판단하려다가...

로그인한 사용자의 ID가 aa일때, 게시판관리자에 등록된 문자열이 "aaa,bbb,ccc"라면 관리자가 되버리는 오류가 있어서 패스...

 

번거롭지만 현재 로그인한 계정이 게시판 관리자인지 확인해주는 함수를 만들어 적용하기로 한다.

새로운 함수를 만드는 것임으로 extend 디렉토리를 활용할 것이다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585041598_5866.png
위에 만든 tank.extend.php가 모든 파일에서 include가 될 수 있도록 /lib/common.lib.php를 하기와 같이 수정합니다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585041987_3126.png
 

그 다음 전체 검색을 해서 나왔단 35군데 중에서 관련이 있는 곳을 모두 찾아서 수정합니다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585042250_1219.png
9685dbe58fa77d00aa7e00df1f1aaacb_1585044624_288.png 

대부분의 경우는 위의 첨부한 이미지들의 경우이다. 참고해서 수정하면 된다.

 

3번의 경우는 모든 게시판의 관리자들을 검색하여 

삭제 또는 탈퇴되는 ID가 게시판 관리자 여부인지를 판단하여 해당 계정만 삭제해야 한다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585043778_5205.png
 

이제부터 본 작업이다...

루미집사님의 전자결재를 사용하고 있기에 관련 부분을 찾아 수정해야 한다.

애석하게도 루미집사님의 전자결재에서는 bo_admin이 검색되지 않아서... 흑...

(루미집사님의 루미그리드에서는 'delete_data.php'에서 한 부분 검색이 된다.)

로직 점검을 해서 필요한 부분이 있는지 직접 찾아보야야겠다...

그러나 시간도 없고, 바쁘기도 하고...

 

일단 목표는 게시판 관리자가 모든 게시글을 보이면 되는 것임으로 이것 중심으로 수정을 할 것이다.

(주의 : 현재 전자결재 게시판은 최고관리자라도 열람권한이 없으면 볼 수 없다. 해당 부분도 함께 수정을 해야 한다.)

우선 과감하게 게시판관리자부터 수정해버렷!!!

9685dbe58fa77d00aa7e00df1f1aaacb_1585046342_7526.png
헉... 그런데... 여기서... input tag내에 글자 제한이 있다.... 이것 역시 수정해야 한다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585046566_2167.png
 

"열람 권한이 없습니다"

9685dbe58fa77d00aa7e00df1f1aaacb_1585053423_6723.png

 9685dbe58fa77d00aa7e00df1f1aaacb_1585046895_5206.png

9685dbe58fa77d00aa7e00df1f1aaacb_1585046991_8658.png
음... 어차피 게시판 관리자니까 게시판 리스트 페이지를 열때 확인하도록 하자. (아마 하고 있을 것으로 판단됨)

만약 최고관리자이거나 게시판관리자일 경우, 자바스크립트 변수에 넣을 수 있도록 하자.

관련 페이지는 "/bbs/board.php?bo_table=XXXXX"이다.

9685dbe58fa77d00aa7e00df1f1aaacb_1585047603_6435.png
오.. 역시 이미 있음... 일이 쉬워졌음...

9685dbe58fa77d00aa7e00df1f1aaacb_1585047845_3782.png그러나... 게시판관리자일때는 빈칸으로 나오네... 흠냐... 그래서 검색...

9685dbe58fa77d00aa7e00df1f1aaacb_1585047995_7298.png
9685dbe58fa77d00aa7e00df1f1aaacb_1585048054_8349.png이제... $is_admin을 찾자...

9685dbe58fa77d00aa7e00df1f1aaacb_1585048177_6513.png
아까 수정했던 is_admin 함수... 그럼 할 필요도 없을 듯... 확인!!!

9685dbe58fa77d00aa7e00df1f1aaacb_1585049283_3441.png
 

후훗... 이제 list.js에서 if 문 하나 더 넣으면 됨 ^^;;

9685dbe58fa77d00aa7e00df1f1aaacb_1585050629_3799.png
 

완료!!!

이제 권한이 없어도, 최초 상신을 안했어도 관리자라면 무조건 열어서 볼 수 있다.

추천2

댓글 전체

전체 1,631 |RSS
그누보드5 팁자료실 내용 검색

회원로그인

진행중 포인트경매

  1. 참여17 회 시작20.03.25 10:40 종료20.04.01 10:40

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT