Skip to content

Модуль users

Путь: app/users/
Django app: app.users
AUTH_USER_MODEL: users.user

Назначение

Модуль управляет учётными записями пользователей, аутентификацией и паспортными данными сотрудников.

Модели

User

Кастомная модель пользователя, наследует AbstractBaseUser и PermissionsMixin.

python
class User(AbstractBaseUser, PermissionsMixin):
    email = EmailField(unique=True)
    first_name = CharField()
    last_name = CharField()
    middle_name = CharField()      # отчество
    phone = CharField()
    is_active = BooleanField()
    is_staff = BooleanField()
    date_joined = DateTimeField()
    # Связи:
    company_structure = FK(Department)   # отдел
    position = FK(Position)              # должность
    avatar = ImageField()

USERNAME_FIELD: email
Аутентификация выполняется по email (не по username).

Passport

Паспортные данные сотрудника (хранятся отдельно для безопасности):

python
class Passport(Model):
    user = OneToOneField(User)
    series = CharField()
    number = CharField()
    issued_by = TextField()
    issue_date = DateField()
    registration_address = TextField()

API

Аутентификация

EndpointМетодОписание
/api/v2/api-token-auth/POSTПолучить токен по email + password
/api/v2/current-user/GETДанные текущего пользователя

Пример получения токена

bash
curl -X POST /api/v2/api-token-auth/ \
  -d '{"username": "user@example.com", "password": "secret"}'
# Response: {"token": "abc123..."}

Использование токена

http
Authorization: Token abc123...

Права доступа

  • Глобальная политика: IsAuthenticated (все endpoints требуют авторизации)
  • Права на модели: Django Permission + кастомный PermissionService
  • Frontend проверка: директива HasPermissionDirective

Конфигурация

python
# settings.py
AUTH_USER_MODEL = 'users.user'
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
}

Связи с другими модулями

  • app.company_structure — Department, Position
  • system.auditlog — история действий пользователя
  • app.tasks — задачи, назначенные пользователю
  • app.manufacture — смены сотрудника