diff --git a/wp-content/themes/cosmopet/modules/footer/module-controller.php b/wp-content/themes/cosmopet/modules/footer/module-controller.php
index e1d0f4a..64ed74f 100644
--- a/wp-content/themes/cosmopet/modules/footer/module-controller.php
+++ b/wp-content/themes/cosmopet/modules/footer/module-controller.php
@@ -1,6 +1,6 @@
Hello, {$first_name} {$last_name}!";
- } else {
- $html = "
Hello, {$first_name} {$last_name}!
";
- }
- if (isset($tg_user['photo_url'])) {
- $photo_url = htmlspecialchars($tg_user['photo_url']);
- $html .= "
";
- }
- $html .= "Log out
";
- } else {
+ if (!is_user_logged_in()) {
$bot_username = BOT_USERNAME;
- $html = '';
- }
- if(!is_user_logged_in()) {
+ $html = '';
+ echo $html;
+ } else {
+ $current_user = wp_get_current_user();
+ $html = "Hello, " . esc_html($current_user->display_name) . "!
";
+ $html .= "Log out
";
echo $html;
}
}
-add_action( 'wp_ajax_ontelegramauth', 'onTelegramAuth' );
-add_action( 'wp_ajax_nopriv_ontelegramauth', 'onTelegramAuth' );
+// Обработчик авторизации через Telegram
+add_action('wp_ajax_ontelegramauth', 'onTelegramAuth');
+add_action('wp_ajax_nopriv_ontelegramauth', 'onTelegramAuth');
+
+function onTelegramAuth() {
+ // Получаем данные от Telegram
+ $auth_data = [
+ 'id' => sanitize_text_field($_POST['id']),
+ 'first_name' => sanitize_text_field($_POST['first_name']),
+ 'last_name' => sanitize_text_field($_POST['last_name']),
+ 'username' => sanitize_text_field($_POST['username'] ?? ''),
+ 'photo_url' => sanitize_text_field($_POST['photo_url'] ?? '')
+ ];
+
+ if (!$auth_data['id']) {
+ wp_die(json_encode(['status' => 'error', 'message' => 'Invalid Telegram data']));
+ }
-function onTelegramAuth(){
- $tg_id = $_POST['userid'];
- $tg_username = $_POST['username'];
- $user = get_users(
- array(
+ // Проверяем существование пользователя по tg_account
+ $users = get_users([
'meta_key' => 'tg_account',
- 'meta_value' => $tg_id
- )
- );
- // $user = get_users(
- // array(
- // 'meta_key' => 'tg_username',
- // 'meta_value' => $tg_username
- // )
- // );
-
- // Генерация пароля
- $alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890@#!()';
- $pass = array();
- $alphaLength = strlen($alphabet) - 1;
- for ($i = 0; $i < 12; $i++) {
- $n = rand(0, $alphaLength);
- $pass[] = $alphabet[$n];
- }
- $pass = implode($pass);
-
- if($user) {
- $user_login = $user[0]->data->user_login;
- $user_id = get_user_by( 'login', $user_login )->ID;
- wp_set_password( $pass, get_user_by( 'login', $user_login )->ID );
- wp_signon(
- array(
- 'user_login' => $user_login,
- 'user_password' => $pass,
- 'remember' => 'on',
- )
- );
+ 'meta_value' => $auth_data['id'],
+ 'number' => 1
+ ]);
+
+ $password = wp_generate_password(12, true, false); // Генерация безопасного пароля
+
+ if ($users) {
+ // Существующий пользователь
+ $user = $users[0];
+ wp_set_password($password, $user->ID);
+ $login = wp_signon([
+ 'user_login' => $user->user_login,
+ 'user_password' => $password,
+ 'remember' => true
+ ]);
+
+ if (!is_wp_error($login)) {
+ session_start();
+ $_SESSION['tg_user'] = $auth_data;
+ session_write_close();
+ wp_die(json_encode(['status' => 'success', 'redirect' => admin_url()]));
+ }
} else {
- $user_id = wp_create_user( $tg_username, $pass, '');
- add_user_meta( $user_id, 'tg_account', $tg_id);
- add_user_meta( $user_id, 'tg_username', $tg_username);
- wp_update_user( [
- 'ID' => $user_id,
- 'first_name' => $_POST['fname'],
- 'last_name' => $_POST['lname']
- ] );
- wp_set_auth_cookie( $user_id, true );
+ // Новый пользователь
+ $username = sanitize_user($auth_data['username'] ?: $auth_data['first_name'] . '_' . $auth_data['last_name'], true);
+ $username = wp_slash($username); // Экранируем для безопасности
+ $user_id = wp_create_user($username, $password, $username . '@telegram.com');
+
+ if (!is_wp_error($user_id)) {
+ wp_update_user([
+ 'ID' => $user_id,
+ 'display_name' => $auth_data['first_name'] . ' ' . $auth_data['last_name'],
+ 'first_name' => $auth_data['first_name'],
+ 'last_name' => $auth_data['last_name']
+ ]);
+ add_user_meta($user_id, 'tg_account', $auth_data['id']);
+ add_user_meta($user_id, 'tg_username', $auth_data['username']);
+
+ $login = wp_signon([
+ 'user_login' => $username,
+ 'user_password' => $password,
+ 'remember' => true
+ ]);
+
+ if (!is_wp_error($login)) {
+ session_start();
+ $_SESSION['tg_user'] = $auth_data;
+ session_write_close();
+ wp_die(json_encode(['status' => 'success', 'redirect' => admin_url()]));
+ }
+ }
}
-
+
+ wp_die(json_encode(['status' => 'error', 'message' => 'Login failed']));
}
-add_action( 'wp_ajax_linktelegram', 'linkTelegram' );
-add_action( 'wp_ajax_nopriv_linktelegram', 'linkTelegram' );
+// Функция привязки Telegram к существующему пользователю
+add_action('wp_ajax_linktelegram', 'linkTelegram');
+add_action('wp_ajax_nopriv_linktelegram', 'linkTelegram');
-function linkTelegram(){
- $tg_id = $_POST['userid'];
+function linkTelegram() {
+ if (!is_user_logged_in()) {
+ wp_die(json_encode(['status' => 'error', 'message' => 'Not logged in']));
+ }
+
+ $tg_id = sanitize_text_field($_POST['userid']);
$user_id = get_current_user_id();
-
- add_user_meta( $user_id, 'tg_account', $tg_id);
- wp_update_user( [
- 'ID' => $user_id,
- 'first_name' => $_POST['fname'],
- 'last_name' => $_POST['lname']
- ] );
+
+ add_user_meta($user_id, 'tg_account', $tg_id);
+ wp_update_user([
+ 'ID' => $user_id,
+ 'first_name' => sanitize_text_field($_POST['fname']),
+ 'last_name' => sanitize_text_field($_POST['lname'])
+ ]);
+
+ wp_die(json_encode(['status' => 'success']));
}
-add_action( 'wp_ajax_email_link', 'emailLink' );
-add_action( 'wp_ajax_nopriv_email_link', 'emailLink' );
-function emailLink(){
-
- $email = $_POST['email'];
- $user_id = get_current_user_id();
-
- if(email_exists($email)){
- header("Content-Type: application/json");
- echo json_encode(array(
- 'error' => esc_html__( 'Email is already registered', 'woodmart' )
- ));
- exit();
- } else {
- wp_update_user( [
- 'ID' => $user_id,
- 'user_email' => $email
- ] );
+// Функция обновления email
+add_action('wp_ajax_email_link', 'emailLink');
+add_action('wp_ajax_nopriv_email_link', 'emailLink');
+
+function emailLink() {
+ if (!is_user_logged_in()) {
+ wp_die(json_encode(['status' => 'error', 'message' => 'Not logged in']));
}
-
-}
+ $email = sanitize_email($_POST['email']);
+ $user_id = get_current_user_id();
+ if (email_exists($email)) {
+ wp_die(json_encode(['status' => 'error', 'message' => 'Email is already registered']));
+ }
+ wp_update_user(['ID' => $user_id, 'user_email' => $email]);
+ wp_die(json_encode(['status' => 'success']));
+}
-// Добавляем колонку Telegram в список пользователей
+// Добавление и настройка колонки Telegram
add_filter('manage_users_columns', 'add_tg_account_column');
function add_tg_account_column($columns) {
$columns['tg_username'] = 'Telegram';
return $columns;
}
-// Заполняем колонку данными
-add_filter('manage_users_custom_column', 'add_tg_account_column_content', 10, 3);
+add_action('manage_users_custom_column', 'add_tg_account_column_content', 10, 3);
function add_tg_account_column_content($value, $column_name, $user_id) {
if ('tg_username' == $column_name) {
- $tg_account = get_user_meta($user_id, 'tg_username', true);
- if ($tg_account) {
- return '@' . esc_html($tg_account) . '';
- }
- return 'не указан';
+ $tg_username = get_user_meta($user_id, 'tg_username', true);
+ return $tg_username ? '@' . esc_html($tg_username) . '' : 'не указан';
}
return $value;
}
-// Делаем колонку сортируемой
add_filter('manage_users_sortable_columns', 'make_tg_account_column_sortable');
function make_tg_account_column_sortable($columns) {
$columns['tg_username'] = 'tg_username';
return $columns;
}
-// Обрабатываем сортировку
add_action('pre_get_users', 'handle_tg_account_sorting');
function handle_tg_account_sorting($query) {
- if (!is_admin() || !$query->is_main_query()) {
- return;
- }
-
+ if (!is_admin() || !$query->is_main_query()) return;
if ('tg_username' === $query->get('orderby')) {
$query->set('meta_key', 'tg_username');
$query->set('orderby', 'meta_value');
}
-}
-
-?>
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css b/wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css
index 03011a4..dad8e2b 100644
--- a/wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css
+++ b/wp-content/themes/cosmopet/modules/layout/assets/css/gp-style-core.css
@@ -2173,4 +2173,8 @@ textarea{
position: relative;
}
+.modal__aside {
+ right: 0%!important;
+}
+