Oprávnění
Oprávnění využívá modely Permissions a PermissionsSkip a umožňuje řídit přístup k pohledům a záznamům.
Model Permissions
V modelu Permissions se nastavují konkrétní oprávnění která se mají pro adresu a roli zkontrolovat:
address_in_app- adresa v aplikaci v urls, napříkladprojekt/zrusit/<str:ident_cely>.role- uživatelská role, pro kterou je oprávnění nastaveno.action- uživatelská akce, pro kterou je oprávnění nastaveno (nepovinné).base- nastavení základního režimu přístupu (ano/ne).status- nastavení přístupu podle stavu záznamu. Vybírá se operátor porovnání (<, =, >).ownership- nastavení přístupu podle vlastnictví záznamu.accessibility- nastavení přístupu podle přístupnosti záznamu.
Model PermissionsSkip
V modelu PermissionsSkip se nastavují výjimky z pravidel nastavených v modelu Permissions. Pokud je pro danou identifikátor záznamu a roli nalezena shoda v tomto modelu, v modelu Permissions se aplikují pravidla tak, jako by šlo o vlastníka záznamu.
Import oprávnění
Import oprávnění je řešen třídou PermissionAdmin v souboru webclient/core/admin.py. Při importu se načítají data z tabulky webclient/core/resources/uzivatelska_prava.csv a vytvářejí se záznamy v modelu Permissions.
Tabulka oprávnění
Konkrétní oprávnění jsou definována v tabulce webclient/core/resources/uzivatelska_prava.csv. Tabulka obsahuje následující sloupce:
app = název aplikace
URL = adresa v aplikaci
action = název akce (používá se pro bližší specifikaci akce či součásti view, pro které se oprávnění uplatňuje)
Základní_x (A-E) = nastavení základního režimu přístupu pro roli x (A-E)
Stav_x (B-E) = nastavení přístupu podle stavu záznamu pro roli x (B-E)
Vlastnictví_x (B-E) = nastavení přístupu podle vlastnictví záznamu pro roli x (B-E)
Přístupnost_x (B-E) = nastavení přístupu podle přístupnosti pro roli x (B-E)
spec = speciální podmínky, obvykle přímo implementované v kódu
Skupiny (role) uživatelů:
A = anonymní uživatel
B = registrovaný uživatel (badatel)
C = archeolog
D = archivář
E = administrátor
Pole pro stavnovení přístupnosti:
* AZ = archeologicky_zaznam.pristupnost
* D = dokument.pristupnost
* P = projekt.pristupnost_pom
* SN = samostatny_nalez.pristupnost
* PI = pian.pristupnost_pom
Hodnoty v jednotlivých sloupcích oprávnění:
X= nepřístupné*= není omezeno daným kritériem&= logické AND|= logické ORx (my)/x (ours)= podmínka pro ignorování přístupnosti pro vlastní záznamy / záznamy stejné organizace¨ daného typu (x - viz přehled výše)
Způsob určování vlastnictví
Vlastník:
archeologického záznamu, dokumentu, exteního zdroje či samostatného nálezu (a jejich potomků) = uživatel, který zapsal záznam
projektu = nepoužívá se
PIAN = uživatel, který PIAN vytvořil a uživatel, který zapsal archeologický záznam spojený s PIAN
spolupráce = dotčený spolupracovník
uživatel = dotčený uživatel
Stejná organizace:
u archeologického záznamu, dokumentu či exteního zdroje (a jejich potomků) = uživatel (archeolog) s totožnou organizací, jako je organizace uživatele, který zapsal záznam
u projektu = uživatel (archeolog) s totožnou organizací, jako je v poli projekt.organizace
u PIAN = uživatel (archeolog) s totožnou organizací, jako je organizace uživatele, který PIAN vytvořil nebo zapsal archeologický záznam spojený s PIAN nebo patří k organizaci souvisejícího projektu
u samostatného nálezu = uživatel (archeolog) s totožnou organizací, jako je organizace u projektu, ke kterému je samostatný nález připojený
u spolupráce = uživatel (archeolog) s totožnou organizací, jako je organizace dotčeného vedoucího
u uživatele = nepoužívá se
Uživatelské akce řízené pomocí oprávnění
Používá se pro bližší specifikaci akce či součásti view, pro které se oprávnění uplatňuje. Seznam všech akcí definovaných ve třídě Permissions.actionChoices:
adb_smazatvb_smazatadb_zapsatarchz_adb_zapsatarchz_komponenta_zapsatarchz_pian_zapsatarchz_vratitarchz_odeslatarchz_archivovatarchz_pian_editarchz_vedouci_smazatarchz_editarchz_smazatarchz_zmenit_projarchz_zmenit_samarchz_odpojit_dokumentarchz_pripojit_dokarchz_pripojit_projarchz_pripojit_dok_projarchz_dj_zapsatarchz_pripojit_do_projdj_smazatdj_zmenit_katastrdok_pripojit_archzdok_pripojit_projdok_cast_odpojitdok_cast_editdok_cast_smazatdok_cast_zapsatdok_komponenta_zapsatdok_editdok_smazatdok_archivovatdok_odeslatdok_vratitdok_tvary_editdok_tvary_smazatdok_zapsat_do_archzdok_zapsat_do_projektmodel_editneident_akce_editneident_akce_smazatez_editez_odeslatez_potvrditez_vratitez_smazateo_edit_ezeo_edit_akceeo_odpojit_ezeo_odpojit_akceeo_pripojit_akceeo_pripojit_ezlokalita_komponenta_zapsatlokalita_pian_editlokalita_pian_zapsatlokalita_dj_zapsatlokalita_editkomponenta_detail_akcekomponenta_detail_dokkomponenta_smazat_akcekomponenta_smazat_dokkomponenta_zapsat_akcekomponenta_zapsat_doknalez_smazat_dokumentnalez_smazat_akcenalez_edit_dokumentnalez_edit_akcenotifikace_projektypas_editpas_archivovatpas_odeslatpas_potvrditpas_vratitpas_smazatpas_ulozeni_editpas_zapsat_do_projektumapa_pasmapa_pianpian_potvrditpian_odpojitpian_zapsatprojekt_archivovatprojekt_dok_odpojitprojekt_dok_pripojitprojekt_editprojekt_generovat_exp_listprojekt_generovat_oznameniprojekt_oznamovatel_zapsatprojekt_oznamovatel_editprojekt_zadost_udaje_oznamovatelprojekt_smazatprojekt_navrh_ke_zruseniprojekt_prihlasitprojekt_schvalitprojekt_ukoncit_v_terenuprojekt_upravit_datum_oznameniprojekt_zadost_odhlaseni_projektuprojekt_zadost_zruseni_projektuprojekt_uzavritprojekt_vratit_navrh_zruseniprojekt_vratitprojekt_zahajit_v_terenuprojekt_zrusitprojekt_autocomplete_archzprojekt_autocomplete_dokumentprojekt_pas_zobrazitsoubor_nahrat_dokumentsoubor_nahrat_model3dsoubor_nahrat_passoubor_nahrat_projektsoubor_smazat_projektsoubor_smazat_dokumentsoubor_smazat_model3dsoubor_nahradit_model3dsoubor_smazat_passoubor_stahnout_projektsoubor_stahnout_dokumentsoubor_stahnout_model3dsoubor_stahnout_passoubor_nahradit_dokumentsoubor_nahradit_passoubor_nahled_projektsoubor_nahled_dokumentsoubor_nahled_model3dsoubor_nahled_passpoluprace_zadostspoluprace_aktivovatspoluprace_deaktivovatspoluprace_smazatpian_import_newpian_import_changeakce_dj_zakladniakce_pripojit_pian_mapaakce_pripojit_pian_idlokalita_dj_zakladnilokalita_pripojit_pian_mapalokalita_pripojit_pian_iddokumenty_tabulka_projektdokumenty_tabulka_arch_zvypis_dokumentvypis_projektvypis_akcevypis_lokalitavypis_pasvypis_model3dvypis_ezhistorie_fedora
Celkem: 148 akcí