Repository navigation
Panel: dzieci i urządzenia domu - #86
Merged
Merged
Conversation
Wlasciciel domu i zarzadca dodaja, zmieniaja i usuwaja dzieci i urzadzenia swojego domu w Ustawieniach, zamiast administratora z `dom-importuj --plik`. Administrator instalacji ma to samo w kazdym domu (wpis admin.* w audycie). - GET /api/domy/<id>/urzadzenia, POST .../urzadzenia/zapisz (uprawnienie dom.urzadzenia; podglad 403, obcy dom 404, dom yaml 409). - Wiersze dopasowane po id: zmiana nazwy nie gubi UDID-u. UDID, adres, MAC, MDM i lista aplikacji ustawia administrator; rola domu widzi tylko flagi, a zapis przepisuje te pola z bazy bez zmian. Telewizor poza ekranem. - Walidacja walidatorami config.yaml (HomeConfig z integracjami i sekretami domu), zapis -> odczyt -> porownanie w jednej transakcji, wersja domu obowiazkowa (409), dzialajacy dom nie traci ostatniego urzadzenia. - Front: ekran z hostem Prywatnego DNS dla Androida, potwierdzenie haslem albo 2FA, stan przeladowania domu po zapisie. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- nextdns_profile ustawia tylko administrator instalacji (obcy profil czytalby kluczem API domu cudze logi); rola domu widzi go do odczytu, zapis przepisuje go z bazy, nowe urzadzenie dziedziczy profil dziecka. - Zmiana imienia dziecka (po id) przemapowuje w tej samej transakcji zakresy powiadomien czlonkow domu (z lustrem Domu 1), oczekujace zadania czasu gry i kody komend z WhatsAppa; usuniecie dziecka jedynego w czyims zakresie = 400, w pozostalych imie zdjete. - Blad startu i przeladowania dla roli domu bez UDID-ow i adresow (takze TV i integracji); log odmowy bez wartosci; 403 za pola administratora z wpisem dom.urzadzenia.odmowa. - DNS adresu iPada rozwiazywany przed BEGIN IMMEDIATE. - Front: nazwa do Prywatnego DNS bez "-" na brzegu slowa i bez "--". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Co
Ekran Ustawienia → Dzieci i urządzenia (uprawnienie
dom.urzadzenia, dotąd nieużywane): właściciel domu i zarządca sami dodają, zmieniają i usuwają dzieci i urządzenia swojego domu. Administrator instalacji ma to samo w każdym domu.GET /api/domy/<id>/urzadzenia,POST /api/domy/<id>/urzadzenia/zapisz(src/kidwatch/panel_urzadzenia.py, trasy wpanel.py, prefiks domu wweb/src/utils/domy.js).ipad,iphone,phone-android; beztv),source_ids(„Nazwa w NextDNS”),nextdns_profile.udid,host,unifi_mac,unifi_ip,mdm,ustawienia(known_apps): ustawia administrator instalacji. Rola domu widzi tylko flagi („ustawione przez administratora”), nie może ich wysłać (403), a zapis przepisuje je z bazy bez zmian. Wiersze dopasowane pourzadzenia.id, więc zmiana nazwy nie gubi UDID-u.rodzaj='tv') nie jest pokazywany i nie jest zmieniany. Ustawienia domu, strefa, integracje, sekrety idozwolone_sieciteż zostają bez zmian, co sprawdza się po zapisie w tej samej transakcji.web/src/components/DzieciUrzadzenia.jsx(pod Zaproszeniami, nad Integracjami),web/src/utils/urzadzenia.js. Dla Androida ekran wylicza host Prywatnego DNS (Nazwa--z--myslnikami-<ID profilu>.dns.nextdns.io) z przyciskiem „Kopiuj”. Zapis wymaga hasła albo 2FA. Po zapisie ekran pokazuje stan domu (reloadNotice, także poleczeka).Dlaczego
Do tej pory zaproszony właściciel domu nie mógł sam dopisać dziecka ani telefonu. Administrator robił to plikiem i
dom-importuj N --plikprzezkubectl cp(runbook nowy-dom.md, pkt 4).Rozstrzygnięcia
ctx.admin). W odpowiedzi dla roli domu są tylko flagi, a audyt zapisuje liczby i nazwy pól. Komunikaty błędów dla roli domu przechodzą przez filtr, który wycina UDID-y i adresy domu.home_z_danychz bieżącymi integracjami i sekretami domu, czyli tymi samymi walidatorami coconfig.yaml. Dom bez źródła DNS dostaje atrapę źródła tylko na czas walidacji, jak wimportuj_strukture. Kolejność kroków: zapis, odczyt, porównanie (wiersze,porownajHomeConfig, integracje, TV, wierszdomy). Wszystko w jednej transakcji; błąd daje 400 i baza zostaje bez zmian.wersjajest obowiązkowe, inna wartość daje 409 „odśwież”. Zapis podbijadomy.wersja, a nadzorca (Domy: start kolejnych domów obok Domu 1 #84) przeładowuje dom.dom.urzadzenia.zapis(dodane / zmienione / usunięte, nazwy pól) idom.urzadzenia.odmowa. Administrator bez członkostwa dostaje dodatkowoadmin.urzadzenia.zapiszprzez_wymaga.host) wpisany przez administratora przechodzi przez strażnika sieci domu (port lockdown), z tą samą podpowiedziądom-siecico w integracjach.Testy
tests/test_urzadzenia_panel.py(23 testy):admin.*;_profiles_need_nextdns) daje 400 bez zmian w bazie;host;dom1ztest_domy_e2: UDID, host,known_apps, UniFi, TV, ntfy, HA, MDM, trybbaza): właściciel zmienia nazwę iPada i jegosource_ids.porownaj(HomeConfig przed, po)daje dokładniedevices[0].display_nameidevices[0].source_ids. UDID, host, MAC,known_apps, TV, integracje, sekrety i ustawienia domu zostają bez zmian, a w odpowiedzi i w audycie nie ma UDID-u ani adresów.python -B,-p no:cacheprovider): każde z 9 zabezpieczeń odwrócono osobno i za każdym razem odpowiedni test padał. Sprawdzone zabezpieczenia: pola administratora z bazy, wartości techniczne tylko dla administratora, wersja, sprawdzenie startu, ochrona przed usunięciem, strażnik, ukrycie TV, 403 dla pól technicznych, walidacja modelem.web/src/utils/urzadzenia.test.js: host Prywatnego DNS, walidacja formularza, ciało zapisu.uv run pytest -q,uv run ruff check,npm --prefix web test,npm --prefix web run build: wszystko zielone.Wdrożenie i wycofanie
feat/dom-importuj-struktura(dom-importuj: struktura kolejnego domu z pliku #85), trzeba scalić po nim. Bez migracji schematu: korzysta z istniejących tabeldzieciiurzadzenia.baza; w trybieyamlekran zwraca 409.home_z_danych, adom-importuj --plikdalej działa i nadpisuje strukturę.🤖 Generated with Claude Code