# Generated by Django 5.2.7 on 2025-11-07 06:48

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='LDAPConfig',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('singleton', models.BooleanField(default=True, editable=False)),
                ('host', models.CharField(default='localhost', help_text='FQDN или IP контроллера домена (например, dc.example.com).', max_length=255, verbose_name='Хост контроллера домена')),
                ('port', models.IntegerField(default=389, help_text='389 для LDAP, 636 для LDAPS (SSL).', verbose_name='Порт')),
                ('use_ssl', models.BooleanField(default=False, help_text='Если включено, будет использоваться LDAPS на порту 636.', verbose_name='Использовать SSL (LDAPS)')),
                ('base_dn', models.CharField(blank=True, default='', help_text='Корневой DN домена (например, DC=example,DC=com). Будет предложен автоматически на основе хоста.', max_length=512, verbose_name='Base DN')),
                ('bind_dn', models.CharField(blank=True, help_text='UPN или DN сервисной учётной записи для поиска пользователей (например, ldapuser@example.com).', max_length=512, null=True, verbose_name='Bind DN (сервисная учётка)')),
                ('bind_password', models.CharField(blank=True, help_text='Рекомендуется задавать через переменные окружения. Ввод скрыт в админке.', max_length=512, null=True, verbose_name='Пароль сервисной учётки')),
                ('search_filter', models.CharField(default='(|(&(objectClass=user)(sAMAccountName={username}))(&(objectClass=user)(userPrincipalName={username})))', help_text='Используется для поиска DN пользователя. {username} будет подставлен автоматически.', max_length=512, verbose_name='Фильтр поиска пользователя')),
                ('search_attrs', models.JSONField(default=list, help_text='Список атрибутов AD, которые нужно получать вместе с DN.', verbose_name='Атрибуты для выборки')),
                ('default_email_domain', models.CharField(blank=True, help_text='Если у пользователя нет mail в AD — будет сгенерирован username@этот.домен.', max_length=255, null=True, verbose_name='Домен email по умолчанию')),
                ('map_first_name', models.CharField(default='givenName', help_text='Имя поля AD, из которого брать имя пользователя (например, givenName).', max_length=64, verbose_name='Атрибут имени (first_name)')),
                ('map_last_name', models.CharField(default='sn', help_text='Имя поля AD, из которого брать фамилию пользователя (например, sn).', max_length=64, verbose_name='Атрибут фамилии (last_name)')),
                ('superuser_group', models.CharField(blank=True, help_text='Члены этой группы получат права суперпользователя Django.', max_length=512, null=True, verbose_name='DN группы суперпользователей')),
                ('staff_group', models.CharField(blank=True, help_text='Члены этой группы получат доступ к админке (is_staff).', max_length=512, null=True, verbose_name='DN группы персонала (staff)')),
            ],
            options={
                'verbose_name': 'LDAP конфигурация',
                'verbose_name_plural': 'LDAP конфигурация (одна запись)',
            },
        ),
    ]
