Download apps/security/models/backup_code.py from Rsnarsna/Saas-Base: direct link, hf CLI and curl.
- Browser
- Download file 966 Bytes
-
https://huggingface.co/spaces/Rsnarsna/Saas-Base/resolve/main/apps/security/models/backup_code.py
- Command line
-
hf download hf://spaces/Rsnarsna/Saas-Base/apps/security/models/backup_code.py
-
curl -L -o backup_code.py https://huggingface.co/spaces/Rsnarsna/Saas-Base/resolve/main/apps/security/models/backup_code.py
966 Bytes
| """ | |
| BackupCode model — recovery codes for MFA. | |
| Maps to AGENT.md DBML: `backup_codes` table (Lines 237-243). | |
| """ | |
| from django.conf import settings | |
| from django.db import models | |
| from core.models import BaseModel | |
| class BackupCode(BaseModel): | |
| """ | |
| One-time backup codes for MFA recovery. | |
| Codes are stored as hashes. Once used, `used_at` is set and the code | |
| cannot be reused. | |
| """ | |
| user = models.ForeignKey( | |
| settings.AUTH_USER_MODEL, | |
| on_delete=models.CASCADE, | |
| related_name="backup_codes", | |
| ) | |
| code_hash = models.CharField(max_length=255) | |
| used_at = models.DateTimeField(null=True, blank=True) | |
| class Meta: | |
| db_table = "backup_codes" | |
| ordering = ["created_at"] | |
| def __str__(self) -> str: | |
| status = "used" if self.used_at else "available" | |
| return f"BackupCode for {self.user_id} [{status}]" | |
| def is_used(self) -> bool: | |
| return self.used_at is not None | |