feat: verrouillage parental et désactivation par code du serveur

Le parent verrouille le téléphone à distance sur un écran de blocage plein
écran (ParentalLockActivity) que seul un code à usage unique généré par le
serveur permet de lever. La désactivation du contrôle (couper la protection,
dissocier, quitter le mode propriétaire, retirer l'anti-désinstallation) exige
désormais, sur un téléphone associé, ce code du serveur au lieu du mot de passe
local : l'enfant ne peut plus rien désactiver sans l'accord du parent.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R9CBCVP5oDu2sfoYPisNCQ
This commit is contained in:
tuxgyverandClaude Opus 4.8 committed 2026-10-25 21:26:41 +01:00
1 parent b138a15513
commit c66302a2bd
19 files changed
+436 -19

No files matched your search

@@ -48,6 +48,15 @@ class FamilyApi(private val apiBase: String, private val token: String) {
request("POST", "$apiBase/api/device/screen", token, jpeg, "image/jpeg")
}
/**
* Vérifie auprès du serveur le code dicté par le parent (désactivation / déverrouillage).
* Renvoie sans erreur si le code est accepté ; lève [ApiException] (404) sinon.
*/
fun unlock(code: String, action: String) {
request("POST", "$apiBase/api/device/unlock", token,
JSONObject().put("code", code).put("action", action))
}
/** Signale au serveur qu'une commande a été exécutée (audit). */
fun commandAck(id: String, status: String, detail: String) {
request("POST", "$apiBase/api/device/command-ack", token,