문서의 이전 판입니다!


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 버튼을 뗍니다.

authxe.jpg

로긴/로그아웃 링크 넣기

사이드바에 넣기 (쉬움)

사이드바 (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

누구나 수정하실 수 있다. 위키 사용법 참고하라.

역링크