function loginByHash($_key, $_ajax = false) { $user = user::byHash($_key); if (is_object($user) && $user->getEnable() == 1) { connection::success($user->getLogin()); @session_start(); $_SESSION['user'] = $user; @session_write_close(); setcookie('registerDevice', $_key, time() + 365 * 24 * 3600, "/", '', false, true); log::add('connection', 'info', __('Connexion de l\'utilisateur par clef : ', __FILE__) . $user->getLogin()); $getParams = ''; unset($_GET['auth']); foreach ($_GET as $var => $value) { $getParams .= $var . '=' . $value . '&'; } if (!$_ajax) { if (strpos($_SERVER['PHP_SELF'], 'core') || strpos($_SERVER['PHP_SELF'], 'desktop')) { header('Location:../../index.php?' . trim($getParams, '&')); } else { header('Location:index.php?' . trim($getParams, '&')); } } return true; } connection::failed(); sleep(5); if (!$_ajax) { if (strpos($_SERVER['PHP_SELF'], 'core') || strpos($_SERVER['PHP_SELF'], 'desktop')) { header('Location:../../index.php?v=derror=1'); } else { header('Location:index.php?v=' . $_GET['v'] . '&error=1'); } } return false; }
* Jeedom is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jeedom. If not, see <http://www.gnu.org/licenses/>. */ try { require_once dirname(__FILE__) . '/../../core/php/core.inc.php'; include_file('core', 'authentification', 'php'); if (init('action') == 'login') { if (!isConnect() && config::byKey('sso:allowRemoteUser') == 1) { $user = user::byLogin($_SERVER['REMOTE_USER']); if (is_object($user) && $user->getEnable() == 1) { connection::success($user->getLogin()); @session_start(); $_SESSION['user'] = $user; @session_write_close(); log::add('connection', 'info', __('Connexion de l\'utilisateur par REMOTE_USER : '******'username'), init('password'), true)) { throw new Exception('Mot de passe ou nom d\'utilisateur incorrect'); } if (init('storeConnection') == 1) { setcookie('registerDevice', $_SESSION['user']->getHash(), time() + 365 * 24 * 3600, "/", '', false, true); } ajax::success(); } if (init('action') == 'forgotPassword') {
throw new Exception('Nom d\'utilisateur ou mot de passe invalide', -32001); } $session_lifetime = config::byKey('session_lifetime', 24); if (!is_numeric($session_lifetime)) { $session_lifetime = 24; } ini_set('session.gc_maxlifetime', $session_lifetime * 3600); @session_start(); $_SESSION['user'] = $user; @session_write_close(); } else { connection::failed(); throw new Exception('Aucune clé API ou nom d\'utilisateur', -32001); } } connection::success('api'); /* * ************************config*************************** */ if ($jsonrpc->getMethod() == 'config::byKey') { $jsonrpc->makeSuccess(config::byKey($params['key'], $params['plugin'], $params['default'])); } if ($jsonrpc->getMethod() == 'config::save') { $jsonrpc->makeSuccess(config::save($params['key'], $params['value'], $params['plugin'])); } if (isset($params['plugin']) && $params['plugin'] != '') { log::add('api', 'info', 'Demande pour le plugin : ' . $params['plugin']); include_file('core', $params['plugin'], 'api', $params['plugin']); } else { /* * ***********************Ping********************************* */ if ($jsonrpc->getMethod() == 'ping') { $jsonrpc->makeSuccess('pong'); }