235 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			235 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | ||
| 
 | ||
| /**
 | ||
|  * AVE.cms - Модуль Авторизация
 | ||
|  *
 | ||
|  * @package AVE.cms
 | ||
|  * @subpackage module_Login
 | ||
|  * @filesource
 | ||
|  */
 | ||
| 
 | ||
| if (!defined('BASE_DIR')) exit;
 | ||
| 
 | ||
| if (defined('ACP'))
 | ||
| {
 | ||
|     $modul['ModuleName'] = 'Авторизация';
 | ||
|     $modul['ModuleSysName'] = 'login';
 | ||
|     $modul['ModuleVersion'] = '2.2.1';
 | ||
|     $modul['ModuleDescription'] = 'Данный модуль предназначен для регистрации пользователей на вашем сайте. Для вывода формы авторизации, разместите системный тег <strong>[mod_login]</strong> в нужном месте вашего шаблона. Также вы можете указать шаблон, в котором будет отображена форма для регистрации и авторизации.';
 | ||
|     $modul['ModuleAutor'] = 'AVE.CMS Team';
 | ||
|     $modul['ModuleCopyright'] = '© 2007-2013 AVE.CMS';
 | ||
|     $modul['ModuleStatus'] = 1;
 | ||
|     $modul['ModuleIsFunction'] = 1;
 | ||
|     $modul['ModuleTemplate'] = 1;
 | ||
|     $modul['ModuleAdminEdit'] = 1;
 | ||
|     $modul['ModuleFunction'] = 'mod_login';
 | ||
|     $modul['ModuleTag'] = '[mod_login]';
 | ||
|     $modul['ModuleTagLink'] = '';
 | ||
|     $modul['ModuleAveTag'] = '#\\\[mod_login]#';
 | ||
|     $modul['ModulePHPTag'] = '<?php mod_login(); ?>';
 | ||
| }
 | ||
| 
 | ||
| function loginza_check_token($token = '') {
 | ||
| 	global $AVE_DB;
 | ||
| /*
 | ||
|  * Данные нашей Логинзы
 | ||
|  */
 | ||
| 	$loginza_id = '';
 | ||
| 	$loginza_api_key = '';
 | ||
| 
 | ||
|     if( !$token )
 | ||
|         $token = @$_REQUEST['token'];
 | ||
|     if( !$token )
 | ||
| 			return false;
 | ||
|     $sig = md5($token . $loginza_api_key);
 | ||
|     
 | ||
|     $auth_json = CURL_file_get_contents( "http://loginza.ru/api/authinfo?token={$token}");//&id={$loginza_id}&sig={$sig}" );
 | ||
|     if( !$auth_json )
 | ||
|         return false;
 | ||
|     
 | ||
|     $auth_data = json_decode( $auth_json );
 | ||
| 	$auth_data->identity='loginza_'.md5(trim($auth_data->identity));
 | ||
|     
 | ||
|     if( isset( $auth_data->error_type ) || isset( $auth_data->error_message ) )
 | ||
|         return false;
 | ||
|     //var_dump($auth_data);
 | ||
| 	$user_id=$AVE_DB->Query("SELECT * FROM ".PREFIX."_users where user_name='".$auth_data->identity."' LIMIT 1")->FetchRow();
 | ||
| 	//die();
 | ||
| 	if($user_id) {
 | ||
| 			user_login($auth_data->identity,'');
 | ||
| 			header('Location:' . rewrite_link($_SESSION['referer']));
 | ||
| 			unset($_SESSION['referer']);
 | ||
| 			exit;
 | ||
| 		}
 | ||
| 	//Если у юзера есть фотовка - то делаем из нее аватарку 
 | ||
| 	//лежать все будет в avatar_dir
 | ||
| 	//получить наличие аватарки мона путем md5($user_login)
 | ||
| 	if($auth_data->photo){
 | ||
| 		$avatar=CURL_file_get_contents($auth_data->photo);
 | ||
| 		$avatar_dir=BASE_DIR.'/uploads/avatars';
 | ||
| 		if(!file_exists($avatar_dir))mkdir($avatar_dir,0777,true);
 | ||
| 		if($avatar){
 | ||
| 			$im = imagecreatefromstring($avatar);
 | ||
| 			if ($im !== false) {
 | ||
| 				imagejpeg($im,$avatar_dir.'/'.md5($auth_data->identity).'.jpg');
 | ||
| 			}
 | ||
| 		}	
 | ||
| 	}
 | ||
| 	//тут подставляем данные для последующей регистрации
 | ||
| 	$_POST['user_name']=$auth_data->identity;
 | ||
| 	$_POST['reg_email']=isset( $auth_data->email ) && $auth_data->email ? $auth_data->email : '';
 | ||
| 	$fname=isset( $auth_data->name->full_name ) && $auth_data->name->full_name ? $auth_data->name->full_name : '';
 | ||
| 	$fname=explode(' ',$fname);
 | ||
| 	$_POST['reg_firstname']=isset( $auth_data->name->first_name ) && $auth_data->name->first_name ? $auth_data->name->first_name : @$fname[0];
 | ||
| 	$_POST['reg_lastname']=isset( $auth_data->name->last_name ) && $auth_data->name->last_name ? $auth_data->name->last_name : @$fname[1];
 | ||
| 	$_REQUEST['action']='register';
 | ||
| 	$_REQUEST['sub']='register';
 | ||
| 	//Надо кудато положить флажок - что зашли через логинзу
 | ||
| 	$_SESSION['loginza_auth']=1;
 | ||
| 	//Тут на всякий случай похраним инфу о юзвере
 | ||
| 	$_SESSION['loginza_data']=$auth_data;
 | ||
|     return $auth_data;
 | ||
| }
 | ||
