강의 및 학생지도
연구실 전용
공개 메뉴
- 구성원
- 연구실 정보
- 기타
<?php
/**
* ZBXE authentication backend
* DokuWiki용 제로보드 XE 인증 모듈
*
* @license Creative Commons 3.0 (원저작자 표시 조건 의무)
* @author Venister (Joongpil Cho) <venister@empal.com>
*/
class auth_zbxe extends auth_basic {
var $url = array();
function auth_zbxe() {
global $conf;
define('__ZBXE__', true);
$config_file = $conf['auth']['zbxe']['path']."files/config/db.config.php";
require_once ($config_file);
$this->url['path'] = $conf['auth']['zbxe']['path'];
$this->url['db_prefix'] = $db_info->db_table_prefix;
$this->url['host'] = $db_info->db_hostname;
$this->url['user'] = $db_info->db_userid;
$this->url['pass'] = $db_info->db_password;
$this->url['database'] = $db_info->db_database;
// 데이터베이스 연결
$this->url['link'] = mysql_connect($this->url['host'], $this->url['user'], $this->url['pass']);
if (!$this->url['link']) {
msg('데이터베이스 서버에 연결할 수 없습니다: ' . mysql_error());
$this->success = false;
return;
}
if (!mysql_select_db($this->url['database'], $this->url['link'])) {
msg('데이터베이스에 연결할 수 없습니다: ' . mysql_error());
$this->success = false;
return;
}
mysql_query("set names utf8");
// PHP 4때문에 destructor를 명시적 선언
register_shutdown_function("auth_zbxe_disconnect", $this);
}
// 패스워드 체크하는 함수
function checkPass($user, $pass) {
$query = "select count(*) from ".$this->url['db_prefix']."_member where user_id='$user' and password=MD5('$pass')";
$result = mysql_query($query);
if(!$result){
msg('잘못된 쿼리: ' . mysql_error());
return false;
}
$count = mysql_result($result, 0, 0);
return ($count == 1 ? true: false);
}
// 유저 정보를 리턴
//
// name : 문자열, 유저이름
// mail : 문자열, 메일주소
// grps : 배열, 유저의 그룹 목록
function getUserData($user) {
global $conf;
$query = "select user_name, email_address, member_srl from ".$this->url['db_prefix']."_member where user_id='$user'";
$result = mysql_query($query);
if(!$result) return null;
if($data = mysql_fetch_array($result)){
$info['name'] = $data[user_name];
$info['mail'] = $data[email_address];
$member_srl = $data[member_srl];
}
$group_table = $this->url['db_prefix']."_member_group";
$group_member_table = $this->url['db_prefix']."_member_group_member";
$query = "select g.title as title from ".$group_table." g, ".$group_member_table." gm where g.group_srl = gm.group_srl and gm.member_srl = '$member_srl'";
$result = mysql_query($query);
if (!$result){
msg('쿼리 실패: ' . mysql_error());
return false;
}
while($data = mysql_fetch_array($result)){
if(strpos($conf['auth']['zbxe']['user'], $data[title]) !== FALSE){
$info['grps'][] = 'user';
}
if(strpos($conf['auth']['zbxe']['admin'], $data[title]) !== FALSE){
$info['grps'][] = 'admin';
}
}
return $info;
}
}
function auth_zbxe_disconnect($obj) {
mysql_close($obj->url['link']);
}
?>
$conf['useacl'] = 1; $conf['superuser'] = '@admin'; $conf['authtype'] = 'zbxe'; $conf['auth']['zbxe']['path'] = "제로보드 설치 전체경로(반드시 /로 끝나야한다)"; (ex : /apache2/xe/) $conf['auth']['zbxe']['user'] = "user그룹에 포함될 ZBXE의 그룹명. 여러개는 ;로 구분한다."; $conf['auth']['zbxe']['admin'] = "admin그룹에 포함될 ZBXE의 그룹명. 여러개는 ;로 구분한다."; $conf['openregister']= 0; $conf['autopasswd'] = 1; $conf['resendpasswd']= 0;