Spaces:
Running
Running
| from fastapi import APIRouter, Depends, HTTPException | |
| from pydantic import BaseModel | |
| from backend.security.auth import verify_token | |
| from backend.family_device.enrollment import generate_enrollment_qr | |
| from backend.family_device.remote_actions import FamilyDeviceController | |
| router = APIRouter(prefix="/family_device", tags=["family-device-management"]) | |
| controller = FamilyDeviceController() | |
| class EnrollmentRequest(BaseModel): | |
| family_member_name: str | |
| class DeviceActionRequest(BaseModel): | |
| device_id: str | |
| async def generate_qr(request: EnrollmentRequest, token: str = Depends(verify_token)): | |
| try: | |
| qr_base64 = await generate_enrollment_qr(request.family_member_name) | |
| return {"qr_code_base64": qr_base64} | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=str(e)) | |
| async def list_devices(token: str = Depends(verify_token)): | |
| # In a full implementation, this would query a database table of enrolled devices. | |
| # For now, returning an empty list placeholder. | |
| return {"devices": []} | |
| async def lock_device(device_id: str, token: str = Depends(verify_token)): | |
| await controller.remote_lock(device_id) | |
| return {"status": "lock_command_sent"} | |
| async def wipe_sensitive(device_id: str, token: str = Depends(verify_token)): | |
| await controller.remote_wipe_sensitive_data(device_id) | |
| return {"status": "wipe_sensitive_command_sent"} | |
| async def wipe_full(device_id: str, token: str = Depends(verify_token)): | |
| await controller.remote_wipe_full(device_id) | |
| return {"status": "wipe_full_command_sent"} | |
| async def force_password_reset(device_id: str, token: str = Depends(verify_token)): | |
| new_pass = await controller.force_password_reset(device_id) | |
| return {"status": "password_reset_command_sent", "new_password": new_pass} | |
| async def locate_device(device_id: str, token: str = Depends(verify_token)): | |
| result = await controller.locate_device(device_id) | |
| return result | |