public function loginAction() { if (Tools::isPost()) { $email = Tools::getValue('email'); $password = Tools::getValue('password'); $sql = "select ID, UniversalID, PasswordHash from Users where (UniversalType = 1) and (email = '{$email}');"; $user = GetMainConnection()->query($sql)->fetch(); if (!empty($user['ID'])) { if (VerifyPassword($password, $user['PasswordHash'])) { unset($password); $sql = "update Users " . "set RememberMe = '" . POSTBoolAsSQLStr('RememberMeEdt') . "' " . "where (ID = " . $user['ID'] . ");"; GetMainConnection()->exec($sql); if (LoginUsingUniversalID($user['UniversalID'])) { if (empty($_SESSION['login_redirect'])) { return AddAlertMessage('success', 'Добро пожаловать!', '/'); } else { $vRedirect = $_SESSION['login_redirect']; unset($_SESSION['login_redirect']); Redirect($vRedirect); } } } else { unset($password); AddAlertMessage('danger', 'Неверный e-mail или пароль.'); } } else { unset($password); AddAlertMessage('danger', 'E-mail не найден.'); } } // https://developers.facebook.com/docs/php/gettingstarted/5.0.0 // https://developers.facebook.com/docs/php/Facebook/5.0.0 // http://25labs.com/tutorial-integrate-facebook-connect-to-your-website-using-php-sdk-v-3-x-x-which-uses-graph-api/ require_once PATH_SITE_ROOT . 'core/facebook-php-sdk-v4-5.0-dev/src/Facebook/autoload.php'; $facebook = new Facebook\Facebook(['app_id' => facebook_app_id, 'app_secret' => facebook_app_secret, 'default_graph_version' => facebook_graph_version]); $helper = $facebook->getRedirectLoginHelper(); $permissions = ['email']; // optional $FB_LoginUrl = $helper->getLoginUrl('http://karapuz.life/app/common/facebook_login_callback.php', $permissions); $VK_LoginUrl = 'https://oauth.vk.com/authorize?client_id=' . vk_app_id . '&scope=offline,email&redirect_uri=' . urlencode('http://karapuz.life/app/common/vk_login_callback.php') . '&response_type=code'; $this->view->setVars(array('FB_LoginUrl' => $FB_LoginUrl, 'VK_LoginUrl' => $VK_LoginUrl)); $this->view->breadcrumbs = array(array('url' => '/auth/login', 'title' => 'Вход на сайт')); $this->view->meta = array('meta_title' => 'Войти на сайт', 'meta_description' => 'Войти на сайт', 'meta_keywords' => ''); $this->view->generate(); }
$sql = "select ID " . "from Users " . "where (UniversalID = '{$vUniversalID}');"; $rec = GetMainConnection()->query($sql)->fetch(); if (empty($rec['ID'])) { try { // Returns a Facebook\FacebookResponse object $response = $facebook->get('/me?fields=id,first_name,last_name,email', $accessTokenStr); $user = $response->getGraphUser(); $userEmail = $user->getField('email'); if (empty($userEmail)) { return AddAlertMessage('danger', 'Ошибка при регистрации! (Эл. почта не указана).', '/'); } $sql = "select ID from Users where (Email = '{$userEmail}');"; $checkuser = GetMainConnection()->query($sql)->fetch(); if (!empty($checkuser['ID'])) { return AddAlertMessage('danger', 'Пользователь с эл. почтой: "' . $userEmail . '" уже зарегистрирован на сайте.', '/'); } /*echo '<h3>User</h3>'; var_dump($user);*/ $sql = "insert into Users(UniversalType, UniversalID, AccessToken, UserName, Email, EmailConfirmed, RememberMe) " . "values(2, '{$vUniversalID}', '{$accessTokenStr}', '{$userEmail}', '{$userEmail}', 1, 1) " . "on duplicate key update " . "UniversalID = '{$vUniversalID}';"; GetMainConnection()->exec($sql); $UserID = GetMainConnection()->lastInsertId(); $sql = "insert into UserData(UserID, FirstName, LastName) " . "values({$UserID}, '" . $user->getField('first_name') . "', '" . $user->getField('last_name') . "') " . "on duplicate key update " . "UserID = {$UserID};"; GetMainConnection()->exec($sql); } catch (Facebook\Exceptions\FacebookResponseException $e) { /*echo 'Graph returned an error: ' . $e->getMessage(); exit;*/ return AddAlertMessage('danger', 'Ошибка при регистрации! (3)', '/'); } catch (Facebook\Exceptions\FacebookSDKException $e) { /*echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit;*/ return AddAlertMessage('danger', 'Ошибка при регистрации! (4)', '/');
function TryToLoginUsingCookie() { $CookieName = "unvusrid"; if (isset($_SESSION['unvusrid'])) { // Продлить срок жизни cookies до 60 дней SetCookie($CookieName, Encrypt_Blowfish($_SESSION['unvusrid']), time() + 3600 * 24 * 60, "/"); // время жизни 60 дней unset($_SESSION['unvusrid']); } if (isset($_COOKIE[$CookieName]) && GetUserID() == 0) { LoginUsingUniversalID(Decrypt_Blowfish($_COOKIE[$CookieName])); } }