Skip to main content

Povolenia dokumentu

Používateľ, pridávajúci dokumenty do digitálnej knižnice by mal mať možnosť explicitne nastavovať pre každý dokument povolenia, pre jednotlivé funkcionality. Pr. administrátor chce zakázať tlačenie dokumentu, preto pri jeho nahrávaní do systému zaškrtne vstupné pole, ktoré zamedzí používateľovi, resp. aspoň neponúkne možnosť tento dokument vytlačiť. Táto špecifikácia obsahuje základný set povolení a odporúčania akým spôsobom je možné riešiť tento problém na back-ende ale aj front-ende knižnice.

Databázová štruktúra

Keďže každý dokument bude obsahovať viacero možností na povolenia alebo zakázanie funkcionalít, pridávať stĺpce do tabuľky acquisitions alebo entries nie je najvhodnejšie riešenie, pretože štruktúra by sa len zväčšovala a strácala na prehľadnosti.

Najvhodnejším riešením sa pri väčšom počte povolení zdá byť JSON štruktúra, ktorou zbytočne nepridávame ďalšie stĺpce ale použijeme len jeden stĺpec typu jsonb, ktorý obsahuje objekt s key: value pármi, kde key je názov povolenia a value hodnota, ktorá bližšie špecifikuje spravanie. Použitím tohto typu stĺpca dosiahneme, že nad stĺpcom vieme robiť rôzne operácie, napr. nájsť dokumenty, ktoré majú zakázané zdieľanie.

Štruktúra povolení

  • text_layer - povoľuje pri zobrazovaní PDF renderovanie textovej vrstvy

  • annotation_layer - umožňuje pri zobrazovaní PDF renderovanie anotačnej vrstvy, ak nejaká v dokumente existuje

  • print - funkcionalita, ktorá na front-ende povoľuje zobrazenie tlačidla pre tlač dokumentu

  • share - povoľuje na front-ende zdieľanie alebo export dokumentu

  • citations - povoľuje čítateľovi generovať citácie

  • render_type - nastavením tohto povolenia na 1 spôsobí, že dokument sa na front-ende vyrenderuje po stranách (používateľ uvidí len jednu stranu). Ak je nastavené na 2 - dokument sa vyrenderuje celý a používateľ môže scrollovať celý dokument naraz. Číslovanie je zameniteľné za iný typ, napr. string. V budćnosti je možné pridávať ďalšie spôsoby renderovania.

Príklad štruktúry

{
text_layer: true,
annotation_layer: true,
print: false,
share: false,
citations: true,
render_type: 1
}

Autor: Rastislav Balcerčík