Задать вопрос
@fluxxpuff

Как настроить группы при создании нового пользователя в битриксе?

Имеется следующая задача: по скрипту завести пользователя в битриксе, с уже настроенными паролем, группами, и т.д.

Мой код:
import requests
from bs4 import BeautifulSoup

# 1. Авторизация в админ-панели
session = requests.Session()
login_url = f"{PORTAL_URL}/bitrix/admin/"
login_data = {
    "AUTH_FORM": "Y",
    "TYPE": "AUTH",
    "USER_LOGIN": ADMIN_USER,
    "USER_PASSWORD": ADMIN_PASS,
    "Login": "Войти"
}

# 2. Получение CSRF-токена
admin_page = session.get(f"{PORTAL_URL}/bitrix/admin/user_edit.php")
soup = BeautifulSoup(admin_page.text, 'html.parser')
csrf_token = soup.find('input', {'name': 'sessid'})['value']

# 3. Создание пользователя через внутренний API
user_data = {
    "sessid": csrf_token,
    "lang": "ru",
    "ACTION": "ADD",
    
    
    # Основные данные
    "LOGIN": USER_EMAIL,
    "EMAIL": USER_EMAIL,
    "NAME": "Тест",
    "LAST_NAME": "Пользователь",
    "SECOND_NAME": "",
    "PERSONAL_GENDER": "M",
    
    # Пароль
    "NEW_PASSWORD": USER_PASSWORD,
    "NEW_PASSWORD_CONFIRM": USER_PASSWORD,
    
    # Права доступа
    "GROUP_ID": [3, 4, 12],
    "ACTIVE": "Y",
    
    # Отдел
    "UF_DEPARTMENT[]": [1],  # ID отдела

    "WORK_DEPARTMENT": "test",
    "WORK_POSITION": 'test',
    "apply": "Y",  # Сохранить и остаться на странице
}

# Отправка запроса на создание пользователя
create_response = session.post(
    f"{PORTAL_URL}/bitrix/admin/user_edit.php",
    data=user_data
)


Все работает кроме одного: группы не применяются (3, 4, 12 - айдишники групп).
Увидел коммент в доке, где на php нужно делать так:
[GROUP_ID] => Array
       (
           [0] => Array
               (
                   [GROUP_ID] => 10
                   [DATE_ACTIVE_FROM] => 24.07.2007
                   [DATE_ACTIVE_TO] => 24.07.2008
               )

           [1] => Array
               (
                   [GROUP_ID] => 20
                   [DATE_ACTIVE_FROM] =>
                   [DATE_ACTIVE_TO] =>
               )

       )


Переделал под питон:
GROUPS = [
    {
        "GROUP_ID": 3,
        "DATE_ACTIVE_FROM": "",
        "DATE_ACTIVE_TO": ""
    },
    {
        "GROUP_ID": 4,
        "DATE_ACTIVE_FROM": "",
        "DATE_ACTIVE_TO": ""
    },
    {
        "GROUP_ID": 12,
        "DATE_ACTIVE_FROM": "",
        "DATE_ACTIVE_TO": ""
    }
]

. . .

group_fields = {}
for i, group in enumerate(GROUPS):
    group_fields[f"GROUP_ID[{i}][GROUP_ID]"] = group["GROUP_ID"]
    group_fields[f"GROUP_ID[{i}][DATE_ACTIVE_FROM]"] = group["DATE_ACTIVE_FROM"]
    group_fields[f"GROUP_ID[{i}][DATE_ACTIVE_TO]"] = group["DATE_ACTIVE_TO"]

. . .

user_data = {
    "sessid": csrf_token,
    "lang": "ru",
    "ACTION": "ADD",
    "apply": "Y",
    "LOGIN": USER_EMAIL,
    "EMAIL": USER_EMAIL,
    "NAME": "Тест",
    "LAST_NAME": "Пользователь",
    "SECOND_NAME": "",
    "PERSONAL_GENDER": "M",
    "NEW_PASSWORD": USER_PASSWORD,
    "NEW_PASSWORD_CONFIRM": USER_PASSWORD,
    "ACTIVE": "Y",
    "UF_DEPARTMENT[]": [1],
    "WORK_DEPARTMENT": "test",
    "WORK_POSITION": 'test',
    **group_fields
}

Ничего не получилось.

В чем может быть проблема?
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы