Diskuse

Téma: [SL8 plugin] Uživatelské role

Chci Vás poprosit o názory, nápady, připomínky nebo otázky k tomuto tématu. Já ty pluginy nedělám pro sebe, ale pro Vás...

Mám rozpracovaný plugin (pracovní název UserRoles), který simuluje přidávání rolí uživatelům. Umožňuje propůjčit konkrétnímu uživateli práva další skupiny (bez jejího levelu). Kdysi tu byl v diskusi dostupný plugin, který řešil přesun uživatelů mezi skupinami. Propůjčování dodatečných oprávnění by mohlo být lepším řešením situace.

Co to tedy vlastně dělá?
V praxi to znamená, že k aktuálním právům, které uživatel má přidá aktivní práva z další propůjčené skupiny. Neaktivní práva se propůjčením neodebírají. Pokud tedy například uživatel může editovat neomezeně vlastní příspěvky, propůjčená skupina bez toho práva mu ho neodebere.

Proč skupiny?
Řešeno je to takto s ohledem na systém a jeho práci s oprávněním. Propůjčování celých skupin, namísto jednotlivých samotných práv rovněž zachovává kompatibilitu s ostatními pluginy, které registrují nějaká oprávnění. Dalším důvodem je, že systém neumí přidat uživateli právo, které neobsahuje DB tabulka uživatelských skupin.

Co už mám hotové?
- načítání propůjčených skupin a slučování jejich oprávnění
- základní správu k propůjčování oprávnění (přehled/tvorbu/editaci/mazání)
- - propůjčit lze jednomu uživateli i více skupin
- - lze nastavit platnost od-do (může být na neomezenou dobu)

Co mám ještě v plánu?
- automatické mazání expirovaných propůjčení za pomoci systémového CRONu
postZaslat odpověď
Kdy se hodí uživateli dávat dočasné práva? 🙂 Nedokážu si úplně představit use-case.

Jinak k systém neumí přidat uživateli právo, které neobsahuje DB tabulka - přes event user.auth.success se dají do dat skupiny přidat libovolné "sloupce", i když reálně neexistují. Nevím proč by to někdo dělal (takové práva pak nepůjdou editovat přes admin), ale jde to.
Na tu registraci práv jsem ti psal soukromě, nefungovalo mi to tak jak píšeš. Ale jak jsi psal, je to hlavně kvůli jednotné správě v adminu.

Trochu ti přiblížím myšlenku...
Dělal jsem komunitní web pro zájmové sdružení, kde je aktuálně něco přes 300 aktivních uživatelských účtů. Některé účty jsou členů sdružení a další jsou prostě běžní uživatelé. Požadavek byl, aby některé účty měli možnost například psát články. Bohužel ne všichni toto mají dostupné, rozdíly jsou dokonce mezi členy "vedení". Kde jsou skupiny třeba jako "Pokladník". A aby nevznikaly rozepře o oprávnění ¯\_(ツ)_/¯ , tak byl požadavek, aby se nezobrazovalo kdo je v jaké skupině (= přetížit profily). Vzhledem k různým levelům a oprávněním do různých částí webu pak máš zhruba takové skupiny:

- hlavní admin
- admin
- vedení
- vedení + články
- člen
- člen + články
- registrovaný
- registrovaný + články

A to je jen základ pro psaní článků... no a teď si vezmi, že někdo má možnost sám si schvalovat články. No a pak tu jsou další oprávnění, která mají jen někteří... Ve finále, by to znamenalo mít téměř group per user.

A takových situací, kdy se to hodí je více, dá se to použít v různých TextRPG webech co na SL běží a že jich není málo.
A ta dočasnost je jen support k tomuto starému požadavku. https://sunlight.shira.cz/index.php?m=topic&id=19930&page=1#posts

Proč na to mít 2 extra pluginy, když to dokáže obstarat jeden.
Osobně budu za takový plugin i rád a možná nejen já. Mnozí řeší úpravy webu a dočasná práva jsou lepší , než někomu půjčovat vlastní heslo a Nick, nehledě na fakt, že když se osvědčí, snadno můžeme přenést uživatele mezi stálé ;)
Za mě osobně ano 😎
Zřejmě jsi úplně nepochopil o co jde, asi ti udělám soukromou přednášku na Diskordu 😄 .

Uživatelský účet existovat musí tak jako tak, jen bude možné, aby disponoval právy z několika skupin. Hodí se to hlavně v případech jako jsem popsal výše, kdy potřebuješ různě kombinovat oprávnění. Připravíš si několik skupin oprávnění a pak je propůjčuješ, přitom uživatelský účet zůstává stále v původní skupině s původním levelem.

Není tedy potřeba vytvářet stejný set oprávnění s různými levely a popisky. Vytvoříš například skupinu "Autor článků" a tuto jednu půjčíš osmi lidem nezávisle na jejich původní skupině. Další výhodou je, že pokud bys chtěl všem těmto uživatelům umožnit samoschvalování článků, tak upravíš jen tu jednu skupinu.