function delete_user($id) { $user = get_user($id); if (!$user) { throw new Exception("No such user {$id}"); } crypto_log("Deleting user " . ($user ? htmlspecialchars(print_r($user, true)) : "<i>(phantom)</i>")); // go through all accounts $already_done = array(); foreach (account_data_grouped() as $label => $accounts) { foreach ($accounts as $key => $account) { if ($account['table'] != 'graphs' && !isset($already_done[$account['table']])) { delete_from($account['table']); $already_done[$account['table']] = 1; } } } delete_from('balances'); delete_from('address_balances'); delete_from('hashrates'); delete_from('securities'); delete_from('offsets'); delete_from('summary_instances'); delete_from('summaries'); delete_from('graph_data_summary'); delete_from('graph_data_balances'); delete_from('pending_subscriptions'); // delete graphs crypto_log("Deleting graphs..."); $q = db()->prepare("SELECT * FROM graph_pages WHERE user_id=?"); $q->execute(array($user['id'])); $pages = $q->fetchAll(); foreach ($pages as $page) { $q = db()->prepare("DELETE FROM graphs WHERE page_id=?"); $q->execute(array($page['id'])); crypto_log("(" . number_format($q->rowCount()) . " rows deleted)"); } delete_from('graph_pages'); delete_from('managed_graphs'); crypto_log("Deleting user_properties..."); $q = db()->prepare("DELETE FROM user_properties WHERE id=?"); $q->execute(array($user['id'])); crypto_log("(" . number_format($q->rowCount()) . " rows deleted)"); // finally delete the user object crypto_log("Deleting user..."); $user = Users\User::findUser(db(), $user['id']); $user->delete(db()); }
$groups = [['name' => 'Гости'], ['name' => 'Зарегистрированые'], ['name' => 'Администрация']]; $roles = [['name' => 'Гость'], ['name' => 'Пользователь'], ['name' => 'Администратор']]; foreach ($groups as $key => $group) { $groupObject = new \Users\Group($group); $groupObject->save(); $roleObject = new Users\Role($roles[$key]); $roleObject->group_id = $groupObject->id; $roleObject->save(); } if (!empty($params['user'])) { $user = new Users\User(array('user_login' => $params['user']['user_login'], 'user_mail' => $params['user']['user_mail'], 'user_pass' => password_hash($params['user']['user_pass'], PASSWORD_DEFAULT), 'user_group_id' => $groupObject->id, 'user_role_id' => $roleObject->id)); $user->save(); $userInfo = new Users\User\Info(['user_id' => $user->id, 'first_name' => 'Администратор']); $userInfo->save(); } else { $user = new Users\User(array('user_login' => 'admin', 'user_mail' => 'admin@' . idn_to_utf8(INJI_DOMAIN_NAME), 'user_pass' => password_hash('admin', PASSWORD_DEFAULT), 'user_group_id' => $groupObject->id, 'user_role_id' => $roleObject->id)); $user->save(); $userInfo = new Users\User\Info(['user_id' => $user->id, 'first_name' => 'Администратор']); $userInfo->save(); } $socials = [['name' => 'Вконтакте', 'code' => 'vk', 'object_name' => 'Vk'], ['name' => 'Google+', 'code' => 'google', 'object_name' => 'Google'], ['name' => 'Facebook', 'code' => 'facebook', 'object_name' => 'Facebook']]; $socialsConfig = [[['name' => 'appId'], ['name' => 'secret']], [['name' => 'client_id'], ['name' => 'secret']], [['name' => 'appId'], ['name' => 'secret']]]; foreach ($socials as $key => $social) { $socialObject = new Users\Social($social); $socialObject->save(); foreach ($socialsConfig[$key] as $config) { $configObject = new \Users\Social\Config($config); $configObject->social_id = $socialObject->id; $configObject->save(); } }
<?php /** * Created by PhpStorm. * User: Admin * Date: 12.10.2015 * Time: 15:16 */ include_once 'init.php'; $request = new \request\Request(); $response = new \response\response(); $Users = new \Users\User(); $Events = new \Events\event(); $Groups = new \Groups\Group(); $Locations = new \Location\location(); $Comments = new \Events\comment(); $URI = $request->getRequestURI(); $method = $request->getMethod(); $URIs = explode("/", $URI); $return = new \methodreturn\createreturn(); $main = new \enum\tables\main(); if (isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW'])) { $Username = $_SERVER['PHP_AUTH_USER']; $PW = $_SERVER['PHP_AUTH_PW']; $Email = $Username; $Auth = $Users->verifyUser($Username, $PW); if ($Auth == 'Error') { $return->createReturn(null, \enum\statuscodes::UNAUTHORIZED, \enum\returncodes::Error_WrongUsernameorPassword); exit; } } elseif ($URIs[2] == "Users" and $URIs[3] == "activate") {
public function attachEmailAction() { if (Users\User::$cur->mail) { Tools::redirect('/', 'К вашему аккаунту уже привязан E-Mail'); } if (!empty($_POST['mail'])) { $user_mail = trim($_POST['mail']); if (!filter_var($user_mail, FILTER_VALIDATE_EMAIL)) { Msg::add('Вы ввели не корректный E-mail', 'danger'); } else { $user = Users\User::get($user_mail, 'mail'); if ($user && $user->id != Users\User::$cur->id) { Msg::add('Данный E-mail уже привязан к другому аккаунту', 'danger'); } else { Users\User::$cur->mail = $user_mail; if (!empty($this->module->config['needActivation'])) { Users\User::$cur->activation = Tools::randomString(); $from = 'noreply@' . INJI_DOMAIN_NAME; $to = $user_mail; $subject = 'Активация аккаунта на сайте ' . idn_to_utf8(INJI_DOMAIN_NAME); $text = 'Для активации вашего аккаунта перейдите по ссылке <a href = "http://' . INJI_DOMAIN_NAME . '/users/activation/' . Users\User::$cur->id . '/' . Users\User::$cur->activation . '">http://' . idn_to_utf8(INJI_DOMAIN_NAME) . '/users/activation/' . Users\User::$cur->id . '/' . Users\User::$cur->activation . '</a>'; Tools::sendMail($from, $to, $subject, $text); Msg::add('На указанный почтовый ящик была выслана ваша ссылка для подтверждения E-Mail', 'success'); } else { Msg::add('Вы успешно привязали E-Mail к своему аккаунту', 'success'); } Users\User::$cur->save(); Tools::redirect('/'); } } } $this->view->page(); }
public function registration($data, $autorization = false) { extract($data); if (empty($user_mail)) { Msg::add('Вы не ввели E-mail', 'danger'); return false; } $user_mail = trim($user_mail); if (!filter_var($user_mail, FILTER_VALIDATE_EMAIL)) { Msg::add('Вы ввели не корректный E-mail', 'danger'); return false; } $user = $this->get($user_mail, 'mail'); if ($user) { Msg::add('Введенный вами почтовый ящик зарегистрирован в нашей системе, войдите или введите другой почтовый ящик', 'danger'); return false; } if (empty($user_login)) { $user_login = $user_mail; } $user_login = trim($user_login); $user = $this->get($user_login, 'login'); if ($user) { Msg::add('Введенный вами логин зарегистрирован в нашей системе, войдите или введите другой логин', 'danger'); return false; } if (empty($user_name)) { $user_name = ''; } if (empty($user_city)) { $user_city = ''; } if (empty($user_birthday)) { $user_birthday = ''; } if (empty($user_phone)) { $user_phone = ''; } $invite_code = !empty($data['invite_code']) ? $data['invite_code'] : (!empty($_POST['invite_code']) ? $_POST['invite_code'] : (!empty($_COOKIE['invite_code']) ? $_COOKIE['invite_code'] : (!empty($_GET['invite_code']) ? $_GET['invite_code'] : ''))); if (!empty($invite_code)) { $invite = Users\User\Invite::get($invite_code, 'code'); if (!$invite) { Msg::add('Такой код приглашения не найден', 'danger'); return false; } if ($invite->limit && !($invite->limit - $invite->count)) { Msg::add('Лимит приглашений для данного кода исчерпан', 'danger'); return false; } $parent_id = $invite->user_id; $inviter = $parent_id; $invite->count++; $invite->save(); } if (empty($parent_id) && !empty($this->config['defaultPartner'])) { $parent_id = $this->config['defaultPartner']; } $pass = Tools::randomString(10); $user = new Users\User(['pass' => $this->hashpass($pass), 'mail' => $user_mail, 'login' => htmlspecialchars($user_login), 'role_id' => 2, 'group_id' => 2, 'parent_id' => !empty($parent_id) ? $parent_id : 0]); if (!empty($this->config['needActivation'])) { $user->activation = Tools::randomString(); } $user->save(); if (!$user->id) { Msg::add('Не удалось зарегистрировать', 'danger'); return false; } $info = new \Users\User\Info(['user_id' => $user->id, 'first_name' => htmlspecialchars($user_name), 'city' => htmlspecialchars($user_city), 'bday' => htmlspecialchars($user_birthday), 'phone' => htmlspecialchars($user_phone)]); $info->save(); if (isset($inviter)) { $this->AddUserActivity($inviter, 2, "У вас зарегистрировался новый партнер, {$info->first_name} {$info->last_name} (id: {$user->id}, email: {$user->mail})"); } if ($autorization) { $this->autorization($user_mail, $pass, 'mail'); } if (!empty($this->config['needActivation'])) { $from = 'noreply@' . INJI_DOMAIN_NAME; $to = $user_mail; $subject = 'Регистрация на сайте ' . idn_to_utf8(INJI_DOMAIN_NAME); $text = 'Вы были зарегистрированы на сайте ' . idn_to_utf8(INJI_DOMAIN_NAME) . '<br />для входа используйте ваш почтовый ящик в качестве логина и пароль: ' . $pass; $text .= '<br />'; $text .= '<br />'; $text .= 'Для активации вашего аккаунта перейдите по ссылке <a href = "http://' . INJI_DOMAIN_NAME . '/users/activation/' . $user->id . '/' . $user->activation . '">http://' . idn_to_utf8(INJI_DOMAIN_NAME) . '/users/activation/' . $user->id . '/' . $user->activation . '</a>'; Tools::sendMail($from, $to, $subject, $text); Msg::add('Вы были зарегистрированы. На указанный почтовый ящик был выслан ваш пароль и ссылка для активации', 'success'); } else { $from = 'noreply@' . INJI_DOMAIN_NAME; $to = $user_mail; $subject = 'Регистрация на сайте ' . idn_to_utf8(INJI_DOMAIN_NAME); $text = 'Вы были зарегистрированы на сайте ' . idn_to_utf8(INJI_DOMAIN_NAME) . '<br />для входа используйте ваш почтовый ящик в качестве логина и пароль: ' . $pass; Tools::sendMail($from, $to, $subject, $text); Msg::add('Вы были зарегистрированы. На указанный почтовый ящик был выслан ваш пароль', 'success'); } return $user->id; }
public function reward($reward_id, $sums = [], $rootUser = null) { $rootUser = $rootUser ? $rootUser : \Users\User::$cur; $reward = \Money\Reward::get($reward_id); if (!$reward->active) { return false; } $reward->checkBlocked(); $reward_count = \Money\Reward\Recive::getCount(['where' => ['reward_id', $reward_id]]); if ($reward_count >= $reward->quantity && $reward->quantity) { return false; } $types = $this->getSnippets('rewardType'); $checkers = $this->getSnippets('userActivity'); foreach ($reward->levels(['order' => ['level', 'asc']]) as $level) { $user = $rootUser; for ($i = 0; $i < $level->level; $i++) { $next = $user && $user->parent ? $user->parent : false; if (!$next && $reward->lasthaveall) { break; } $noActive = $next->blocked; foreach ($checkers as $checker) { if ($noActive) { break; } $noActive = !$checker['checker']($next); } if ($next && $next->parent_id && $noActive) { foreach ($next->users as $childUser) { $childUser->parent_id = $next->parent_id; $childUser->save(); } $i--; $user = Users\User::get($user->id); $rootUser = Users\User::get($rootUser->id); continue; } $user = $next; } if (!$user) { continue; } if ($reward->peruser) { $recives = \Money\Reward\Recive::getList(['where' => [['user_id', $user->id], ['reward_id', $reward->id]]]); $amount = 0; foreach ($recives as $recive) { $amount += $recive->amount; } if ($amount >= $reward->peruser) { continue; } } $rewardGet = true; if (!$level->nocondition) { foreach ($reward->conditions as $condition) { if (!$condition->checkComplete($user->id)) { $rewardGet = false; break; } } if (!$rewardGet && !$reward->block) { continue; } } $recive = new \Money\Reward\Recive(); $recive->reward_id = $reward->id; $recive->user_id = $user->id; $recive->amount = 1; $recive->save(); $count = $types[$level->type]['rewarder']($reward, $sums, $user, $rootUser, $level, $rewardGet); } }
<?php return ['widget' => function () { ?> <div class="panel panel-default"> <div class="panel-heading">Пользователи</div> <div class="panel-body"> <p>Всего: <?php echo Users\User::getCount(); ?> </p> <p>Новых сегодня: <?php echo Users\User::getCount(['where' => ['date_create', date('Y-m-d 00:00:00'), '>']]); ?> </p> </div> <div class="panel-footer"> <a href ="/admin/users/User">Управление</a> </div> </div> <?php }];
function deleteUser($user) { $user_instance = Users\User::findUser(db(), $user['id']); if ($user_instance) { $user_instance->delete(db()); } $q = db()->prepare("DELETE FROM user_properties WHERE id=?"); $q->execute(array($user['id'])); $q = db()->prepare("DELETE FROM notifications_ticker WHERE id IN (SELECT type_id FROM notifications WHERE user_id=? AND notification_type='ticker')"); $q->execute(array($user['id'])); $q = db()->prepare("DELETE FROM notifications WHERE user_id=?"); $q->execute(array($user['id'])); $q = db()->prepare("DELETE FROM jobs WHERE user_id=?"); $q->execute(array($user['id'])); $q = db()->prepare("DELETE FROM summaries WHERE user_id=?"); $q->execute(array($user['id'])); $q = db()->prepare("DELETE FROM summary_instances WHERE user_id=?"); $q->execute(array($user['id'])); $q = db()->prepare("DELETE FROM balances WHERE user_id=?"); $q->execute(array($user['id'])); }
public static function auth() { $config = static::getConfig(); if (empty($_GET['code']) && empty($_GET['error'])) { $query = ['client_id' => $config['appId'], 'scope' => 'email', 'response_type' => 'code', 'display' => 'page', 'redirect_uri' => 'http://' . INJI_DOMAIN_NAME . '/users/social/auth/vk']; \Tools::redirect("https://oauth.vk.com/authorize?" . http_build_query($query)); } if (empty($_GET['code']) && !empty($_GET['error'])) { \Tools::redirect('/', 'Произошла ошибка во время авторизации через соц. сеть: ' . $_GET['error_description']); } $query = ['client_id' => $config['appId'], 'client_secret' => $config['secret'], 'code' => $_GET['code'], 'redirect_uri' => 'http://' . INJI_DOMAIN_NAME . '/users/social/auth/vk']; $result = @file_get_contents("https://oauth.vk.com/access_token?" . http_build_query($query)); if ($result === false) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $result = json_decode($result, true); if (empty($result['user_id'])) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $userQuery = ['user_id' => $result['user_id'], 'fields' => 'sex, bdate, photo_max_orig, home_town', 'access_token' => $result['access_token']]; $userResult = @file_get_contents("https://api.vk.com/method/users.get?" . http_build_query($userQuery)); if (!$userResult) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $userDetail = json_decode($userResult, true); if (empty($userDetail['response'][0])) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $social = static::getObject(); $userSocial = \Users\User\Social::get([['uid', $result['user_id']], ['social_id', $social->id]]); if ($userSocial && $userSocial->user) { \App::$cur->users->newSession($userSocial->user); if (!empty(\App::$cur->users->config['loginUrl'][\App::$cur->type])) { \Tools::redirect(\App::$cur->users->config['loginUrl'][\App::$cur->type]); } } else { if ($userSocial && !$userSocial->user) { $userSocial->delete(); } if (!\Users\User::$cur->id) { $user = false; if (!empty($result['email'])) { $user = \Users\User::get($result['email'], 'mail'); } if (!$user) { $user = new \Users\User(); $user->group_id = 2; $user->role_id = 2; if (!empty($result['email'])) { $user->login = $user->mail = $result['email']; } $invite_code = !empty($_POST['invite_code']) ? $_POST['invite_code'] : (!empty($_COOKIE['invite_code']) ? $_COOKIE['invite_code'] : (!empty($_GET['invite_code']) ? $_GET['invite_code'] : '')); if (!empty($invite_code)) { $invite = \Users\User\Invite::get($invite_code, 'code'); $inveiteError = false; if (!$invite) { Msg::add('Такой код пришлашения не найден', 'danger'); $inveiteError = true; } if ($invite->limit && !($invite->limit - $invite->count)) { Msg::add('Лимит приглашений для данного кода исчерпан', 'danger'); $inveiteError = true; } if (!$inveiteError) { $user->parent_id = $invite->user_id; $invite->count++; $invite->save(); } } if (!$user->parent_id && !empty(\App::$cur->Users->config['defaultPartner'])) { $user->parent_id = \App::$cur->Users->config['defaultPartner']; } $user->save(); $userInfo = new \Users\User\Info(); $userInfo->user_id = $user->id; $userInfo->save(); } } else { $user = \Users\User::$cur; } if (!$user->info->photo_file_id && !empty($userDetail['response'][0]['photo_max_orig'])) { $user->info->photo_file_id = \App::$cur->files->uploadFromUrl($userDetail['response'][0]['photo_max_orig']); } if (!$user->info->first_name && !empty($userDetail['response'][0]['first_name'])) { $user->info->first_name = $userDetail['response'][0]['first_name']; } if (!$user->info->last_name && !empty($userDetail['response'][0]['last_name'])) { $user->info->last_name = $userDetail['response'][0]['last_name']; } if (!$user->info->city && !empty($userDetail['response'][0]['home_town'])) { $user->info->city = $userDetail['response'][0]['home_town']; } if (!$user->info->sex && !empty($userDetail['response'][0]['sex'])) { $user->info->sex = $userDetail['response'][0]['sex'] == 2 ? 1 : ($userDetail['response'][0]['sex'] == 1 ? 2 : 0); } if ($user->info->bday == '0000-00-00' && !empty($userDetail['response'][0]['bdate'])) { $user->info->bday = substr_count($userDetail['response'][0]['bdate'], '.') == 2 ? \DateTime::createFromFormat('d.m.Y', $userDetail['response'][0]['bdate'])->format('Y-m-d') : (substr_count($userDetail['response'][0]['bdate'], '.') == 1 ? \DateTime::createFromFormat('d.m', $userDetail['response'][0]['bdate'])->format('Y-m-1') : '0000-00-00'); } $user->info->save(); $userSocial = new \Users\User\Social(); $userSocial->uid = $result['user_id']; $userSocial->social_id = $social->id; $userSocial->user_id = $user->id; $userSocial->save(); \App::$cur->users->newSession($user); \Tools::redirect(\App::$cur->users->config['loginUrl'][\App::$cur->type], 'Вы успешно зарегистрировались через ВКонтакте', 'success'); } }
public function userlinksBlock() { $user = new \Users\User(); $data = $user->auth() ? array('login' => $user->login) : array(); return $data; }
public function buyCardAction() { $this->view->setTitle('Покупка карты'); $bread = []; $bread[] = ['text' => 'Покупка карты']; $user = Users\User::$cur; if (!empty($_POST) && !empty($_POST['card_id'])) { $error = false; $card = \Ecommerce\Card::get((int) $_POST['card_id']); if (!$card) { $error = true; Msg::add('Такой карты не существует', 'danger'); } if (!Users\User::$cur->id) { $user_id = $this->Users->registration($_POST, true); if (!$user_id) { $error = true; $user = null; } else { $user = Users\User::get($user_id); } } $userCard = \Ecommerce\Card\Item::get([['card_id', $card->id], ['user_id', $user->id]]); if ($userCard) { $error = true; Msg::add('У вас уже есть такая карта', 'danger'); } $fields = \Ecommerce\UserAdds\Field::getList(); foreach ($fields as $field) { if (empty($_POST['userAdds']['fields'][$field->id]) && $field->required) { $error = 1; Msg::add('Вы не указали: ' . $field->name); } } if (!$error) { $cardItem = new \Ecommerce\Card\Item(); $cardItem->card_id = $card->id; $cardItem->user_id = $user->id; $cardItem->save(); $cart = new \Ecommerce\Cart(); $cart->user_id = $user->user_id; $cart->cart_status_id = 2; $cart->comment = htmlspecialchars($_POST['comment']); $cart->date_status = date('Y-m-d H:i:s'); $cart->complete_data = date('Y-m-d H:i:s'); if (!empty($_SESSION['cart']['cart_id'])) { $cart->card_item_id = $cardItem->id; } $cart->save(); $this->module->parseFields($_POST['userAdds']['fields'], $cart); $extra = new \Ecommerce\Cart\Extra(); $extra->name = $card->name; $extra->price = $card->price; $extra->count = 1; $extra->cart_id = $cart->id; $extra->info = 'card:' . $card->id . '|cardItem:' . $cardItem->id; $extra->save(); Tools::redirect('/ecommerce/cart/success'); } } $this->view->page(['data' => compact('bread')]); }
public function indexAction() { $cart = ''; $deliverys = \Ecommerce\Delivery::getList(['order' => ['weight', 'ASC']]); $payTypes = \Ecommerce\PayType::getList(['order' => ['weight', 'ASC']]); if (!empty($_SESSION['cart']['cart_id'])) { $cart = Ecommerce\Cart::get($_SESSION['cart']['cart_id']); if (!empty($_POST)) { $error = false; if (!Users\User::$cur->id) { $user_id = $this->Users->registration($_POST, true); if (!$user_id) { $error = true; } else { $user = Users\User::get($user_id); } } else { $user = Users\User::$cur; } $ids = []; if (!empty($_POST['cartItems'])) { foreach ($_POST['cartItems'] as $cartItemId => $cartItemCont) { $cartItem = \Ecommerce\Cart\Item::get((int) $cartItemId); if (!$cartItem) { continue; } if ($cartItem->cart_id != $cart->id) { continue; } $count = (double) $cartItemCont; if ($count < 0.001) { $count = 1; } $cartItem->count = $count; $cartItem->save(); $ids[] = $cartItemId; } } foreach ($cart->cartItems as $cartItem) { if (!in_array($cartItem->id, $ids)) { $cartItem->delete(); } } $cart = Ecommerce\Cart::get($cart->id); if (!$cart->cartItems) { Tools::redirect('/ecommerce', 'Ваша корзина пуста'); } if (empty($this->module->config['sell_over_warehouse'])) { foreach ($cart->cartItems as $cartitem) { $warecount = $cartitem->price->offer->warehouseCount($cart->id); if ($cartitem->count > $warecount) { $error = true; Msg::add('Вы заказали <b>' . $cartitem->item->name . '</b> больше чем есть на складе. на складе: <b>' . $warecount . '</b>', 'danger'); } } } if ($deliverys && empty($deliverys[$_POST['delivery']])) { $error = 1; Msg::add('Выберите способ доставки'); } elseif ($deliverys && !empty($deliverys[$_POST['delivery']])) { $cart->delivery_id = $_POST['delivery']; foreach ($deliverys[$cart->delivery_id]->fields as $field) { if (empty($_POST['deliveryFields'][$field->id]) && $field->required) { $error = 1; Msg::add('Вы не указали: ' . $field->name); } } } if ($payTypes && empty($payTypes[$_POST['payType']])) { $error = 1; Msg::add('Выберите способ оплаты'); } elseif ($payTypes && !empty($payTypes[$_POST['payType']])) { $payType = $payTypes[$_POST['payType']]; $cart->paytype_id = $payType->id; } else { $payType = null; } foreach (\Ecommerce\UserAdds\Field::getList() as $field) { if (empty($_POST['userAdds']['fields'][$field->id]) && $field->required) { $error = 1; Msg::add('Вы не указали: ' . $field->name); } } if (!empty($_POST['discounts']['card_item_id'])) { $userCard = \Ecommerce\Card\Item::get((int) $_POST['discounts']['card_item_id']); if (!$userCard) { $error = true; Msg::add('Такой карты не существует'); } elseif ($userCard->user_id != $user->id) { $error = true; Msg::add('Это не ваша карта'); } else { $cart->card_item_id = $userCard->id; } } $cart->save(); if (!$error && !empty($_POST['action']) && ($_POST['action'] = 'order')) { $cart->user_id = $user->user_id; $this->module->parseFields($_POST['userAdds']['fields'], $cart); if ($payTypes && !empty($payTypes[$cart->paytype_id]) && !empty($_POST['deliveryFields'])) { $this->module->parseDeliveryFields($_POST['deliveryFields'], $cart, $deliverys[$cart->delivery_id]->fields); } $cart->cart_status_id = 2; $cart->comment = htmlspecialchars($_POST['comment']); $cart->date_status = date('Y-m-d H:i:s'); $cart->complete_data = date('Y-m-d H:i:s'); $cart->warehouse_block = 1; $cart->save(); $cart = \Ecommerce\Cart::get($cart->id); foreach ($cart->cartItems as $cartItem) { $cartItem->discount = $cartItem->discount(); $cartItem->final_price = $cartItem->price->price - $cartItem->discount; $cartItem->save(); } $cart = \Ecommerce\Cart::get($cart->id); if (!empty(\App::$cur->ecommerce->config['notify_mail'])) { $text = 'Перейдите в админ панель чтобы просмотреть новый заказ <a href = "http://' . idn_to_utf8(INJI_DOMAIN_NAME) . '/admin/ecommerce/Cart">Админ панель</a>'; $title = 'Новый заказ в интернет магазине на сайте ' . idn_to_utf8(INJI_DOMAIN_NAME); \Tools::sendMail('noreply@' . INJI_DOMAIN_NAME, \App::$cur->ecommerce->config['notify_mail'], $title, $text); } if ($this->notifications) { $notification = new Notifications\Notification(); $notification->name = 'Новый заказ в интернет магазине на сайте ' . idn_to_utf8(INJI_DOMAIN_NAME); $notification->text = 'Перейдите в админ панель чтобы просмотреть новый заказ'; $notification->chanel_id = $this->notifications->getChanel('Ecommerce-orders')->id; $notification->save(); } $handlers = $this->ecommerce->getSnippets('payTypeHandler'); $redirect = ['/ecommerce/cart/success']; if ($payType && !empty($handlers[$payType->handler]['handler'])) { $newRedirect = $handlers[$payType->handler]['handler']($cart); if (!empty($newRedirect)) { $redirect = $newRedirect; } } unset($_SESSION['cart']['cart_id']); call_user_func_array(['Tools', 'redirect'], $redirect); } } } $this->view->setTitle('Корзина'); $bread = []; $bread[] = ['text' => 'Каталог', 'href' => '/ecommerce']; $bread[] = ['text' => 'Корзина', 'href' => '/ecommerce/cart']; $this->view->page(['data' => compact('cart', 'items', 'deliverys', 'payTypes', 'packItem', 'bread')]); }
public static function auth() { $config = static::getConfig(); if (empty($_GET['code']) && empty($_GET['error'])) { $query = ['client_id' => $config['appId'], 'scope' => 'email', 'response_type' => 'code', 'redirect_uri' => 'http://' . INJI_DOMAIN_NAME . '/users/social/auth/facebook']; \Tools::redirect("https://www.facebook.com/dialog/oauth?" . http_build_query($query)); } if (empty($_GET['code']) && !empty($_GET['error'])) { \Tools::redirect('/', 'Произошла ошибка во время авторизации через соц. сеть: ' . $_GET['error_description']); } $query = ['client_id' => $config['appId'], 'redirect_uri' => 'http://' . INJI_DOMAIN_NAME . '/users/social/auth/facebook', 'client_secret' => $config['secret'], 'code' => urldecode($_GET['code'])]; $result = @file_get_contents("https://graph.facebook.com/oauth/access_token?" . http_build_query($query)); if ($result === false) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } parse_str($result, $output); if (empty($output['access_token'])) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $userQuery = ['access_token' => $output['access_token'], 'fields' => 'first_name,middle_name,last_name,email,gender,location,picture']; $userResult = @file_get_contents("https://graph.facebook.com/me?" . http_build_query($userQuery)); if (!$userResult) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $userDetail = json_decode($userResult, true); if (empty($userDetail['id'])) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $social = static::getObject(); $userSocial = \Users\User\Social::get([['uid', $userDetail['id']], ['social_id', $social->id]]); if ($userSocial && $userSocial->user) { \App::$cur->users->newSession($userSocial->user); if (!empty(\App::$cur->users->config['loginUrl'][\App::$cur->type])) { \Tools::redirect(\App::$cur->users->config['loginUrl'][\App::$cur->type]); } } else { if ($userSocial && !$userSocial->user) { $userSocial->delete(); } if (!\Users\User::$cur->id) { $user = false; if (!empty($userDetail['email'])) { $user = \Users\User::get($userDetail['email'], 'mail'); } if (!$user) { $user = new \Users\User(); $user->group_id = 2; $user->role_id = 2; if (!empty($userDetail['email'])) { $user->login = $user->mail = $userDetail['email']; } $invite_code = !empty($_POST['invite_code']) ? $_POST['invite_code'] : (!empty($_COOKIE['invite_code']) ? $_COOKIE['invite_code'] : (!empty($_GET['invite_code']) ? $_GET['invite_code'] : '')); if (!empty($invite_code)) { $invite = \Users\User\Invite::get($invite_code, 'code'); $inveiteError = false; if (!$invite) { Msg::add('Такой код пришлашения не найден', 'danger'); $inveiteError = true; } if ($invite->limit && !($invite->limit - $invite->count)) { Msg::add('Лимит приглашений для данного кода исчерпан', 'danger'); $inveiteError = true; } if (!$inveiteError) { $user->parent_id = $invite->user_id; $invite->count++; $invite->save(); } } if (!$user->parent_id && !empty(\App::$cur->Users->config['defaultPartner'])) { $user->parent_id = \App::$cur->Users->config['defaultPartner']; } $user->save(); $userInfo = new \Users\User\Info(); $userInfo->user_id = $user->id; $userInfo->save(); } } else { $user = \Users\User::$cur; } if (!$user->info->photo_file_id && !empty($userDetail['picture']['data']['url'])) { $user->info->photo_file_id = \App::$cur->files->uploadFromUrl($userDetail['picture']['data']['url']); } if (!$user->info->first_name && !empty($userDetail['first_name'])) { $user->info->first_name = $userDetail['first_name']; } if (!$user->info->last_name && !empty($userDetail['last_name'])) { $user->info->last_name = $userDetail['last_name']; } if (!$user->info->middle_name && !empty($userDetail['middle_name'])) { $user->info->middle_name = $userDetail['middle_name']; } if (!$user->info->city && !empty($userDetail['location'])) { $user->info->city = $userDetail['location']; } if (!$user->info->sex && !empty($userDetail['gender'])) { $user->info->sex = $userDetail['gender'] == 'male' ? 1 : ($userDetail['gender'] == 'female' ? 2 : 0); } $user->info->save(); $userSocial = new \Users\User\Social(); $userSocial->uid = $userDetail['id']; $userSocial->social_id = $social->id; $userSocial->user_id = $user->id; $userSocial->save(); \App::$cur->users->newSession($user); if (!empty(\App::$cur->users->config['loginUrl'][\App::$cur->type])) { \Tools::redirect(\App::$cur->users->config['loginUrl'][\App::$cur->type], 'Вы успешно зарегистрировались через Facebook', 'success'); } else { \Tools::redirect('/users/cabinet/profile', 'Вы успешно зарегистрировались через Facebook', 'success'); } } }
public function loginAsAction($userId) { $user = Users\User::get($userId); App::$cur->users->newSession($user); Tools::redirect('/', 'Теперь вы на сайте под пользователем ' . $user->name()); }
public static function auth() { $config = static::getConfig(); if (empty($_GET['code']) && empty($_GET['error'])) { $query = ['client_id' => $config['client_id'], 'scope' => 'https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile', 'response_type' => 'code', 'redirect_uri' => 'http://' . INJI_DOMAIN_NAME . '/users/social/auth/google']; \Tools::redirect("https://accounts.google.com/o/oauth2/auth?" . http_build_query($query)); } if (empty($_GET['code']) && !empty($_GET['error'])) { \Tools::redirect('/', 'Произошла ошибка во время авторизации через соц. сеть: ' . $_GET['error_description']); } $query = ['client_id' => $config['client_id'], 'client_secret' => $config['secret'], 'code' => $_GET['code'], 'grant_type' => 'authorization_code', 'redirect_uri' => 'http://' . INJI_DOMAIN_NAME . '/users/social/auth/google']; $result = false; if ($curl = curl_init()) { curl_setopt($curl, CURLOPT_URL, 'https://accounts.google.com/o/oauth2/token'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($query)); $result = curl_exec($curl); curl_close($curl); } if ($result === false) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $result = json_decode($result, true); if (empty($result['access_token'])) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $userQuery = ['access_token' => $result['access_token']]; $userResult = @file_get_contents("https://www.googleapis.com/oauth2/v1/userinfo?" . http_build_query($userQuery)); if (!$userResult) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $userDetail = json_decode($userResult, true); if (empty($userDetail['id'])) { \Tools::redirect('/', 'Во время авторизации произошли ошибки', 'danger'); } $social = static::getObject(); $userSocial = \Users\User\Social::get([['uid', $userDetail['id']], ['social_id', $social->id]]); if ($userSocial && $userSocial->user) { \App::$cur->users->newSession($userSocial->user); if (!empty(\App::$cur->users->config['loginUrl'][\App::$cur->type])) { \Tools::redirect(\App::$cur->users->config['loginUrl'][\App::$cur->type]); } } else { if ($userSocial && !$userSocial->user) { $userSocial->delete(); } if (!\Users\User::$cur->id) { $user = false; if (!empty($userDetail['email']) && !empty($userDetail['verified_email'])) { $user = \Users\User::get($userDetail['email'], 'mail'); } if (!$user) { $user = new \Users\User(); $user->group_id = 2; $user->role_id = 2; if (!empty($userDetail['email']) && !empty($userDetail['verified_email'])) { $user->login = $user->mail = $userDetail['email']; } $invite_code = !empty($_POST['invite_code']) ? $_POST['invite_code'] : (!empty($_COOKIE['invite_code']) ? $_COOKIE['invite_code'] : (!empty($_GET['invite_code']) ? $_GET['invite_code'] : '')); if (!empty($invite_code)) { $invite = \Users\User\Invite::get($invite_code, 'code'); $inveiteError = false; if (!$invite) { Msg::add('Такой код пришлашения не найден', 'danger'); $inveiteError = true; } if ($invite->limit && !($invite->limit - $invite->count)) { Msg::add('Лимит приглашений для данного кода исчерпан', 'danger'); $inveiteError = true; } if (!$inveiteError) { $user->parent_id = $invite->user_id; $invite->count++; $invite->save(); } } if (!$user->parent_id && !empty(\App::$cur->Users->config['defaultPartner'])) { $user->parent_id = \App::$cur->Users->config['defaultPartner']; } $user->save(); $userInfo = new \Users\User\Info(); $userInfo->user_id = $user->id; $userInfo->save(); } } else { $user = \Users\User::$cur; } if (!$user->info->photo_file_id && !empty($userDetail['picture'])) { $user->info->photo_file_id = \App::$cur->files->uploadFromUrl($userDetail['picture']); } if (!$user->info->first_name && !empty($userDetail['given_name'])) { $user->info->first_name = $userDetail['given_name']; } if (!$user->info->last_name && !empty($userDetail['family_name'])) { $user->info->last_name = $userDetail['family_name']; } if (!$user->info->sex && !empty($userDetail['gender'])) { $user->info->sex = $userDetail['gender'] == 'male' ? 1 : ($userDetail['gender'] == 'female' ? 2 : 0); } $user->info->save(); $userSocial = new \Users\User\Social(); $userSocial->uid = $userDetail['id']; $userSocial->social_id = $social->id; $userSocial->user_id = $user->id; $userSocial->save(); \App::$cur->users->newSession($user); \Tools::redirect('/users/cabinet/profile', 'Вы успешно зарегистрировались через Google+', 'success'); } }