Skip to content

fix(security): spójna kontrola widoczności ukrytych rekordów i autorów - #899

Merged
mpasternak merged 1 commit into
devfrom
sec/widocznosc-ukrytych
Oct 24, 2026
Merged

mpasternak merged 1 commit into
devfrom
sec/widocznosc-ukrytych

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co zmieniono

Ujednolicono regułę widoczności z istniejącą stroną rekordu (PracaViewMixin): rekordy o statusach korekty ukrytych w kanale „podgląd” oraz autorzy z pokazuj=False są niedostępne poza użytkownikami z uprawnieniami redaktorskimi (moze_wprowadzac_dane).

  • Nowy helper src/bpp/util/ukryte_statusy.py (wyklucz_ukryte_statusy, ukryte_statusy_dla).
  • bibtex_view — 403 dla rekordu o ukrytym statusie.
  • AutorView — autor z pokazuj=False → 404 (po pk i po slugu) dla anonima i zwykłego konta.
  • LataView, RokView (również nawigacja poprzedni/następny rok) i strona główna (ostatnio zmienione, streszczenia, licznik rekordów) — bez ukrytych statusów. Strona główna jest cache'owana wspólnie, więc tam wykluczenie jest bezwarunkowe.
  • Autocomplete'y: wydawnictwo-nadrzedne, public-wydawnictwo-nadrzedne (bpp i zgłoszenia), podrzedna-publikacja-habilitacyjna — filtr ukrytych statusów (redaktor widzi wszystko). W tym ostatnim poprawiono też podzapytanie (było po pk tabeli autorstw zamiast po rekord), przez co autocomplete nie zwracał poprawnych rekordów.
  • dyscyplina-naukowa-przypisanie — redaktorzy bez zmian; pozostali tylko wtedy, gdy uczelnia udostępnia im formularz zgłaszania publikacji (ta sama reguła co kreator zgłoszeń), i tylko dla autorów z pokazuj=True.
  • Multiseek: nadpisane trasy load_form (prywatny zapisany formularz tylko dla właściciela lub superusera) i save_form (nie można nadpisać formularza innego użytkownika — czytelny komunikat zamiast pytania o nadpisanie). Trasy umieszczone przed include("multiseek.urls").

Uwagi

  • AutorView bramkuje na uprawnieniach redaktorskich (zgodnie ze stroną rekordu). API AutorViewSet nadal pokazuje ukrytych autorów każdemu zalogowanemu — bez zmian w tym PR.
  • Zmiana ustawień ukrytych statusów nie unieważnia cache strony głównej / cache_publiczny — obowiązuje po upływie TTL (jak dotąd).

Testy

  • Nowy src/bpp/tests/test_views/test_widocznosc_ukrytych.py (42 testy: anonim / zwykły zalogowany / redaktor) — przed poprawką 25 failed, po poprawce 42 passed.
  • src/bpp/tests/test_views/ src/bpp/tests/test_autocomplete/ src/bpp/tests/test_multiseek src/bpp/tests/test_multisite src/zglos_publikacje — 936 passed, 1 skipped.
  • src/bpp/tests/test_multiseek_*.py src/importer_publikacji src/bpp/tests/test_profil — 1149 passed, 1 skipped.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UJ23Rb1c5UtxHTfAke9ENQ

- wspólny helper bpp.util.ukryte_statusy (wyklucz_ukryte_statusy,
  ukryte_statusy_dla) — statusy ukryte w kanale "podglad" niewidoczne
  poza użytkownikami z uprawnieniami redaktorskimi,
- bibtex_view: 403 dla rekordu o ukrytym statusie (jak strona rekordu),
- AutorView: autor z pokazuj=False → 404 poza redaktorami,
- LataView/RokView (wraz z nawigacją prev/next) i strona główna
  (ostatnio zmienione, streszczenia, licznik) bez ukrytych statusów,
- autocomplete'y wydawnictw nadrzędnych (bpp, public, zgłoszenia)
  i podrzędnej publikacji habilitacyjnej filtrują ukryte statusy;
  ta druga wybiera teraz poprawnie rekordy autora (podzapytanie po
  rekord_id zamiast pk tabeli autorstw),
- dyscyplina-naukowa-przypisanie: poza redaktorami tylko gdy uczelnia
  udostępnia formularz zgłaszania publikacji i tylko dla widocznych
  autorów,
- multiseek: nadpisane load_form (prywatny formularz tylko dla
  właściciela/superusera) i save_form (bez nadpisywania formularza
  innego użytkownika).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UJ23Rb1c5UtxHTfAke9ENQ
@gitguardian

gitguardian Bot commented Oct 24, 2026

Copy link
Copy Markdown

⚠️ GitGuardian has uncovered 1 secret following the scan of your pull request.

Please consider investigating the findings and remediating the incidents. Failure to do so may lead to compromising the associated services or software components.

🔎 Detected hardcoded secret in your pull request
GitGuardian id GitGuardian status Secret Commit Filename
34778942 Triggered Generic Password 56e53e1 src/bpp/tests/test_views/test_widocznosc_ukrytych.py View secret
🛠 Guidelines to remediate hardcoded secrets
  1. Understand the implications of revoking this secret by investigating where it is used in your code.
  2. Replace and store your secret safely. Learn here the best practices.
  3. Revoke and rotate this secret.
  4. If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.

To avoid such incidents in the future consider


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@mpasternak
mpasternak merged commit 73fc521 into dev Oct 24, 2026
21 of 22 checks passed
@mpasternak
mpasternak deleted the sec/widocznosc-ukrytych branch October 24, 2026 11:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant