|
|
<?php /** * Class Members * ------------------------------------------- * 회원 관련 페이지 */ class Members extends WB_Controller {
public function register() { if( $this->member->is_login() ) { alert(langs('회원/login/already'), base_url("members/info")); exit; }
$form_attributes['id'] = "form-register"; $form_attributes['autocomplete'] = "off"; $form_attributes['name'] = "form_register"; $form_attributes['data-form'] = "form-register"; $form_hidden_inputs['reurl'] = set_value('reurl', $this->input->get("reurl", TRUE, base_url()));
$action_url = base_url( 'members/register', SSL_VERFIY ? 'https' : 'http' ); $this->data['form_open'] = form_open($action_url, $form_attributes, $form_hidden_inputs); $this->data['form_close'] = form_close();
$this->site->meta_title = langs('회원/register'); $this->theme = $this->site->get_layout(); $this->view = "members/register"; }
/********************************************************** * 사용자 로그인 **********************************************************/ public function login() { if( $this->member->is_login() ) { alert(langs('회원/login/already'), base_url("members/info")); exit; }
$form_attributes['id'] = "form-login"; $form_attributes['autocomplete'] = "off"; $form_attributes['name'] = "form_login"; $form_attributes['data-role'] = "form-login"; $form_hidden_inputs['reurl'] = set_value('reurl', $this->input->get("reurl", TRUE, base_url()));
$action_url = base_url( 'members/login', SSL_VERFIY ? 'https' : 'http' ); $this->data['form_open'] = form_open($action_url, $form_attributes, $form_hidden_inputs); $this->data['form_close'] = form_close();
$this->site->meta_title = langs('회원/signin'); $this->theme = $this->site->get_layout(); $this->view = "members/login"; }
/********************************************************** * 사용자 로그아웃 **********************************************************/ public function logout() { $reurl = $this->input->get("reurl", TRUE, base_url());
if( get_cookie(COOKIE_AUTOLOGIN) ) { $this->member->remove_autologin($this->member->is_login()); } $this->session->sess_destroy(); redirect( $reurl ); exit; }
/********************************************************** * 사용자 정보 페이지 **********************************************************/ public function info($page="") { if(! $this->member->is_login()) { alert_login(langs('회원/login/only')); exit; }
$this->data['mem'] = $this->member->info();
if( $page == 'social' ) { $this->info_social(); } else { $this->site->meta_title = langs('회원/info/profile'); $this->theme = $this->site->get_layout(); $this->active = "members/info"; $this->asides['member'] = "members/aside"; $this->view = "members/info"; } }
/********************************************************** * 회원포토 변경 페이지 **********************************************************/ public function photo_change() { if(! $this->member->is_login()) { alert_close(langs('회원/login/only')); exit; }
$this->load->library('form_validation');
$this->form_validation->set_rules("mem_userid", "mem_userid", "required");
if( $this->form_validation->run() != FALSE ) { if(! isset($_FILES) OR ! isset($_FILES['userfile']) OR ! $_FILES['userfile'] OR !isset($_FILES['userfile']['name']) OR ! $_FILES['userfile']['name'] ) { alert(langs('회원/msg/change_photo_required')); exit; }
// 폴더 생성
make_dir(DIR_UPLOAD . DIRECTORY_SEPARATOR . "member_photo"); $upload_path = DIR_UPLOAD . '/member_photo/' . date('Y') . '/' . date('m') . '/';
$uploadconfig = array( 'upload_path' => "./" . $upload_path, 'allowed_types' => 'jpg|jpeg|png|gif', 'max_size' => 10 * 1024, 'encrypt_name' => true, ); $this->load->library('upload'); $this->upload->initialize($uploadconfig);
if ($this->upload->do_upload()) {
$filedata = $this->upload->data();
// 기존 회원아이콘이 있다면 삭제
if( $this->member->info('photo') ) { if( is_file( FCPATH . $this->member->info('photo') )) { @unlink( FCPATH . $this->member->info('photo') ); } }
$this->db->where('mem_idx', $this->member->is_login() )->set('mem_photo', $upload_path . $filedata['file_name'])->update('member');
alert_close(langs('회원/msg/change_photo_success'), TRUE); exit; } else { alert($this->upload->display_errors(' ', ' ')); }
} else { $this->site->meta_title = langs('회원/info/change_photo'); $this->theme = $this->site->get_layout(); $this->theme_file = "popup"; $this->view = "members/photo_change"; }
}
/********************************************************** * 회원정보 수정 **********************************************************/ public function modify() { if(! $this->member->is_login()) { alert(langs('회원/login/only')); exit; }
$form_attributes['id'] = "form-member-modify"; $form_attributes['autocomplete'] = "off"; $form_attributes['name'] = "form_member_modify"; $form_attributes['data-form'] = "form-member-modify"; $form_hidden_inputs['reurl'] = set_value('reurl', $this->input->get("reurl", TRUE, base_url()));
$action_url = base_url( 'members/modify', SSL_VERFIY ? 'https' : 'http' ); $this->data['form_open'] = form_open($action_url, $form_attributes, $form_hidden_inputs); $this->data['form_close'] = form_close();
$this->site->meta_title = langs('회원/info/modify'); $this->theme = $this->site->get_layout(); $this->asides['member'] = "members/aside"; $this->active = "members/modify"; $this->view = "members/modify"; }
/********************************************************** * 회원 비밀번호 변경 **********************************************************/ public function password_change() { if(! $this->member->is_login()) { alert(langs('회원/login/only')); exit; }
$this->load->library('form_validation');
$this->form_validation->set_rules("old_password", langs('회원/info/old_password'), "required|trim|min_length[6]|max_length[20]"); $this->form_validation->set_rules("new_password", langs('회원/info/new_password'), "required|trim|min_length[6]|max_length[20]|differs[old_password]"); $this->form_validation->set_rules("new_password_confirm", langs('회원/info/new_password_confirm'), "required|trim|min_length[6]|max_length[20]|matches[new_password]");
if( $this->form_validation->run() != FALSE ) { $current_password = $this->input->post('old_password', TRUE); $new_password = $this->input->post('new_password', TRUE);
if( $this->member->info('password') != get_password_hash($current_password) ) { alert(langs('회원/login/user_not_exist')); exit; }
$this->db->set('mem_password', get_password_hash($new_password) ); $this->db->where('mem_idx', $this->member->is_login() ); $this->db->update('member');
alert(langs('회원/msg/password_change_success'), base_url('members/logout') ); exit; } else { $action_url = base_url('members/password_change', SSL_VERFIY ? 'https' : 'http' ); $this->data['form_open'] = form_open($action_url, array('data-form'=>'form-password-change')); $this->data['form_close'] = form_close();
$this->site->meta_title = langs('회원/info/password_change'); $this->theme = $this->site->get_layout(); $this->active = "members/password_change"; $this->asides['member'] = "members/aside"; $this->view = "members/password_change"; } }
/********************************************************** * 회원 탈퇴 **********************************************************/ public function withdrawals() { if(! $this->member->is_login()) { alert(langs('회원/login/only')); exit; }
$this->load->library('form_validation');
$this->form_validation->set_rules("current_password", langs('회원/login/user_not_exist'), "required|trim|min_length[6]|max_length[20]");
if( $this->form_validation->run() != FALSE ) { $current_password = $this->input->post('current_password', TRUE);
if( $this->member->info('password') != get_password_hash($current_password) ) { alert(langs('회원/login/user_not_exist')); exit; }
// 회원정보에서 삭제
$this->db->where('mem_idx', $this->member->is_login() ); $this->db->set('mem_status', 'N'); $this->db->update('member');
alert(langs('회원/msg/withdrawals_success'), base_url('members/logout') ); exit; } else { $action_url = base_url('members/withdrawals', SSL_VERFIY ? 'https' : 'http' ); $this->data['form_open'] = form_open($action_url, array('data-form'=>'form-withdrawals')); $this->data['form_close'] = form_close();
$this->site->meta_title = langs('회원/info/withdrawals'); $this->theme = $this->site->get_layout(); $this->active = "members/withdrawals"; $this->asides['member'] = "members/aside"; $this->view = "members/withdrawals"; } }
/********************************************************** * 소셜 정보 **********************************************************/ public function info_social() { if(! $this->member->is_login()) { alert_login(langs('회원/login/only')); exit; }
$this->site->meta_title = langs('회원/info/social'); $this->theme = $this->site->get_layout(); $this->asides['member'] = "members/aside"; $this->active = "members/info/social"; $this->view = "members/info_social"; }
/********************************************************** * 소셜 로그인 처리 **********************************************************/ public function social_login($provider) { if(empty($provider)) { alert(langs('공통/msg/invalid_access')); exit; }
if(!check_social_setting($provider)) { alert(strtoupper($provider) . " " . langs('회원/social/not_set') ); exit; }
$this->load->library("social_login_". $provider); $result = $this->{"social_login_".$provider}->get_profile();
if(empty($result)) { alert( langs('회원/social/failed'), base_url()); }
// 만약 현재 로그인 중인상태라면
// 현재 아이디에 소셜로그인을 추가하는것으로 간주한다.
if( $this->member->is_login() ) { // 이미 등록된 소셜이 있을경우
if( $social = $this->member->get_social($result['provider'], $result['id']) ) { // 현재 로그인과 이미 연결되어 있는경우
if( $this->member->is_login() == $social['mem_idx'] ) { alert(langs('회원/social/already_linked'), base_url('members/info/social')); exit; } // 아예 다른아이디와 연결되어 있는 경우
else { alert(langs('회원/social/already_another'), base_url('members/info/social')); exit; } } // 등록된 소셜이 없는경우
else { // 현재 로그인과 연결설정
$data['soc_provider'] = $result['provider']; $data['soc_id'] = $result['id']; $data['mem_idx'] = $this->member->is_login(); $data['soc_profile'] = $result['profile']; $data['soc_gender'] = $result['gender']; $data['soc_email'] = $result['email']; $data['soc_content'] = $result['extra']; $data['soc_regtime'] = date('Y-m-d H:i:s');
$this->db->insert('member_social', $data);
alert(langs('회원/social/success_link'), base_url('members/info/social')); exit; } } // 현재 로그인중이 아니라면?
// 새로운 아이디 생성 / 로그인 요청 으로 받아들인다.
else { // 이미 등록된 소셜 계정이 있다면?
if( $social = $this->member->get_social($result['provider'], $result['id']) ) { $member = $this->member->get_member($social['mem_idx'], 'mem_idx');
$this->member->login_process($member); redirect(base_url()); } else { // 이미 등록된 이메일 주소라면
if( $tmp = $this->member->get_member($result['email'], "mem_email")) { alert(langs('회원/social/already_email'), base_url()); exit; } unset($tmp);
$mem_userid = USE_EMAIL_ID ? $result['email'] : strtoupper(substr($result['provider'],0,1)).$result['id']; // 해당 아이디가 이미 존재하는지 확인한다.
if( $tmp = $this->member->get_member($mem_userid, 'mem_userid') ) { alert(langs('회원/social/already'), base_url()); exit; } unset($tmp);
$data['mode'] = "INSERT"; $data['mem_userid'] = $mem_userid; $data['mem_password'] = $result['id']; $data['mem_nickname'] = $result['name']; $data['mem_email'] = $result['email']; $data['mem_verfy_email'] = 'Y'; $data['mem_phone'] = ""; $data['mem_auth'] = 1; $data['mem_gender'] = $result['gender']; $data['mem_recv_email'] = 'N'; $data['mem_recv_sms'] = 'N';
$this->member->info_process($data); unset($data);
$member = $this->member->get_member($mem_userid, "mem_userid");
$data['soc_provider'] = $result['provider']; $data['soc_id'] = $result['id']; $data['mem_idx'] = $member['mem_idx']; $data['soc_profile'] = $result['profile']; $data['soc_gender'] = $result['gender']; $data['soc_email'] = $result['email']; $data['soc_content'] = $result['extra']; $data['soc_regtime'] = date('Y-m-d H:i:s');
$this->db->insert('member_social', $data);
$this->member->login_process($member); redirect(base_url()); exit; } }
print_r($result); }
/********************************************************** * 휴면 계정 전환 **********************************************************/ public function activation() { $this->load->library('form_validation');
if( ! $this->member->is_login() ) { alert(langs('공통/msg/invalid_access')); exit; }
if( ! $member = $this->member->get_member( $this->member->is_login(), 'mem_idx' ) ) { alert(langs('회원/login/user_not_exist')); exit; }
if( $member['mem_status'] != 'H' ) { alert(langs('회원/status/not_dormant')); exit; }
$this->form_validation->set_rules('activation','activation','required|trim');
if( $this->form_validation->run() != FALSE ) { $this->db->where('mem_idx', $this->member->is_login())->set('mem_status', 'Y')->update('member'); alert(langs('회원/status/activate_complete'),base_url()); exit; } else { $this->site->meta_title = langs('회원/info/activation'); $this->theme = $this->site->get_layout(); $this->view = "members/activation"; } } }
|