mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-12 15:21:40 +09:00
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5191 201d5d3c-b55e-5fd7-737f-ddc643e51545
110 lines
4.3 KiB
PHP
110 lines
4.3 KiB
PHP
<?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_prefix, $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) {
|
|
$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();
|
|
}
|
|
|
|
}
|
|
?>
|