Technikai fórum
LDAP hitelesítésnél "dr." előtag megjelenítése a felhasználói profilban
Üdvözletem!
Az alábbi problémával kapcsolatban szeretnék segítséget kérni tőletek.
Egy több mint 5 000 felhasználót számláló Moodle rendszert használunk a munkahelyemen.
A hitelesítés eDirectory címtárból történik LDAP-on keresztül.
MInden gyönyörűen működik, de nem tudom, hogyan lehetne beállítani az adatok illesztésénél azt, hogy a vezetéknév előtti "dr." titulust is átvegye a Moodle és meg is jelenítse a felhasználó profiljában.
Korábban a "dr." a vezetéknév mezőben volt rögzítve, de újabban az eDirectoryban az erre fenntartott mezőbe kerül.
(A kollégáktól kapott információ szerint ez a címtárban a GenerationalQualifier attributum.)
A Moodle-ban nem találok olyan mezőt, amivel "párosíthatnám".
A jelenleg beállított illesztésekről csatolok egy képernyőképet.
A Moodle verzió: 3.4 (ha lehet, nem szeretném most frissíteni)

Kedves Tivadar!
Nálunk is felmerült a fenti probléma, de annyiból szerencsésebb a helyzet, hogy nálunk az LDAP-ban van olyan mező, ahol a felhasználó teljes neve (név előtaggal együtt pl.: Dr., Prof., ...) együtt szerepel. Mi ezt is szinkronizáljuk az "alternatename" nevű Moodle profilmezőbe és ezt jelenítjük meg elsődleges névként:
Ha ez nem járható út (mert nincs ilyen mező az LDAP-ban), akkor is van egy lehetséges megoldás:
1. az alternatename mezőbe leszinkronizálod a név előtagját
2. Az előbbi képen látható beállításban alternatename + lastname + firstname formát adsz meg (ezt nem teszteltem, de elvileg működhet)
3. Ha nem megy, akkor lesz még egy ötletem, de ott közvetelneül az adatbázisban kell "varázsolni"
Üdv.: Vágvölgyi Csaba
Csaba gyorsabb volt és ügyesebb.
Köszönet érte ez még nekem is jól jöhet!
Gábor
Mindkettőtöknek köszönöm a gyors választ.
Az "adatbázis varázslást" és "kódba belenyúlást" csak végső esteben vállalnám :)
Csaba tanácsait kipróbálom.
- Ha jól tudom, van az eDirectory-ban nálunk egy "fullName" mező, amiben a "megjelenítési név" szerepel.
Ha igen, akkor a most csatolt képem szerinti beállítás megfelelő?
(A többi beállítás pedig maradjon az én korábbi képem szerinti?) - A második javaslatot már beállítottam, de még nem láttam, hogy átveszi-e és megjeleníti-e a titulust.
Tudom egyénként én magam is frissiteni a profilokat a Moodle-ban az inaktív felhasználóknál?
Az LDAP szerverhez csak annyi hozzáférésem van, amit a Moodle beállításaiban meg kell adni, azt egy külsős csapat kezeli.
Üdv és köszönet: Tivadar

