웹마스터 팁

안녕하세요. 혼자 삽질을 하다가 겨우 완성해서 저 처럼 줄기차게 구글의 신탁을 찾고 계실 분들을 위해 정리 하나 올려 봅니다. 외부 프로그램 연동해 쓰시는 분들은 대부분 이미 잘 아실 내용입니다. 기본적으로 아래 문서들에 나온 내용을 step by step으로 따라할 수 있게 하나로 정리했습니다.


XE와 별도 프로그램 연동시 세션 공유 : http://www.xpressengine.com/tip/17536608

XE와 도쿠위키(dokuwiki) 세션으로 연동 : http://50ndd1n6.tistory.com/59

Authentication Plugins : https://www.dokuwiki.org/devel:auth_plugins

Working Example of trustExternal() : https://www.dokuwiki.org/devel:working_example_of_trustexternal


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

0. 당연하지만 모든 작업 하시기 전에 백업 잊지마시구요...


1. 제일 먼저 할 일은 도쿠위키 인증 백엔드 파일을 만드는 것입니다. 도쿠위키가 2013년 버전업을 하면서 인증방식이 플러그인식으로 바뀌었습니다. 그래서 위치가 


(도쿠위키설치경로)/lib/plugins/auth(인증백엔드이름)/auth.php


가 되어야 합니다. 예를들면


doku/lib/plugins/authxe/auth.php


이런 식으로 말이죠. 그냥 디폴트 인증 플러그인인 authplain을 하나 복사해서 디렉토리명만 바꿔주시면 기본적인건 끝납니다. 다음으로 auth.php를 열어서


// must be run within Dokuwiki
if(!defined('DOKU_INC')) die();

/**
 * XE session sharing authentication backend
 */
class auth_plugin_authxe extends DokuWiki_Auth_Plugin {
    /**
     * Constructor
     *
     * Carry out sanity checks to ensure the Context object 
     * is able to operate. Set capabilities.
     *
     * @author  Christopher Smith <chris@jalakai.co.uk>
     */
    public function __construct() {
        parent::__construct();
        global $config_cascade;

        $this->cando['external'] = true;
    }
    
    function trustExternal($user, $pass, $sticky = false) {
        global $USERINFO;
global $conf;
 
if (!empty($_SESSION[DOKU_COOKIE]['auth']['info'])) {
    $USERINFO['name'] = $_SESSION[DOKU_COOKIE]['auth']['info']['user'];
    $USERINFO['mail'] = $_SESSION[DOKU_COOKIE]['auth']['info']['mail'];
    $USERINFO['grps'] = $_SESSION[DOKU_COOKIE]['auth']['info']['grps'];
    $_SERVER['REMOTE_USER'] = $_SESSION[DOKU_COOKIE]['auth']['user'];
    return true;
}
 
        $logged_info = Context::get('logged_info');
             
if ($logged_info) {
    $sticky ? $sticky = true : $sticky = false;
    $USERINFO['name'] = $logged_info->user_id;
    $USERINFO['mail'] = $logged_info->email_address;
    
    $is_admin = in_array('Admin', $logged_info->group_list);
    $is_member = in_array('Member', $logged_info->group_list);
    ...
    if ($is_admin) {
                $USERINFO['grps'] = array('Admin');
    } else {
        if ($is_member) {
            $USERINFO['grps'] = array('Member');
        } else if (...) {
            ...
        } else {
               $USERINFO['grps'] = array('Wait-listed');
        }
    }
    
    $_SERVER['REMOTE_USER'] = $logged_info->user_id;
    $_SESSION[DOKU_COOKIE]['auth']['user'] = $logged_info->user_id;
    $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;

    return true;
} else {
    return false;
}
    }    
}


이런 식으로 씁니다. 가운데 ... 부분은 추가로 ACL에 원하시는 XE 그룹을 넣으시면 됩니다.


2. 다음으로 ACL 목록을 수정합니다. 이것은


(도쿠위키설치경로)/conf/acl.auth.php


여기에 있습니다. 일단 XE 그룹명과 동일하게 이름들만 추가해 주시고 (접근은 전역 (*), 권한은 1 (read only)로 통일) 나중에 도쿠위키의 ACL 관리자 화면에서 상세 권한 설정을 하시면 됩니다.  이를테면


* @ALL 1

* @Member 1

...


이런 식으로 씁니다. Admin (관리그룹)은 추가하실 필요 없습니다. 그룹명은 영문으로 하실 것을 권합니다.


3. 이제 도쿠위키 관리자 모드로 들어갑니다. 일단 ACL 관리자를 여셔서 방금 추가한 그룹들이 제대로 추가가 되었는지 확인합니다. 다음으로 플러그인 관리자를 여셔서 1번에서 추가한 XE용 인증 플러그인을 활성화하고 저장합니다. (아직 authplain을 비활성화하지 마세요!)


