mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-05-01 08:12:17 +09:00
관리자 페이지 패키지별 UI 적용을 위한 1차 작업 마무리
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@4616 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
856ab513ec
commit
ba4e9e26e2
248 changed files with 3520 additions and 3424 deletions
15
modules/ldap/conf/info.xml
Normal file
15
modules/ldap/conf/info.xml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module version="0.2">
|
||||
<title xml:lang="ko">LDAP 인증 연동 모듈</title>
|
||||
<name xml:lang="ko">zero</name>
|
||||
<description xml:lang="ko">
|
||||
LDAP 인증 연동하는 모듈입니다.
|
||||
적수님(http://ggang.net)님이 매우 큰 도움 주셨습니다.
|
||||
</description>
|
||||
<version>0.1</version>
|
||||
<date>2007-07-28</date>
|
||||
<category>accessory</category>
|
||||
<author email_address="zero@zeroboard.com" link="blog.nzeo.com">
|
||||
<name xml:lang="ko">zero</name>
|
||||
</author>
|
||||
</module>
|
||||
8
modules/ldap/conf/module.xml
Normal file
8
modules/ldap/conf/module.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<module>
|
||||
<grants />
|
||||
<actions>
|
||||
<action name="dispLdapAdminConfig" type="view" admin_index="true" standalone="true" />
|
||||
<action name="procLdapAdminInsertConfig" type="controller" standalone="true" />
|
||||
</actions>
|
||||
</module>
|
||||
31
modules/ldap/lang/ko.lang.php
Normal file
31
modules/ldap/lang/ko.lang.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* @file modules/ldap/lang/ko.lang.php
|
||||
* @author zero <zero@nzeo.com>
|
||||
* @brief 한국어 언어팩 (기본적인 내용만 수록)
|
||||
**/
|
||||
|
||||
$lang->ldap = 'LDAP 인증 연동';
|
||||
$lang->use_ldap = 'LDAP 인증 사용';
|
||||
$lang->ldap_server = 'LDAP 서버 주소';
|
||||
$lang->ldap_port = 'LDAP 서버 포트번호';
|
||||
$lang->ldap_userdn_suffix = '사용자 접미사';
|
||||
$lang->ldap_basedn = 'base DN';
|
||||
|
||||
$lang->ldap_email_entry = 'Email 대상 컬럼';
|
||||
$lang->ldap_nickname_entry = '닉네임 대상 컬럼';
|
||||
$lang->ldap_username_entry = '사용자 이름 대상 컬럼';
|
||||
$lang->ldap_group_entry = '그룹 대상 컬럼';
|
||||
|
||||
$lang->about_use_ldap = 'LDAP 인증 연동을 위해서는 서버 정보등을 입력 후 사용에 체크를 하셔야 합니다';
|
||||
$lang->about_ldap_server = '인증과 정보를 요청할 수 있는 LDAP 서버 정보를 입력해주세요';
|
||||
$lang->about_ldap_port = 'LDAP 서버의 port 정보를 입력해주세요';
|
||||
$lang->about_ldap_userdn_suffix = '인증을 위한 사용자 접미사를 입력해주세요. (예: @abc.com)';
|
||||
$lang->about_ldap_basedn = '디렉토리의 base DN을 입력해주세요. (예: dc=abc,dc=com)';
|
||||
|
||||
$lang->about_ldap_email_entry = 'LDAP정보중 이메일 정보로 사용할 컬럼명을 입력해주세요. (중복 금지)';
|
||||
$lang->about_ldap_username_entry = 'LDAP정보중 사용자 이름 사용할 컬럼명을 입력해주세요. (중복 가능)';
|
||||
$lang->about_ldap_nickname_entry = 'LDAP정보중 닉네임으로 사용할 컬럼명을 입력해주세요. (중복 금지)';
|
||||
$lang->about_ldap_group_entry = 'LDAP정보중 사용자의 그룹으로 지정될 컬럼명을 입력해주세요.';
|
||||
|
||||
?>
|
||||
31
modules/ldap/ldap.admin.controller.php
Normal file
31
modules/ldap/ldap.admin.controller.php
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
<?php
|
||||
/**
|
||||
* @class ldapAdminController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief ldap 모듈의 admin controller class
|
||||
**/
|
||||
|
||||
class ldapAdminController extends ldap {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDAP 인증 연동 설정
|
||||
**/
|
||||
function procLdapAdminInsertConfig() {
|
||||
// 기본 정보를 받음
|
||||
$args = Context::gets('use_ldap','ldap_server','ldap_port','ldap_userdn_suffix','ldap_basedn','ldap_email_entry','ldap_nickname_entry','ldap_username_entry','ldap_group_entry');
|
||||
if($args->use_ldap !='Y') $args->use_ldap = 'N';
|
||||
if(!$args->ldap_port) $args->ldap_port = 389;
|
||||
|
||||
// module Controller 객체 생성하여 입력
|
||||
$oModuleController = &getController('module');
|
||||
$output = $oModuleController->insertModuleConfig('ldap',$args);
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
?>
|
||||
29
modules/ldap/ldap.admin.view.php
Normal file
29
modules/ldap/ldap.admin.view.php
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
/**
|
||||
* @class ldapAdminView
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief ldap 모듈의 admin view class
|
||||
**/
|
||||
|
||||
class ldapAdminView extends ldap {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
// 템플릿 경로 지정
|
||||
$this->setTemplatePath($this->module_path.'tpl');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 스팸필터의 설정 화면
|
||||
**/
|
||||
function dispLdapAdminConfig() {
|
||||
$oModel = &getModel('ldap');
|
||||
Context::set('config',$oModel->getConfig());
|
||||
|
||||
// 템플릿 파일 지정
|
||||
$this->setTemplateFile('index');
|
||||
}
|
||||
}
|
||||
?>
|
||||
57
modules/ldap/ldap.class.php
Normal file
57
modules/ldap/ldap.class.php
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
/**
|
||||
* @class ldap
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief ldap 모듈의 high class
|
||||
**/
|
||||
|
||||
class ldap extends ModuleObject {
|
||||
|
||||
/**
|
||||
* @brief 설치시 추가 작업이 필요할시 구현
|
||||
**/
|
||||
function moduleInstall() {
|
||||
// action forward에 등록 (관리자 모드에서 사용하기 위함)
|
||||
$oModuleController = &getController('module');
|
||||
$oModuleController->insertActionForward('ldap', 'view', 'dispLdapAdminConfig');
|
||||
|
||||
// 로그인 연동 트리거
|
||||
$oModuleController->insertTrigger('member.doLogin', 'ldap', 'controller', 'triggerLdapLogin', 'before');
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 설치가 이상이 없는지 체크하는 method
|
||||
**/
|
||||
function checkUpdate() {
|
||||
$oModuleModel = &getModel('module');
|
||||
if(!$oModuleModel->getActionForward('dispLdapAdminConfig')) return true;
|
||||
|
||||
if(!$oModuleModel->getTrigger('member.doLogin', 'ldap', 'controller', 'triggerLdapLogin', 'before')) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 업데이트 실행
|
||||
**/
|
||||
function moduleUpdate() {
|
||||
$oModuleModel = &getModel('module');
|
||||
$oModuleController = &getController('module');
|
||||
|
||||
if(!$oModuleModel->getActionForward('dispLdapAdminConfig'))
|
||||
$oModuleController->insertActionForward('ldap', 'view', 'dispLdapAdminConfig');
|
||||
|
||||
if(!$oModuleModel->getTrigger('member.doLogin', 'ldap', 'controller', 'triggerLdapLogin', 'before'))
|
||||
$oModuleController->insertTrigger('member.doLogin', 'ldap', 'controller', 'triggerLdapLogin', 'before');
|
||||
|
||||
return new Object(0,'success_updated');
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 캐시 파일 재생성
|
||||
**/
|
||||
function recompileCache() {
|
||||
}
|
||||
}
|
||||
?>
|
||||
110
modules/ldap/ldap.controller.php
Normal file
110
modules/ldap/ldap.controller.php
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
<?php
|
||||
/**
|
||||
* @class ldapController
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief ldap 모듈의 controller class
|
||||
**/
|
||||
|
||||
class ldapController extends ldap {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* @brief LDAP 연동하여 정보를 return하는 method
|
||||
**/
|
||||
function triggerLdapLogin(&$obj) {
|
||||
// ldap 관련 설정 정보를 구함
|
||||
$oLdapModel = &getModel('ldap');
|
||||
$config = $oLdapModel->getConfig();
|
||||
if($config->use_ldap != 'Y') return new Object();
|
||||
|
||||
// 사용자 아이디와 비밀번호를 trigger obj 변수에서 구함
|
||||
$user_id = $obj->user_id;
|
||||
$password = $obj->password;
|
||||
|
||||
// 인증 시도
|
||||
$output = $oLdapModel->ldap_conn($user_id, $password, $config->ldap_userdn_suffix, $config->ldap_basedn, $config->ldap_server, $config->ldap_port);
|
||||
|
||||
// 인증 실패시 아무 event없이 그냥 return하여 기존 인증을 계속 유지
|
||||
if(!$output->toBool()) return new Object();
|
||||
|
||||
// 설정정보를 바탕으로 기본 정보를 구함
|
||||
$ldap_info = $output->getVariables();
|
||||
|
||||
$info->user_id = $user_id;
|
||||
$info->password = md5($password);
|
||||
$info->email_address = $ldap_info[$config->ldap_email_entry];
|
||||
$info->nick_name = $ldap_info[$config->ldap_nickname_entry];
|
||||
$info->user_name = $ldap_info[$config->ldap_username_entry];
|
||||
list($info->email_id, $info->email_host) = explode('@', $info->email_address);
|
||||
$group = $ldap_info[$config->ldap_group_entry];
|
||||
|
||||
// 이미 존재하는 회원인지 확인
|
||||
$oMemberModel = &getModel('member');
|
||||
$member = $oMemberModel->getMemberInfoByUserID($info->user_id);
|
||||
|
||||
// 이미 존재하면 메일주소/닉네임/사용자이름/그룹중에 변경된 것이 있는지 확인
|
||||
if($member->user_id == $info->user_id) {
|
||||
$info->member_srl = $member->member_srl;
|
||||
|
||||
if($info->password != $member->password || $info->email_address != $member->email_address || $info->nick_name != $member->nick_name || $info->user_name != $member->user_name) {
|
||||
$output = executeQuery('member.updateMember', $info);
|
||||
} else $output = new Object();
|
||||
|
||||
// 존재하지 않으면 회원정보 추가
|
||||
} else {
|
||||
$info->member_srl = getNextSequence();
|
||||
$info->allow_mailing = 'Y';
|
||||
$info->allow_message = 'Y';
|
||||
$info->denied = 'N';
|
||||
$info->is_admin = 'N';
|
||||
|
||||
// 아이디, 닉네임, email address 의 중복 체크
|
||||
$member_srl = $oMemberModel->getMemberSrlByNickName($info->nick_name);
|
||||
if($member_srl) return new Object(-1,'msg_exists_nick_name');
|
||||
|
||||
$member_srl = $oMemberModel->getMemberSrlByEmailAddress($info->email_address);
|
||||
if($member_srl) return new Object(-1,'msg_exists_email_address');
|
||||
|
||||
$output = executeQuery('member.insertMember', $info);
|
||||
}
|
||||
|
||||
if(!$output->toBool()) return new Object();
|
||||
|
||||
$group_list = $member->group_list;
|
||||
if(!$group_list || !is_array($group_list)) $group_list = array();
|
||||
|
||||
// 수정 또는 입력 결과가 이상없다면 그룹 정보 작업
|
||||
if($group && !in_array($group, $group_list)) {
|
||||
$group_srl = 0;
|
||||
$groups = $oMemberModel->getGroups();
|
||||
foreach($groups as $k => $v) {
|
||||
if($v->title == $group) {
|
||||
$group_srl = $v->group_srl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 그룹 추가
|
||||
if(!$group_srl) {
|
||||
$oMemberAdminController = &getAdminController('member');
|
||||
$group_srl = $group_args->group_srl = getNextSequence();
|
||||
$group_args->title = $group;
|
||||
$oMemberAdminController->insertGroup($group_args);
|
||||
}
|
||||
|
||||
// 그룹 설정
|
||||
$oMemberController = &getController('member');
|
||||
$oMemberController->addMemberToGroup($info->member_srl, $group_srl);
|
||||
}
|
||||
|
||||
return new Object();
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
66
modules/ldap/ldap.model.php
Normal file
66
modules/ldap/ldap.model.php
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
/**
|
||||
* @class ldapModel
|
||||
* @author zero (zero@nzeo.com)
|
||||
* @brief ldap 모듈의 Model class
|
||||
**/
|
||||
|
||||
class ldapModel extends ldap {
|
||||
|
||||
/**
|
||||
* @brief 초기화
|
||||
**/
|
||||
function init() {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief LDAP 설정 정보 return
|
||||
**/
|
||||
function getConfig() {
|
||||
$oModuleModel = &getModel('module');
|
||||
$config = $oModuleModel->getModuleConfig('ldap');
|
||||
if(!$config->ldap_port) $config->ldap_port = 389;
|
||||
if(!$config->ldap_email_entry) $config->ldap_email_entry = 'mail';
|
||||
if(!$config->ldap_nickname_entry) $config->ldap_nickname_entry = 'displayname';
|
||||
if(!$config->ldap_username_entry) $config->ldap_username_entry = 'description';
|
||||
if(!$config->ldap_group_entry) $config->ldap_group_entry = 'department';
|
||||
return $config;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief LDAP 연동하여 정보를 return하는 method
|
||||
**/
|
||||
function ldap_conn($user_id, $password, $ldap_userdn_suffix, $base_dn, $ldap_server, $ldap_port = 389) {
|
||||
|
||||
if(!function_exists('ldap_connect')) return new Object(-1,'ldap module is not exists');
|
||||
|
||||
$ds = @ldap_connect($ldap_server, $ldap_port);
|
||||
if(!$ds) return new Object(-1,'server not connected');
|
||||
|
||||
if(!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) return new Object(-1,'fail to set option');
|
||||
|
||||
$userdn = $user_id.$ldap_userdn_suffix;
|
||||
|
||||
if(!@ldap_bind($ds, $userdn, $password)) return new Object(-1,'fail to bind');
|
||||
|
||||
$ldap_sr = @ldap_search($ds, $base_dn, '(cn='.$user_id.')', array ('*'));
|
||||
if(!$ldap_sr) return new Object(-1,'fail to search');
|
||||
|
||||
$info = ldap_get_entries($ds, $ldap_sr);
|
||||
|
||||
if($info['count']<1 || !is_array($info) || !count($info[0]) ) return new Object(-1,'not found');
|
||||
|
||||
|
||||
$obj = new Object();
|
||||
foreach($info[0] as $key => $val) {
|
||||
if(preg_match('/^[0-9]*$/',$key) || $key == 'objectclass') continue;
|
||||
|
||||
$obj->add($key, $val[0]);
|
||||
}
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
7
modules/ldap/tpl/filter/insert_config.xml
Normal file
7
modules/ldap/tpl/filter/insert_config.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<filter name="insert_config" module="ldap" act="procLdapAdminInsertConfig" confirm_msg_code="confirm_submit">
|
||||
<form />
|
||||
<response>
|
||||
<tag name="error" />
|
||||
<tag name="message" />
|
||||
</response>
|
||||
</filter>
|
||||
78
modules/ldap/tpl/index.html
Normal file
78
modules/ldap/tpl/index.html
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
<!--%import("filter/insert_config.xml")-->
|
||||
|
||||
<h3>{$lang->ldap} <span class="gray">{$lang->cmd_management}</span></h3>
|
||||
|
||||
<form action="./" method="get" onsubmit="return procFilter(this, insert_config)">
|
||||
|
||||
<table cellspacing="0" class="adminTable topGap">
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->use_ldap}</div></th>
|
||||
<td>
|
||||
<input type="checkbox" name="use_ldap" value="Y" <!--@if($config->use_ldap == 'Y')-->checked="checked"<!--@end--> />
|
||||
<p>{$lang->about_use_ldap}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="col"><div>{$lang->ldap_server}</div></th>
|
||||
<td>
|
||||
<input type="text" name="ldap_server" value="{$config->ldap_server}" class="inputTypeText w400" />
|
||||
<p>{$lang->about_ldap_server}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->ldap_port}</div></th>
|
||||
<td>
|
||||
<input type="text" name="ldap_port" value="{$config->ldap_port}" class="inputTypeText w80" />
|
||||
<p>{$lang->about_ldap_port}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="col"><div>{$lang->ldap_userdn_suffix}</div></th>
|
||||
<td>
|
||||
<input type="text" name="ldap_userdn_suffix" value="{$config->ldap_userdn_suffix}" class="inputTypeText w400" />
|
||||
<p>{$lang->about_ldap_userdn_suffix}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->ldap_basedn}</div></th>
|
||||
<td>
|
||||
<input type="text" name="ldap_basedn" value="{$config->ldap_basedn}" class="inputTypeText w400" />
|
||||
<p>{$lang->about_ldap_basedn}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="col"><div>{$lang->ldap_email_entry}</div></th>
|
||||
<td>
|
||||
<input type="text" name="ldap_email_entry" value="{$config->ldap_email_entry}" class="inputTypeText w400" />
|
||||
<p>{$lang->about_ldap_email_entry}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->ldap_nickname_entry}</div></th>
|
||||
<td>
|
||||
<input type="text" name="ldap_nickname_entry" value="{$config->ldap_nickname_entry}" class="inputTypeText w400" />
|
||||
<p>{$lang->about_ldap_nickname_entry}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<th scope="col"><div>{$lang->ldap_username_entry}</div></th>
|
||||
<td>
|
||||
<input type="text" name="ldap_username_entry" value="{$config->ldap_username_entry}" class="inputTypeText w400" />
|
||||
<p>{$lang->about_ldap_username_entry}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col"><div>{$lang->ldap_group_entry}</div></th>
|
||||
<td>
|
||||
<input type="text" name="ldap_group_entry" value="{$config->ldap_group_entry}" class="inputTypeText w400" />
|
||||
<p>{$lang->about_ldap_group_entry}</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="row2">
|
||||
<td colspan="2" class="right">
|
||||
<span class="button"><input type="submit" value="{$lang->cmd_registration}" accesskey="s" /></span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</form>
|
||||
Loading…
Add table
Add a link
Reference in a new issue