문서의 이전 판입니다!
Authxe: XE & Dokuwiki 동시 로그인
도쿠위키의 강력한 유연성 (커스터마이징 능력) 을 십분 활용하여 로긴/로그아웃은 Xpressengine (XE)로 하고 도쿠위키에서는 그 정보만 가져다 쓰는 방법이다.
도쿠위키의 로긴/로그아웃 버튼은 떼버려야한다. 설정의 Disabled action에 login,logout을 입력한다.
inc/init.php 수정
도쿠위키 루트에 있는 파일 doku.php 혹은 /inc/init.php를 수정한다.
doku.php를 수정하면 페이지를 표시하는 것 외의 다른 작업 (그림 올리기 등) 에서는 ACL이 안먹는다. 그러니 init.php를 수정해야 한다.
가장 최상단에 다음의 내용을 삽입한다. 도쿠위키 시작시에 XE도 같이 시작하는 것이다.
<?php define("__ZBXE__",true); // xe 여기있소! define("__XE__",true); //XE 1.5.3 이후의 버전에서는 추가해야 한다. require_once("/home2/vaslor/html/bb/config/config.inc.php"); //XE설정파일의 적절한 경로를 넣다. $oContext = &Context::getInstance(); $oContext->init(); //도쿠위키 시작시에 XE도 같이 시작하는 것이다. ?>
authxe plugin 추가
lib/plugins 폴더에 authxe 폴더를 추가하고 아래 파일을 넣다.
- auth.php
<?php // must be run within Dokuwiki if(!defined('DOKU_INC')) die(); /** * Authxe authentication backend * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author V_L <[email protected]> */ class auth_plugin_authxe extends DokuWiki_Auth_Plugin { protected $users = null; protected $_pattern = array(); public function __construct() { parent::__construct(); $this->cando['external'] = true; global $config_cascade; } function trustExternal($user,$pass,$sticky=false){ global $USERINFO; if (class_exists(Context)) { $logged_info = Context::get("logged_info"); if($logged_info){ $sticky ? $sticky = true : $sticky = false; $USERINFO['name'] = $logged_info->nick_name; $USERINFO['pass'] = $logged_info->password; $USERINFO['mail'] = $logged_info->email_address; $USERINFO['grps'] = @array_values(@array_filter($logged_info->group_list)); $_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; } else return false; } }
도쿠위키 설정
템플릿 선택 및 어드민 설정
위치 | 내용 |
---|---|
설정 → 인증설정→authtype 인증 백-엔드 | "authxe"를 선택한다. |
설정 → 인증설정→ manager 관리자 |
이 것보다는 그냥 xe에서 그룹을 admin, user등으로 바꾸는 것이 더 낫다.
도쿠위키 로그인/로그아웃 막음
이제 도쿠위키의 로긴/로그아웃은 작동하지 않는다. 의미가 없으므로 설정에서 그림과 같이 등록, 로긴,로그아웃을 제한한다. 이렇게 하면 메뉴에 해당항목이 나타나지 않다.
템플릿(스킨)을 적절히 수정하여 login/logout 버튼을 뗍니다.
로긴/로그아웃 링크 넣기
사이드바에 넣기 (쉬움)
사이드바 (sidebar) 를 편집한다.
[[http://vaslor.net/bb/?act=dispMemberLogout|로그아웃]] [[http://vaslor.net/bb/?act=dispMemberLoginForm|로그인]]
로그인/로그아웃 상태가 반영되지 않는 단점(!)이 있다.
xe의 로긴/로그아웃으로 연결되는 링크를 템플릿을 수정하여 넣기
뷀넷에서 처리한 방식이다.
<ul class="" style="text-align:right"> <?PHP if (class_exists(Context)) { $logged_info = Context::get("logged_info"); if($logged_info){ echo "<li ><a>".$logged_info->nick_name." (".$logged_info->user_id.")"."</a></li> <li ><a s href=\"http://vaslor.net/bb/?act=dispMemberLogout\">로그아웃</a></li>"; } else { echo "<li><a href=\"http://vaslor.net/bb/?act=dispMemberSignUpForm\">회원가입</a></li> <li><a href=\"http://vaslor.net/bb/?act=dispMemberLoginForm\">로그인</a></li>"; } }?> </ul>
사용하는 템플릿 주로 dokuwiki 템플릿을 직접 수정하여 위의 코드를 삽입하는 것이다. 도쿠위키 설치된 곳에서 /lib/tpl/dokuwiki/main.php 를 수정하면된다.
44줄에 사이드 바 명령 밑에 넣으면 적당할 듯 보이다….
<div class="content"> <?php tpl_flush() ?> <?php tpl_includeFile('sidebarheader.html') ?> <?php tpl_include_page($conf['sidebar'], 1, 1) ?> <?php tpl_includeFile('sidebarfooter.html') ?> </div>
이것에 문구를 추가한다.
<div class="content"> <?php tpl_flush() ?> <?php tpl_includeFile('sidebarheader.html') ?> <ul class="" style="text-align:right"> <?PHP if (class_exists(Context)) { $logged_info = Context::get("logged_info"); if($logged_info){ echo "<li ><a>".$logged_info->nick_name." (".$logged_info->user_id.")"."</a></li> <li ><a s href=\"http://vaslor.net/bb/?act=dispMemberLogout\">로그아웃</a></li>"; } else { echo "<li><a href=\"http://vaslor.net/bb/?act=dispMemberSignUpForm\">회원가입</a></li> <li><a href=\"http://vaslor.net/bb/?act=dispMemberLoginForm\">로그인</a></li>"; } }?> </ul> <?php tpl_include_page($conf['sidebar'], 1, 1) ?> <?php tpl_includeFile('sidebarfooter.html') ?> </div>
http://vaslor.net/bb
를 해당 사이트의 게시판주소로 바꿉니다.
50475960
누구나 수정하실 수 있다. 위키 사용법 참고하라. |
---|