Permissions je typem oprávnění, jež slouží k zpřístupnění sítě reality. Jako administrátor můžete uživatelům umožnit vidět celou síť reality nebo pouze její část. Záleží na tom, co je v kompetenci jejich role. Dostupnou část sítě definujete jako množinu aktiv a hran.
Definice omezené množiny aktiv a hran
Příklad pro ilustraci
Nastavování oprávnění typu Permissions představíme na jednoduchém příkladu, kdy povinností role bude sledovat místnosti s počítači. Jedná se konkrétně o typy aktiv s názvy PC a ROOM. V síti reality je vidíte jako bubliny nebo jako uzly pro vazbu typu contains (obsahuje), viz obrázek níže. Zde je vidět i to, že se jedná o 6 místností s 55 počítači.
Znázornění části sítě reality, konkrétně vztahu: MÍSTNOSTI obsahují POČÍTAČE
Oprávnění ke konkrétním aktivům
V našem příkladu má role na starost pouze tyto dva typy aktiv: MÍSTNOST a PC. Aktiva nemůže upravovat. Má právo na ně pouze nahlížet, číst je (Read). Nastavení přístupu k aktivům vypadá pro toto zadání následovně:
Zadání oprávnění k aktivům
Oprávnění ke konkrétním hranám
U hran je to s definicí oprávnění o něco málo složitější, pro její viditelnost musí být splněny následující podmínky:
2 podmínky viditelnosti hran
Aby se hrana ukázala, je nutné definovat v sekci ASSETS oba koncové uzly, které hrana spojuje, v případě více hran pak všechny uzly, kterých se mají hrany dotýkat. V uváděném příkladu se jedná o typy aktiv PC a ROOM. Nastavení těchto aktiv v editoru je blíže popsáno zde.
V samotné sekci EDGES je nutné definovat hranu z obou uzlů, které hrana spojuje, tedy jak z odchozího aktiva, tak z příchozího aktiva. Podrobné informace k definování hran v editoru naleznete zde.
Zadání oprávnění k aktivům i hraně
Zadávání oprávnění v editoru rolí
Oprávnění typu Permissions nastavíte v editoru rolí, a to pod oprávněním typu Capabilities. Editace Permissions zahrnuje dvě sekce: sekci pro nastavení aktiv (ASSETS) a sekci pro nastavení hran (EDGES).
Kategorie PERMISSIONS pro nastavení aktiv a hran
V případě přidělování oprávnění k aktivům (ASSETS) můžete vybírat z těchto možností: Create, Read a Remove. Aktivujete je vždy posunutím posuvníku vpravo.
Createumožňuje uživateli v dané roli vytvářet aktiva začínající zadaným ID prefixem. Definuje se odděleně od ostatních možností.
Read - dovolí uživateli nahlížet na zadaná aktiva,
Remove - umožňuje uživateli mazání zadaných aktiv.
U Read a Remove zadáváte ID aktiva. Zde můžete uvést celou ID masku aktiva, nikoliv jen prefix. Definujete tím přímo, která konkrétní aktiva může uživatel vidět nebo mazat, zadat můžete ale i prefix. ID maska se automaticky přepíše v AQL dotaz s klauzulí FROM.
Poznámka
Při zadávání ID masky nebo ID prefixu začínejte lomítkem. V případě, že chcete zadat přístup ke všem aktivům, nahraďte množinu všech aktiv symbolem *.
Může se stát, že bude jednodušší provést negativní výběr aktiv než zadat ta aktiva, která mají být uživateli přístupná. Tento negativní výběr definujete tak, že připište ke klauzuli FROM negaci NOT. Uživatel tak uvidí všechna aktiva kromě těch, které zahrnuje ID maska. Jakmile připíšete za FROM negaci, smaže se automaticky ID maska v prvním poli.
Smazání masky při zadání výrazu NOT
Níže uvedený příklad dává uživateli práva k celé síti reality se všemi oprávněními typu Permission.
Zpřístupnění celé sítě reality
U nastavení hran se jedná o tyto možnosti práce s nimi: Read, Connect a Remove. Na rozdíl od nastavení aktiv lze všechny tyto tři položky zadávat najednou, viz obrázek výše. Jejich funkce jsou následující:
Read umožnuje uživateli vidět hrany.
Conect dovoluje vytvářet spojení mezi aktivy.
Remove umožní uživateli hrany mazat.
Ukázka zadávání definice aktiva i hrany ilustrovaná na příkladu MÍSTNOSTI obsahují POČÍTAČE
Postup pro definici aktiv
Klikněte na ikonku + pro přidání nové definice aktiva.
Pro viditelnost jakékoliv bubliny je důležité aktivovat možnost Read.
Zadejte ID masku bubliny, která začíná lomítkem. V tomto příkladě chceme roli umožnit vidět všechny místnosti: /assets/rooms/*, proto maska končí symbolem *.
Abyste do budoucna mohli vytvářet nebo vidět vztah mezi aktivy, je potřeba definovat i druhé aktivum. V jiných případech zadávejte všechna ostatní aktiva, jež chcete sledovat. Ikonkou + tedy přidejte definici pro zpřístupnění dalšího aktiva a opět posuňte posuvník vpravo u možnost Read.
Zadejte ID masku druhé bubliny (uzlu), který později propojíte s první bublinou. V našem případě se jedná o masku všech počítačů: /assets/pc/*.
Změny nezapomeňte potvrdit zeleným tlačítkem Update vpravo nahoře.
Definování aktiv jako důležitých uzlů v povoleném úseku sítě reality
Postup pro definici hrany
Oprávnění k hranám zadáváte opět v editoru rolí, v sekci PERMISSIONS, avšak v kategorii EDGES / hrany. Zadávání nové definice hran vám opět umožní ikonka +.
Pro začátek si zkontrolujte, zda máte zadanou definici oprávnění pro aktiva, která bude hrana spojovat. V našem příkladě se jedná o aktiva s maskami: /assets/rooms/* a /assets/pc/*, viz nastavení výše.
Definujte hranu z prvního uzlu (aktiva). V definici zadejte minimálně možnost Read, aby uživatel hranu viděl. Dále zadejte masku aktiva (/assets/rooms/*). U hran je potřeba zadat také typ hrany. V této ilustraci to bude typ contains. Můžete posunout posuvník i na All, neboť taot volba zahrnuje všechny typy, tudíž i typ contains.
Definujte hranu k druhému uzlu, opět nezapomeňte posuvníkem aktivovat možnost Read, zadat masku druhého typu aktiva (/assets/pc/*) a typ hrany (contains nebo All).
Změny nezapomeňte uložit tlačítkem Update v horní části editoru.
Zpřístupnění konkrétní hrany
Nyní byste měli mít nastaven náš ilustrativní příklad části sítě reality. Při jiných případech zpřístupnění části sítě reality postupujete obdobně, vždy musí být definována všechna viditelná aktiva a hrany musí být definovány z obou uzlů (typů aktiv), které propojují.
Upozornění
Pro zpřístupnění hrany je potřeba definovat hranu z obou uzlů. Obě definice musí být pro vztah, který hrana vyjadřuje relevantní. Pokud je jedna z definic nerelevantní, hrana nebude správně definovaná, tudíž nebude pro danou viditelná.
Ukážeme si relevantní a nerelevantní definice pro ilustrativní příklad MÍSTNOSTI obsahují POČÍTAČE s vysvětlením.
Relevantní definice hrany
ID maska: /assets/room/*, typ hrany: contains - relevantní aktivum i typ hrany,
ID maska: /assets/room/*, typ hrany:All - relevantní aktivum i typ hrany - All zahrnuje všechny typy vazeb i contains,
ID maska: /assets/pc/*, typ hrany:contains - relevantní aktivum i typ hrany,
ID maska: /assets/pc/*, typ hrany:All - relevantní aktivum i typ hrany - All zahrnuje všechny typy vazeb i contains.
Nerelevantní definice hrany
ID maska: /assets/service/*, typ hrany: contains - relevantní typ hrany, nerelevantní aktivum - není uzlem, který hrana spojuje,
ID maska: /assets/service/*, typ hrany: All - relevantní typ hrany, nerelevantní aktivum - není uzlem, který hrana spojuje,
ID maska: /assets/room/*, typ hrany: manages - relevantní aktivum, nerelevantní typ hrany.
Pokud tedy budete definovat hranu například releventní definicí 1.1. a nerelevantní definicí 2.1., nebude hrana viditelná z důvodu špatně zadaného aktiva.
Pokud budete definovat hranu jiným příkladem, třeba relevantní definicí 1.4. a nerelevantní definicí 2.3.. nebude hrana viditelná z důvodu špatně zadaného typu hrany.
Do nesprávné kombinace definic lze zařadit i kombinaci 1.1. a 1.2. V tomto případě by byly sice obě definice zadány správně, ale jejich kombinace by definovala hranu pouze z jednoho uzlu: /assets/room/*. Hrana by se nezobrazila, protože by nebyl v kombinaci definic zahrnut druhý uzel (/assets/pc/*), s kterým by spojila ten první.
Oprávnění editované ve formátu JSON
Sekce editoru ADVANCED - CODE umožňuje přesnější nastavení rolí na nižší úrovni. Zde můžete díky editaci ve formátu JSON definovat oprávnění mnohem operativněji a rozsáhleji než dovoluje editor. Můžete zasáhnout do možností, které UI nenabízí. Je však nutné ovládat práci s formátem JSON a zadat definici správně.