Initial commit
Dieser Commit ist enthalten in:
44
domain/value_objects/login_credentials.py
Normale Datei
44
domain/value_objects/login_credentials.py
Normale Datei
@ -0,0 +1,44 @@
|
||||
"""
|
||||
Login Credentials Value Object - Repräsentiert Login-Daten mit Session-Status
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Optional
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class LoginCredentials:
|
||||
"""Unveränderliche Login-Daten für einen Account"""
|
||||
|
||||
username: str
|
||||
password: str
|
||||
platform: str
|
||||
session_status: str # ACTIVE, EXPIRED, LOCKED, REQUIRES_2FA, UNKNOWN
|
||||
last_successful_login: Optional[datetime] = None
|
||||
session_id: Optional[str] = None
|
||||
fingerprint_id: Optional[str] = None
|
||||
|
||||
def is_session_active(self) -> bool:
|
||||
"""Prüft ob die Session aktiv ist"""
|
||||
return self.session_status == "ACTIVE"
|
||||
|
||||
def requires_manual_login(self) -> bool:
|
||||
"""Prüft ob manueller Login erforderlich ist"""
|
||||
return self.session_status in ["EXPIRED", "LOCKED", "REQUIRES_2FA", "UNKNOWN"]
|
||||
|
||||
def has_session_data(self) -> bool:
|
||||
"""Prüft ob Session-Daten vorhanden sind"""
|
||||
return self.session_id is not None and self.fingerprint_id is not None
|
||||
|
||||
def to_dict(self) -> dict:
|
||||
"""Konvertiert zu Dictionary für Serialisierung"""
|
||||
return {
|
||||
'username': self.username,
|
||||
'password': self.password,
|
||||
'platform': self.platform,
|
||||
'session_status': self.session_status,
|
||||
'last_successful_login': self.last_successful_login.isoformat() if self.last_successful_login else None,
|
||||
'session_id': self.session_id,
|
||||
'fingerprint_id': self.fingerprint_id
|
||||
}
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren