Пользователи и доступ
Chassis поставляет модуль пользователей, который расширяет стандартный Django Admin: Users, Groups, административные сессии, ограничения попыток входа, профиль администратора, личная смена пароля, определение страны по GeoIP и журнал действий Admin.
В модуле нет продуктовых ролей, MFA и OIDC. Они остаются в приложении.
Что включает site
При include_users_module = True (значение по умолчанию)
ChassisAdminSiteMixin:
- регистрирует Chassis
UserAdmin/GroupAdminдляAUTH_USER_MODELиGroup - регистрирует
UserSession,LoginAttempt,LoginAttemptSchedule,AdminAuditLog - добавляет личные страницы Профиль и Изменить пароль
- добавляет те же пункты в меню пользователя
- вставляет в начало sidebar раздел Пользователи и группы
- ставит
ChassisAdminAuthenticationForm, еслиlogin_formне задан - показывает суперпользователю alert GeoIP, если Country-база недоступна
Отключить модуль на пустом тестовом site:
class CustomAdminSite(ChassisAdminSiteMixin, AdminSite):
include_users_module = False
Оставить админки и страницы, но описать sidebar самостоятельно:
class CustomAdminSite(ChassisAdminSiteMixin, AdminSite):
include_users_sidebar = False
sidebar_items = (
# свои разделы, включая auth.user / auth.group при необходимости
)
Sidebar
Стандартный раздел — это привычный список «Пользователи и группы» плюс модели доступа Chassis. Продуктовые роли сюда не попадают:
auth.Userauth.Groupdjango_chassis.UserSessiondjango_chassis.LoginAttemptScheduledjango_chassis.LoginAttemptdjango_chassis.AdminAuditLog
Переопределите get_users_sidebar_section(), если нужны другие подписи или
порядок.
Список сессий по умолчанию показывает активные сессии и предоставляет явные состояния Неактивные и Все. Действие завершения доступно только для активной чужой сессии при наличии соответствующего разрешения администратора.
Middleware
Подключите реестр сессий и журнал Admin после аутентификации:
MIDDLEWARE = [
# ...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django_chassis.middlewares.UserSessionMiddleware',
'django_chassis.middlewares.AdminAuditMiddleware',
]
Сессии и журнал Admin пишут IP клиента через netaddr, браузер и ОС — через
device-detector (User-Agent и Chromium Client Hints).
Оба middleware слушают CHASSIS_ADMIN_PATH_PREFIX (по умолчанию /admin/).
UserSessionMiddleware регистрирует текущую staff-сессию, обновляет last-seen
не чаще раза в минуту и разлогинивает пользователя, если запись отозвана или
истекла.
Таблицы базы данных
Изменено в 1.0.1Модуль пользователей хранит данные в chassis_user_profiles,
chassis_user_sessions, chassis_login_attempt_schedules,
chassis_login_attempts и chassis_admin_audit_logs.
Настройки
| Настройка | По умолчанию | Назначение |
|---|---|---|
CHASSIS_LOGIN_ATTEMPT_LIMITS_ENABLED | True | Применять задержки LoginAttemptSchedule |
CHASSIS_ADMIN_PATH_PREFIX | '/admin/' | Префикс пути для middleware сессий и аудита |
GEOIP_COUNTRY_DATABASE_PATH | не задан | Абсолютный путь к GeoLite2 Country .mmdb |
Пустое расписание попыток входа означает отсутствие задержек. Строки
настраиваются в Admin (у первой позиции delay_seconds=0).
GeoIP
Изменено в 1.0.1geoip2 входит в пакет. Укажите файл MaxMind Country:
GEOIP_COUNTRY_DATABASE_PATH = '/var/lib/geoip/GeoLite2-Country.mmdb'
Если путь или файл отсутствуют, код страны остаётся пустым. Доверенные
proxy-заголовки (CF-IPCountry, X-Country-Code, X-Geo-Country) читаются
только при доступной базе.
Профиль и пароль
AdminProfileAdminPage — это PersonalAdminPage: текущий сотрудник видит
учётную запись, группы, последний вход/IP/страну, текущую сессию и ленту
своих записей журнала Admin. Блоков MFA и продуктовых ролей нет.
SelfPasswordChangeAdminPage использует Django PasswordChangeForm (нужен
старый пароль) и затем завершает сессию.