Exemple #1
0
	static function login()
	{
		core::reg('run-naked',true);
		
		$realm= core::config('cms-realm');
		if (!$realm)
		{
			$realm= strtolower($_SERVER['HTTP_HOST']);
			if (substr($realm,0,4)=='www.') $realm= substr($realm,4);
			$realm= 'ConKit@'.$realm;
		}

		if (!isset($_SERVER['PHP_AUTH_USER'])) core::halt(401,$realm);
	
		$exp= (isset($_COOKIE['conkit_cms_exp']) ? $_COOKIE['conkit_cms_exp'] : null);
		if ($_SERVER['PHP_AUTH_USER']===$exp) 
		{
			setcookie('conkit_cms_exp','',0,'/');
			core::halt(401,$realm);
		}

		$loginHandler= core::config('cms-user-check');
		if (!$loginHandler) $res= cms::loginCheck($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']);
		else $res= call_user_func($loginHandler,$_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']);
		
		if ($res!==false)
		{
			if (!$loginHandler) $res= core::reqSession('.cms-admin', array_merge(array('name'=>$_SERVER['PHP_AUTH_USER']),core::$config['cms-users'][$_SERVER['PHP_AUTH_USER']]));
			elseif (is_array($res)) $res= array_merge(array('name'=>$_SERVER['PHP_AUTH_USER'],'password'=>$_SERVER['PHP_AUTH_PW']),$res);
			else $res= array('name'=>$_SERVER['PHP_AUTH_USER'],'password'=>$_SERVER['PHP_AUTH_PW'],'attr'=>$res);
			core::reqSession('.cms-admin', $res);
			core::halt(302,urldecode(core::req('cms-request')));
		}
		else core::halt(401,$realm);
	}