jarvis-cloud / backend /routers /family_device_routes.py
Jarvis2345's picture
Squash history — remove all prior commits (secret hygiene, S4)
a31f556
Raw
History Blame Contribute Delete
2.26 kB
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
@router.post("/enroll/generate_qr")
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))
@router.get("/devices/list")
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": []}
@router.post("/devices/{device_id}/lock")
async def lock_device(device_id: str, token: str = Depends(verify_token)):
await controller.remote_lock(device_id)
return {"status": "lock_command_sent"}
@router.post("/devices/{device_id}/wipe_sensitive")
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"}
@router.post("/devices/{device_id}/wipe_full")
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"}
@router.post("/devices/{device_id}/force_password_reset")
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}
@router.post("/devices/{device_id}/locate")
async def locate_device(device_id: str, token: str = Depends(verify_token)):
result = await controller.locate_device(device_id)
return result