Sziasztok!
A általad küldött képen látható beállítás jó, de a 3. sor (Külső frissítése) esetén maradjon az alapételmezett "Soha" beállítás, mert a Moodle úgysem tud visszaírni a címtárba.
Ezt követően célszerű megtenni a követekező lépést:
Az alábbi SQL parancs annyit csinál, hogy annál a felhasználónál is "kitölti" az alternatename mezőt, aki nem lép be (én phpmyadmin-ban szoktam futtatni):
UPDATE `mdl_user` SET `alternatename` = CONCAT(lastname, ' ', firstname) WHERE `mdl_user`.`alternatename`IS NULL;
Igaz, hogy ez még nem tartlamazza a név előtagokat, de az a legközelebbi login után majd befrissül. És ne feldkezz el az előző levélben látható képernyőképen látható beállításról (alternatename, mint megjelenítendő név)!
Üdv.: Vágvölgyi Csaba
Kedves Csaba!
Köszönöm a kiegészítéseket.
Még nem jártam sikerrel, de dolgozom rajta.
Biztosan a mi "készülékünkben" van a hiba.
Sajnos bizonyos szerveres beállításokhoz nincsen jogosultságom, így másokra vagyok utalva.
Nem adom fel, a végére járok a problémának. :)
Ha sikerült, megosztom veletek.
Üdvözlettel: Tivadar
Nem írtátok és nem tudom, hogy nálatok fut-e, de érdemes az LDAP szinkronizáló szkriptet futtatni, ami helyre teszi az adatbázist. Mi egyébként éjszakánként le is futtatjuk, így az AD-ból törölt felhasználókat például deaktíválja a Moodle-ben is.
Szóval én az SQL bűvészkedés helyett lefuttatnám az LDAP hitelesítő segédprogram szinkronizáló szriptjét, ami a következő könyvtárban található:
/moodledocsdirectory/auth/ldap/cli/
Futtatni:
sudo -u www-data /usr/bin/php /moodledocsdirectory/auth/ldap/cli/sync_users.php
Ha pedig be akarjátok állítani, hogy minden nap lefusson akkor azt be lehet állítani a Moodle admin oldalon:
- Go to Site administration > Server > Scheduled tasks and click the gear icon opposite LDAP users sync job.
- Select the desired frequency of running and enable the task by un-ticking the disabled checkbox
Ez a szkript lekéri az összes felhasználó adatát és ahol az illesztés frissítésénél az van beállítva, hogy Minden belépés alkalmáva azokat a mezőket frissíti is.
Szóval ezzel tessék vigyázni, mert előfordulhat, hogy bizonyos Moodle mezőket nem szeretnénk felülcsapni az AD-ból megint.
Gábor
Kedves Gábor!
Köszönöm az ötletet.
Kérdésedre válaszolva: nem fut.
Pedig nagy segítség lenne egy 5 200 fős hivatalban, ahol napi szintű a "jövés-menés", így aztán sohasem naprakész a Moodle felhasználói adatbázisa.
Ha jól értem ez a Csaba által javasolt "alternatename" szinkronizációt is megoldaná.
A hivatalok közös, nem általunk adminisztrált LDAP szervert használnak, csak olvasni tudjuk az adatokat.
Megpróbáltam beállítani és lefuttatni az általad javasolt ütemezett futtatást, de sajnos az LDAP szerverre írást nem tudta végrehajtani, ha jól értelmezem az üzenetet:
Execute scheduled task: LDAP-felhasználói szinkronizálás (auth_ldap\task\sync_task) ... started 08:54:45. Current memory use 10.1MB. Csatlakozás az LDAP-szerverhez...Átmeneti tmp_extuser tábla létrehozása......... used 1975 dbqueries ... used 4.6733272075653 seconds Scheduled task failed: LDAP-felhasználói szinkronizálás (auth_ldap\task\sync_task),Hiba az adatbázis írása közben.
Mindenképpen megpróbálom "kiharcolni" az ehhez szükséges jogosultság beállításokat mert ha ez futna, akkor a "dr." problémán kívül egy másik, nem kevésbé fontos gond is megoldódna.
Köszönöm még egyszer!
Üdvözlettel: Tivadar
Kedves Tivadar!
A hibaüzenet alapján az látszik, hogy a Moodle tud kapcsolódni az LDAP szerverhez, de a Moodle adatbázisába nem tud írni. Mintha nem lenne jog új táblák létrehozásához (CREATE TEMPORARY TABLE privilege), vagy nem tud ebbe bele írni. Érdemes lenne megnézni mit ír a logba. Előtte persze beállítani a teljes naplózást (DEVELOPER) a Moodleben.
https://docs.moodle.org/311/en/Debugging#Enabling_debugging
Az LDAP szétverte nem kell írni. Onnan csak olvasni kell tudni.
És igen ez megoldaná a Csaba által javasolt szinkronizációt.
Üdv:
Gábor
LDAP szerverre és nem szétverte.
Na még csak az hiányozna, hogy “szétverje”… :D :D
Kedves Gábor!
Természetesen értettem.
Köszönöm a szorgalmas segítséget.
Ezek szerint én félreértettem a hibaüzenetet.
De ez jó hír, mert akkor nem kell az LDAP szerver üzemeltetőivel egyezkednem.
Az adatbázishoz nekem is van jogom, ellenőrzöm majd a beállításokat.
Üdv, Tivadar
Sziasztok!
Ezt az eszközt mi nem használjuk, de ennek leginkább az az oka, hogy címtárban jóval 100 000 feletti felhasználói rekord van, holott a valós aktív felhasználóink száma "csak" 40 000 körül mozog. Ha jól értem a dolog működését, akkor ez válogatás nélkül mindenkit leszinkronizál a címtárból a Moodle userek közé.
Lehet, hogy az tényleg "szétverné" a rendszert :)
Visszatérve az "alternatename" használatra nyitott vagyok egy telefonos/videókonferencia konzultációra (az utóbbi a képernyőmegosztás lehetősége miatt jobb lenne), ha ezzel felgyorsítjuk a megoldást.
Üdv.: Vágvölgyi Csaba
Kedves Csaba!
Köszönöm szépen a felajánlott lehetőséget.
A korábbi információkon túl egyelőre sajnos semmi újat nem tudok mondani, ezért nem tudom, hogy raboljam-e ezzel az idődet.
Üdvözlettel: Tivadar
+36 30 165-4570
Sziasztok!
Egy kicsit hosszú bejegyzés lesz, amihez több képet is csatolok, de szerintem már körvonalazódik a megoldás.
De mindenek előtt szeretném megköszönni Csabának a csütörtöki online konzultációt, mert az akkor megbeszéltek sokat segítettek.
Csak részleges jogosultsága volt a Moodle-nek az LDAP szerverhez, nem minden mező tartalmát tudta szinkronizálni, így többek közt az “alternatname” mezőt sem. Beállították, így már szinkronizálódik.
Ide én a “dr.” előtagot állítottam be, aminek az LDAP-ban nálunk a “generationQualifier” mező felel meg.
(Működik a “fullName” mezővel is, de ezt azért nem szeretném mert annak egyedi kitöltése van és sok nem napra kész információt tartalmaz, ami persze nagy baj. Pl. névváltozások nincsnek aktualizálva.)
A felhasználói szabványoknál név formátumnak az “alternatename lastname firstname” kombinációt állítottam be.
A képen “dr. Gipsz Jakab”. Ez szépen működik is.
Belefutottam azonban abba a problémába, hogy a korábban regisztrált felhasználóknál is kitölti az “alternate (Másik név)” mezőt, mégpedig a vezeték és keresztnévvel. Így aztán mindenkinek dupla neve van.
Érdekesség még, hogy ugyanez történik a kézi regisztrációval felvitt (Excelből tömegesen importált) felhasználóknál is. Van belőlük bőven, mert külsősöknek is tartunk tanfolyamokat.
Úgy vettem észre, hogy mindkét autentikáció esetében ez a név ismétlődés azoknál jelentkezik, akik korábban jártak az oktatáson, azoknál viszont nem akik a ma délelőtt megtörtént beállítás után jelentkeztek be.
Itt nyilván a korábban már említett “visszamenőleges szinkronizációs” problémáról lehet szó.
Csatolom a képeket is.
Üdvözlettel és köszönettel: Tivadar
Az előző hozzászólásomban leírt problémát magam idéztem elő a korábbi kísérletezéseimmel.
De Csaba ismételten segítségemre sietett, és megküldte nekem azt az SQL utasítást, ami az összes "Alternatename" mezőt üresre törli:
UPDATE `mdl_user` SET `alternatename` = '' WHERE `alternatename` != '';
Üdv!
A válasz nem egyszerű, mert a Moodle erre nincs felkészítve.
Érdemes az előtagnak létrehozni egy user profile field-t, amit az LDAP-l lehet szinkronizálni. Legalábbis 3.4.1 alatt már biztos. https://tracker.moodle.org/browse/MDL-40613
Viszont ahhoz, hogy ez meg is jelenjen szépen ahhoz bele kell nyúlni a kódba. Itt egy fórum vita erről: https://moodle.org/mod/forum/discuss.php?d=39120
Újabb verziók sincsenek felkészítve.
Remélem ez segít.
Üdv:
Gábor