""" 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 }