1: <?php
2:
3: /**
4: * @package modules
5: * @subpackage api_login
6: */
7:
8: /* Constants */
9: define('DEBUG_MODE', false);
10: define('APP_PATH', dirname(dirname(dirname(__FILE__))).'/');
11: define('VENDOR_PATH', APP_PATH.'vendor/');
12: define('WEB_ROOT', '');
13:
14: /* Init the framework */
15: require_once APP_PATH.'lib/framework.php';
16: require APP_PATH.'modules/core/functions.php';
17:
18: /**
19: * Start a user session if the user/pass are valid
20: * @subpackage api_login/functions
21: * @param string $user username
22: * @param string $pass password
23: * @param string $url location of the Cypht installation
24: * @return bool
25: */
26: function cypht_login($user, $pass, $url, $lifetime=0) {
27: list($session, $request) = session_init();
28: $session->check($request, $user, $pass, false);
29: if ($session->is_active()) {
30: list($domain, $path, $secure) = url_parse($url);
31: $config = new Hm_Site_Config_File();
32: $user_config = load_user_config_object($config);
33: $user_config->load($user, $pass);
34: module_init_functions($user_config, $session, $request, $config, $user, $pass);
35: $user_data = $user_config->dump();
36: $session->set('user_data', $user_data);
37: $session->set('username', rtrim($user));
38: Hm_Functions::setcookie('hm_id', stripslashes($session->enc_key), $lifetime, $path, $domain, $secure, true);
39: Hm_Functions::setcookie('hm_session', stripslashes($session->session_key), $lifetime, $path, $domain, $secure, true);
40: $session->end();
41: return true;
42: }
43: return false;
44: }
45:
46: /**
47: * Run functions assigned to the "page" functional_api
48: * @subpackage api_login/functions
49: * @param object $user_config user configuration object
50: * @param object $session user session object
51: * @param object $request page request object
52: * @param object $config site configuration object
53: * @param string $user username
54: * @param string $pass password
55: * @return void
56: */
57: function module_init_functions($user_config, $session, $request, $config, $user, $pass) {
58: foreach (Hm_Handler_Modules::get_for_page('functional_api') as $func => $vals) {
59: if (is_readable(sprintf("%smodules/%s/modules.php", APP_PATH, $vals[0]))) {
60: require_once sprintf("%smodules/%s/modules.php", APP_PATH, $vals[0]);
61: $func($user_config, $session, $request, $config, $user, $pass);
62: }
63: }
64: }
65:
66: /**
67: * Log a user out of cypht
68: * @subpackage api_login/functions
69: * @return void
70: */
71: function cypht_logout() {
72: list($session, $request) = session_init();
73: $session->check($request);
74: $session->destroy($request);
75: }
76:
77: /**
78: * Parse URL
79: * @subpackage api_login/functions
80: * @param string $url location of the Cypht installation
81: * @return array
82: */
83: function url_parse($url) {
84: $parsed = parse_url($url);
85: $secure = $parsed['scheme'] === 'https' ? true : false;
86: return array($parsed['host'], '/', $secure);
87: }
88:
89: /**
90: * Startup the session and request objects
91: * @subpackage api_login/functions
92: * @return array
93: */
94: function session_init() {
95: $config = new Hm_Site_Config_File();
96: $module_exec = new Hm_Module_Exec($config);
97: $module_exec->load_module_sets('functional_api');
98: $request = new Hm_Request($module_exec->filters, $config);
99: if (in_array('site', $config->get_modules(), true)) {
100: if (is_readable(APP_PATH.'modules/site/lib.php')) {
101: Hm_Debug::add('Including site module set lib.php');
102: require APP_PATH.'modules/site/lib.php';
103: }
104: }
105: $session_config = new Hm_Session_Setup($config);
106: $session = $session_config->setup_session();
107: return array($session, $request);
108: }
109: