ceskaexpedice / kramerius

System Kramerius
GNU General Public License v3.0
45 stars 26 forks source link

K7 - jádro a admin klient - nelze definitivně smazat roli #988

Closed mduda100871 closed 1 year ago

mduda100871 commented 1 year ago

Zdravím,

je potřeba vyřešit problém s tím, že nelze standardní cestou, prostřednictvím admin rozhraní K7, odstranit již nevyužívanou roli.

Komplikace vzniká takto:

  1. založím roli v Keycloaku a tu následně přiřadím nějakému uživateli (např. nějaký subadmin s omezenou autorizací jen na některé akce zprostředkované právě touto rolí),
  2. uživatel se pak poprvé přihlásí do admin klienta a spolu s tím se přenese automaticky tato role i do jádra, objeví se v seznamu rolí a mohu jí přiřadit k akcím, potud vše OK,
  3. následně zjistím, že potřebuji tuto roli zrušit (důvody mohou být různé),
  4. takže nejprve roli odstraním ze všech akcí, následně ji odeberu i uživateli v Keycloaku, a jako poslední krok ji v Keycloaku zruším jako takovou, potud vše OK,
  5. jako poslední krok, který právě ale selhává, je kompletní zrušení v admin rozhraní K7 - když se roli pokusím zrušit, nepovede se to a dostanu hlášku, že role je stále používána, přestože není (opticky v admin rozhraní není nikde vidět jako použitá).

Z výše uvedeného to na mě zatím působí tak, že interně se inkriminovaná role neodebere v databázi od daného účtu/účtů, resp. když se uživatel znovu přihlásí přes Keycloak, tak jádro K7 nepozná/neprovede synchronizaci s novou skutečností ohledně příchozích atributů z Keycloaku.

Bylo by potřeba to nějak vyřešit, asi celkem urgentně, protože je to hodně omezující a frustrující, zvláště když se nová instance K7 ladí a různě mění.

Bylo by asi zároveň hodně přínosné, kdyby jádro K7 dokázalo podat do admin klienta nějakou bližší informaci, kde je role používána, aby byl admin schopen to efektivně řešit - to hlavně v případě, až těch rolí a uživatelů bude mnohem více.

Díky, MD

pavel-stastny commented 1 year ago

@mduda100871 Nyní se při mazání role automaticky maže i reference na ni.

mduda100871 commented 1 year ago

Tak asi je tam ještě něco špatně.

Denní build vyhazuje výjimku - localhost.log.zip

mduda100871 commented 1 year ago

Tak vyzkoušeno na včerejším buildu a zatím to vypadá dobře - role jde smazat, pokud na ní nikde neexistuje žádná reference, což je správně.

Pokud roli smažu v admin klientovi, ale v keycloaku ji má uživatel přidělenou, tak po jeho přihlášení se role zase vrátí, což je opět správně.

Pokud roli zruším v keycloaku i admin klientovi, je definitivně pryč i po opětovném přihlášení uživatele.

MD