|
|
# Jak práva (filtry a matchery) fungují
|
|
|
Jsou zde 2 základní prvky:
|
|
|
Jsou zde 2 základní prvky - matcher a filter
|
|
|
|
|
|
## Matcher
|
|
|
Tabulka `MATCHER`
|
|
|
|
|
|
Matcher zachycuje jakoukoliv akci, např. přístup k souboru nebo požadavek na rezervaci. Jeho typ definuje na co se chytá.
|
|
|
|
|
|
- "LoggedUser" se chytá, je-li daný uživatel přihlášen
|
|
|
- "LoggedUserRole" se chytá, má-li daný uživatel nějakou roli
|
|
|
- "IpAddress" se chytá na danou IP adresu uživatele
|
|
|
- "FileCategory" se chytá na danou kategorii souboru
|
|
|
- "UserReaderCategory" se chytá, má-li daný uživatel danou kategorii čtenáře (id kategorie ve sloupci `VAL`)
|
|
|
- "IpAddress" se chytá na danou IP adresu uživatele (ip adresa ve sloupci `VAL`)
|
|
|
- "FileCategory" se chytá na danou kategorii souboru (id kategorie ve sloupci `VAL`)
|
|
|
- "Always" chytá vždy
|
|
|
|
|
|
všechy typy jsou definovány ve třídě cz.kpsys.portaro.app.CatalogConstants.MatcherTypes
|
|
|
všechny typy jsou definovány ve třídě `cz.kpsys.portaro.app.CatalogConstants.MatcherTypes`, matchery lze negovat booleanem ve sloupci `NEGATED`
|
|
|
|
|
|
## Filter
|
|
|
Tabulka `FILTER_ROW` s vazbou na `MATCHER` přes `FILTER_MATCHER`
|
|
|
|
|
|
Po zachycení akce matcherem pak musíme definovat, co se bude dít dále (povolit/zablokovat přístup). To definují filtry.
|
|
|
|
|
|
Každý filtr obsahuje subjekt (sloupeček `FK_FILTER_SUBJ`), což je číselník akcí:
|
|
|
- 1: Zobrazení souboru
|
|
|
- 2: Tisk souboru
|
|
|
- 3: Zobrazení záznamu
|
|
|
|
|
|
Každý filtr definuje povolení nebo zakázání (sloupeček `ALLOW`):
|
|
|
- 2: Povolení
|
|
|
- 3: Zakázání
|
|
|
|
|
|
Každý filtr může být (přes vazební tabulku) navázán na více matcherů, pak se mezi matchery používá logický AND. Filtr se tedy uplatní pouze pokud všechny jeho matchery akci zachytí.
|
|
|
|
|
|
# Nastavení práv přístupu k souborům
|
|
|
Takže chceme-li omezit přístup k souborům s kategorií "F" jen pro přihlášené uživatele, vytvoříme zakazující filtr, který se chytá na soubory "F" a nepřihlášené uživatele pomocí daných 2 matcherů.
|
|
|
|
|
|
1. vytvoříme matcher (`MATCHER`) FileCategory s hodnotou "F"
|
|
|
2. vytvoříme negovaný matcher (`MATCHER`) LoggedUser
|
|
|
3. vytvoříme filter (`FILTER_ROW`) se subjektem 1 (Zobrazení souboru) s hodnotou `ALLOW` 3 (Zakázání akce)
|
|
|
4. filter přes `FILTER_MATCHER` navážeme na oba matchery |