it-swarm-eu.dev

Modul Pohledy: Jak omezit přístup uživatele

Modul Pohledy používám k vytvoření pohledu, ke kterému by měli mít přístup pouze konkrétní uživatelé. Vím, že Zobrazení zahrnuje řízení přístupu podle role nebo oprávnění, ale potřebuji něco jemnějšího: V podstatě chci říci, že pouze uživatel „x“ a uživatel „y“ mohou přistupovat ke konkrétnímu pohledu (nebo také někdo s role správce webu). To by tedy fungovalo velmi podobně jako ACL modul pro jednotlivé uzly.

Je nejlepší přístup k vytvoření vlastního pluginu pro přístup k zobrazení? Nemám s tím mnoho zkušeností.

Také jsem přemýšlel o použití argumentu s nějakou validací k tomu (abych nemusel vytvářet desítky samostatných pohledů). Například vzhledem k tomu, že tímto pohledem bude karta na konkrétní cestě k uzlu, zajímalo by mě, kdyby se v tomto uzlu nastavilo uživatelské referenční pole, které určuje, kdo by mohl pohled vidět. Potřebuji pouze způsob, jak by zobrazení mohlo být validováno, pouze pokud se současný uživatel rovná uživateli uvedenému v poli reference uživatele.

Nějaké nápady? Nebo to komplikuji, než je třeba?

Díky, Ben

9
BenK

Místo omezení oprávnění v pohledu můžete omezit oprávnění k položce nabídky, která k tomuto zobrazení vede (ať už je to karta na uzlu nebo zpětné volání nabídky). Svůj pohled můžete vytvořit pouze pomocí displeje „Výchozí“ a bez zobrazení stránky (takže uživatelé nemohou jen zjistit cestu k němu). Pak ve vašem page callback pro položku nabídky stačí zavolat views_embed_view pro zobrazení pohledu. Vypadá to, že manipulace s oprávněními k položce nabídky může být snazší než psaní nového plug-inu pro zobrazení (i když plug-in může být užitečný pro ostatní).

5
Chaulky

Vyzkoušejte modul Views Access Callback .

Poskytuje řízení přístupu založené na zpětném volání pro zobrazení.

Dostupné funkce zpětného volání jsou definovány moduly pomocí funkce hook_views_access_callbacks() (stejným způsobem jako v hook_perm()), pak lze nastavit v konfiguraci „Omezení přístupu“ v pohledu.

6
user5318

Musím něco chybět, ale zní to, jako byste vytvořili novou roli a přidali tyto uživatele. Poté použijte funkci Přístup 'role: role.

Pokud potřebujete svázat přístupová práva k něčemu v obsahu, použil bych vlastní přístup k Zobrazení, který jsem poprvé zjistil při nastavení bolesti, ale ocenil jsem flexibilitu, jakmile jsem pracoval. Pokud pohled generuje položku nabídky, nezobrazí se, pokud pohled neprošel funkcí přístupu.

Pokud skrýváte pouze položku nabídky, zdá se mi, že by zobrazení stále probíhalo a uživatel by mohl vyladit URI, aby si mohl prohlížet data.

Jerry

2
Jerry

Jak používat modul Vlastní oprávnění k vytvoření některých nových oprávnění speciálně pro váš účel a poté pomocí modulu živatelská oprávnění k přiřazení těchto nových oprávnění jednotlivým uživatelům?

Modul uživatelských oprávnění je velmi lehký. Nejsem si však jistý modulem Oprávnění uživatelů, protože v podstatě vytváří novou roli pro každého uživatele za scénami (tyto role nejsou na stránce hlavních oprávnění viditelné). Pokud máte mnoho uživatelů, může to zvýšit velikost vašich rolí a tabulek user_roles.

1
Tom Kirkpatrick

Pokud chcete kombinovat různé přístupové pluginy v Zobrazeních, můžete se podívat na modul Přístup k mnoha pohledům .

0
Steven Jones

Správně, to dává větší smysl. Myslím, že byste mohli (možná, ne zcela jistě) použít pohled a argument. Nastavte argument na ID uživatele převzaté od aktuálně přihlášeného uživatele a nechte výchozí argument, aby nezobrazoval nic. To by mělo být možné, i když nevím, jak bezpečné by to bylo spravedlivé. Pokud to zkusíte, odešlete zpět a dejte mi vědět váš pokrok.

0
Jamie Hollern