4. 이제 도쿠위키 설정 파일을 수정해야 합니다. 도쿠위키 전통의 설정파일인


(도쿠위키설치경로)/conf/local.php


를 여셔서 $conf['superuser']를 XE에서 사용하는 관리자 그룹명으로 변경합니다. (ex. @Admin) 다음으로 $conf['defaultgroup']을 원하시는 XE의 기본 사용자 그룹명으로 써줍니다. 이곳에 들어갈 그룹명은 XE에서 가입하여 로그인시 아무런 등업을 하지 않은 상태에서 부여되는 기본 그룹명을 지정하시는게 좋습니다.


5. 이제 세션을 읽어오기위해 


(도쿠위키설치경로)/doku.php


를 수정합니다. 제일 위의 주석 바로 아래에


define('__XE__', true);
require_once('(XE설치경로)/config/config.inc.php');
$oContext = &Context::getInstance();
$oContext->init();


를, 맨 아래에는


$oContext->close();


를 추가합니다.


6. 이제 다시 도쿠위키 관리화면으로 돌아가서 설정 화면에서 기본 인증 모듈에 authxe를 선택하시고 저장하시면 됩니다. 만약 5번 항목 수정 이후 관리자 모드 접근이 안될 경우 


(도쿠위키설치경로)/conf/local.php


를 여셔서 $conf['authtype']에 인증 플러그인명을 적어주시면 됩니다.


7. 정상 작동을 확인하시고 스킨을 적절히 수정하시면 끝입니다 ^^


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


혹시 제가 빠뜨린 것이나 잘못하고 있는 것이 있다면 덧글로 알려주시면 감사하겠습니다 m(_ _)m


p.s. 어서 XE 위키가 안정화 되었으면 좋겠네요. 가능하면 도쿠위키 문법도 지원해 주시고ㅎㅎ


p.s.2 멀티 업로드 관련 문제로 이 방법으로 하시면 파일 업로드가 안됩니다;;; 어느 고수 분이 해결책을 알려주시면 좋겠네요 ㅠㅠ

제목 글쓴이 날짜
기본게시판에서 익명 선택하여 "게시글, 댓글" 작성이 가능하도록 세팅하기(sketchbook5 기준) [15] Ashon 2013.01.08
네이버 검색 API XE하고 연동하기 [3] mindpainter 2013.01.09
Startssl 무료인증서 백업 복구 성공기!! [2] 제이엔지 2013.01.15
서버는 euc-kr, DB는 utf-8일때 백슬래시(backslash) 표기되는 증상 [2] file 곰고긔 2013.01.16
[SocialXE] 트위터 로그인시 프로필 사진이 표시되지 않는 문제 해결하기 [3] file TUW 2013.02.03
방명록 모듈 1.5.1.1에서 비회원이 남긴글 삭제하기 조슈아킴 2013.02.14
윈도우 서버 2012 에서 제로보드XE 설치부터 사용하기. [16] file 부롱이 2013.03.29
Startssl, iis에서 설치법. file 식군 2013.04.01
XE 1.7 + 도쿠위키 Weatherwax RC1 세션 및 그룹 연동 [20] ay 2013.04.18
글쓰기 안되고 관리자만 글쓰기가 될때 해결법 [2] 소푸 2013.06.12
아이디 계정때도 이메일 변경시 재인증 메일 발송하기 [1] 혼ME 2013.06.19
XE + dokuwiki 도쿠위키 세션 연동시 파일 올리기 해결방법 [1] uotalkie 2013.06.25
스케치북 게시판 스킨에서 라이브리 소셜댓글 다는 법(수정완료) file 착한부산남자 2013.06.27
Recruit 모듈 - 일반회원 채용글 등록할 수 있도록 수정 [10] 홍채화 2013.07.27
XE 위키 모듈에서 소셜XE 댓글 사용하기 novelic 2013.07.31
XE 내가 작성한 글 모두 일괄 추천하기. [4] 엘카 2013.08.01
새로고침없이 페이지 리로딩 간단하고 쉽게 서버한테는 미안하게 하는법 (서버단이 아니고 스킨에 ㅠ jquery load씀) 게시글,댓글,추천등 모든 부분다가능합니다. [2] 장포크 2013.08.08
최신 제로보드 XE 동영상 강의 [25] 하얀마법 2013.08.09
[1.7.4] 로그인창 옆에 신규 쪽지 수 보여주기 socialskyo 2013.08.13
XE 기본 메시지창에서 '로그인' 대신 '돌아가기' 나오도록 하기 [2] file 컴퓨터매니아 2013.08.25