Saas-Base / apps /security /models /trusted_device.py
rsnarsna
first commit
667aacd
Raw
History Blame Contribute Delete
1.35 kB
"""
TrustedDevice model — remember device functionality.
Maps to AGENT.md DBML: `trusted_devices` table (Lines 245-252).
"""
from django.conf import settings
from django.db import models
from core.models import BaseModel
class TrustedDevice(BaseModel):
"""
Tracks devices that a user has approved as trusted.
Trusted devices skip MFA challenges. `device_id` is a hashed identifier
stored as a cookie on the client.
"""
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="trusted_devices",
)
device_id = models.CharField(
max_length=255,
help_text="Hashed device identifier (stored as cookie on client).",
)
fingerprint = models.CharField(
max_length=255,
blank=True,
default="",
help_text="Device fingerprint for additional verification.",
)
last_used_at = models.DateTimeField(null=True, blank=True)
approved = models.BooleanField(default=True)
class Meta:
db_table = "trusted_devices"
constraints = [
models.UniqueConstraint(
fields=["user", "device_id"],
name="unique_device_per_user",
),
]
def __str__(self) -> str:
return f"Device {self.device_id[:8]}... for {self.user_id}"