|  
 | ||
| /**
 | ||
|  * Обработка тега модуля
 | ||
|  *
 | ||
|  */
 | ||
| function mod_login()
 | ||
| {
 | ||
| 	global $AVE_DB, $AVE_Template;
 | ||
| 
 | ||
| 	$tpl_dir   = BASE_DIR . '/modules/login/templates/';
 | ||
| 	$lang_file = BASE_DIR . '/modules/login/lang/' . $_SESSION['user_language'] . '.txt';
 | ||
| 
 | ||
| 	if (isset($_SESSION['user_id']) && isset($_SESSION['user_pass']))
 | ||
| 	{
 | ||
| 		$AVE_Template->config_load($lang_file, 'displaypanel');
 | ||
| 
 | ||
| 		$AVE_Template->display($tpl_dir . 'userpanel.tpl');
 | ||
| 	}
 | ||
| 	else
 | ||
| 	{
 | ||
| 		$AVE_Template->config_load($lang_file, 'displayloginform');
 | ||
| 
 | ||
| 		$active = $AVE_DB->Query("
 | ||
| 			SELECT login_status
 | ||
| 			FROM " . PREFIX . "_module_login
 | ||
| 			WHERE Id = 1
 | ||
| 		")->GetCell();
 | ||
| 
 | ||
| 		$AVE_Template->assign('active', $active);
 | ||
| 
 | ||
| 		$AVE_Template->display($tpl_dir . 'loginform.tpl');
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| if (!defined('ACP') &&
 | ||
| 	!empty($_REQUEST['action']) &&
 | ||
| 	isset($_REQUEST['module']) && $_REQUEST['module'] == 'login')
 | ||
| {
 | ||
| 	global $login;
 | ||
| 
 | ||
| 	loginza_check_token();
 | ||
| 
 | ||
| 	//die();
 | ||
| 	if (isset($_REQUEST['print']) && $_REQUEST['print'] == 1) print_error();
 | ||
| 
 | ||
| 	$tpl_dir   = BASE_DIR . '/modules/login/templates/';
 | ||
| 	$lang_file = BASE_DIR . '/modules/login/lang/' . $_SESSION['user_language'] . '.txt';
 | ||
| 
 | ||
| 	if (! @require(BASE_DIR . '/modules/login/class.login.php')) module_error();
 | ||
| 
 | ||
| 	$login = new Login($tpl_dir, $lang_file);
 | ||
| 
 | ||
| 	switch($_REQUEST['action'])
 | ||
| 	{
 | ||
| 		case 'wys':
 | ||
| 			if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'on')
 | ||
| 			{
 | ||
| 				if (check_permission('documents')) $_SESSION['user_adminmode'] = 1;
 | ||
| 			}
 | ||
| 			else
 | ||
| 			{
 | ||
| 				unset($_SESSION['user_adminmode']);
 | ||
| 			}
 | ||
| 
 | ||
| 			header('Location:' . get_referer_link());
 | ||
| 			exit;
 | ||
| 
 | ||
| 		case 'wys_adm':
 | ||
| 			if (isset($_REQUEST['sub']) && $_REQUEST['sub'] == 'on')
 | ||
| 			{
 | ||
| 				if (check_permission('documents')) $_SESSION['user_adminmode'] = 1;
 | ||
| 			}
 | ||
| 			else
 | ||
| 			{
 | ||
| 				unset($_SESSION['user_adminmode']);
 | ||
| 			}
 | ||
| 
 | ||
| 			header('Location:' . get_home_link());
 | ||
| 			exit;
 | ||
| 
 | ||
| 		case 'login':
 | ||
| 			$login->loginUserLogin();
 | ||
| 			break;
 | ||
| 
 | ||
| 		case 'logout':
 | ||
| 			$login->loginUserLogout();
 | ||
| 			break;
 | ||
| 
 | ||
| 		case 'register':
 | ||
| 			$login->loginNewUserRegister();
 | ||
| 			break;
 | ||
| 
 | ||
| 		case 'passwordreminder':
 | ||
| 			$login->loginUserPasswordReminder();
 | ||
| 			break;
 | ||
| 
 | ||
| 		case 'passwordchange':
 | ||
| 			$login->loginUserPasswordChange();
 | ||
| 			break;
 | ||
| 
 | ||
| 		case 'delaccount':
 | ||
| 			$login->loginUserAccountDelete();
 | ||
| 			break;
 | ||
| 
 | ||
| 		case 'profile':
 | ||
| 			$login->loginUserProfileEdit();
 | ||
| 			break;
 | ||
| 
 | ||
| 		case 'checkusername':
 | ||
| 			$login->loginUsernameAjaxCheck();
 | ||
| 			break;
 | ||
| 
 | ||
| 		case 'checkemail':
 | ||
| 			$login->loginEmailAjaxCheck();
 | ||
| 			break;
 | ||
| 		case 'userinfo':
 | ||
| 			$login->loginUserInfo(intval($_REQUEST['user']));
 | ||
| 			break;
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| 
 | ||
| if (defined('ACP') && !empty($_REQUEST['moduleaction']))
 | ||
| {
 | ||
| 	global $login;
 | ||
| 
 | ||
| 	$tpl_dir   = BASE_DIR . '/modules/login/templates/';
 | ||
| 	$lang_file = BASE_DIR . '/modules/login/lang/' . $_SESSION['admin_language'] . '.txt';
 | ||
| 
 | ||
| 	if (! @require(BASE_DIR . '/modules/login/class.login.php')) module_error();
 | ||
| 
 | ||
| 	$login = new Login($tpl_dir, $lang_file);
 | ||
| 
 | ||
| 	switch($_REQUEST['moduleaction'])
 | ||
| 	{
 | ||
| 		case '1':
 | ||
| 			$login->loginSettingsEdit();
 | ||
| 			break;
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| ?>
 |