fix(nextcloud-files): CR-02 Nextcloud-Adresse aendern nur noch Administratoren
- PUT settings traegt @Roles(ADMIN, SUPER_ADMIN) statt @ModuleManage (Muster wie TendersController.getSourceConfig); alle Benutzer schicken ihr Passwort an diese Adresse - POST settings/test: Verwalter ohne Administratorrolle pruefen nur die gespeicherte Adresse, jede andere Adresse ist 403 - Einstellungen fuer Verwalter nur lesbar mit kurzem Hinweis, ohne Speichern-Knopf; Hinweis "nicht eingerichtet" verweist Nicht-Administratoren an einen Administrator - Metadaten-Spec (module-manage-handlers), Controller-Spec, Seitentest, e2e-settings (Verwalter: 403 auf PUT und fremde Pruefung), Anleitungen und Changelog angepasst Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+25
@@ -66,4 +66,29 @@ e2e_second_user e2euser "$UJAR"
|
||||
code=$(e2e_status "$UJAR" GET "$S/settings")
|
||||
case "$code" in 403|404) ;; *) e2e_fail "Benutzer ohne Freigabe: GET settings erwartet 403/404, war $code" ;; esac
|
||||
|
||||
# CR-02: die Adresse legt nur ein Administrator fest. Ein Benutzer mit der Freigabestufe Verwalten
|
||||
# (ohne Administratorrolle) liest die Einstellungen und prueft die GESPEICHERTE Adresse, darf
|
||||
# aber nichts aendern und keine andere Adresse pruefen.
|
||||
MJAR="$E2E_TMP/manager.jar"
|
||||
e2e_second_user e2emanager "$MJAR"
|
||||
e2e_status "$JAR" GET "$API/users" "" "$E2E_TMP/users.out" >/dev/null
|
||||
MID=$(python3 -I -c 'import json,sys
|
||||
print([u["id"] for u in json.load(open(sys.argv[1])) if u["username"]=="e2emanager"][0])' "$E2E_TMP/users.out")
|
||||
e2e_status "$JAR" GET "$API/modules/catalog" "" "$E2E_TMP/catalog.out" >/dev/null
|
||||
MODID=$(python3 -I -c 'import json,sys
|
||||
print([m["id"] for m in json.load(open(sys.argv[1])) if m["slug"]=="nextcloud-files"][0])' "$E2E_TMP/catalog.out")
|
||||
code=$(e2e_status "$JAR" POST "$API/module-grants" "{\"moduleId\":\"$MODID\",\"userId\":\"$MID\",\"level\":\"MANAGE\"}")
|
||||
case "$code" in 200|201|409) ;; *) e2e_fail "Freigabe Verwalten fuer e2emanager -> $code" ;; esac
|
||||
code=$(e2e_status "$MJAR" GET "$S/settings")
|
||||
e2e_expect 200 "$code" "Verwalter: GET settings"
|
||||
code=$(e2e_status "$MJAR" PUT "$S/settings" '{"baseUrl":"http://172.17.0.1:18081","confirmReconnect":true}')
|
||||
e2e_expect 403 "$code" "Verwalter: PUT settings (nur Administratoren)"
|
||||
code=$(e2e_status "$MJAR" POST "$S/settings/test" '{"baseUrl":"http://172.17.0.1:1"}')
|
||||
e2e_expect 403 "$code" "Verwalter: andere Adresse pruefen"
|
||||
code=$(e2e_status "$MJAR" POST "$S/settings/test" "{\"baseUrl\":\"$NC_BASE\"}")
|
||||
e2e_expect 200 "$code" "Verwalter: gespeicherte Adresse pruefen"
|
||||
e2e_contains "$E2E_TMP/body.out" '"ok":true' "Verwalter: Pruefung ok"
|
||||
code=$(e2e_status "$JAR" GET "$S/settings")
|
||||
e2e_contains "$E2E_TMP/body.out" '"baseUrl":"http://172.17.0.1:18080"' "Adresse unveraendert"
|
||||
|
||||
echo "e2e settings ok"
|
||||
|
||||
Reference in New Issue
Block a user