ceskaexpedice / kramerius-web-client

Novy klient pro Krameria
13 stars 14 forks source link

Jazyk přihlašovací stránky neodpovídá nastavené jazykové mutaci #436

Closed kerschfilip closed 2 years ago

kerschfilip commented 3 years ago

Dobrý den,

V KNAV jsme připravili anglickou verzi stránky pro přihlášení uživatele. Přes tlačítko „Přihlásit“ v klientovi na ni ale není možné odkazovat, protože není možné mít v konfiguraci klienta různé přihlašovací linky podle jazykové mutace.

Když má tak teď uživatel Krameria nastaveného v angličtině a klikne na „Přihlásit“, dostane se na přihlašovací stránku v češtině, kterou si musí sám do angličtiny přepnout.

Bylo by možné tohle nějak vyřešit?

Díky! FK

honza-rychtar commented 2 years ago

U instalací s přihlašováním přes shibboleth se v konfiguraci nastavuje login url přes auth.loginUrl

 auth: {
   logoutUrl: 'https://dnnt.mzk.cz/Shibboleth.sso/Logout',
   loginUrl: 'https://dnnt.mzk.cz/podminky-zpristupneni'
 },

Přidal jsem podporu dynamického placeholderu ${LANG}, který se nahradí kódem jazyka. Takže je možné loginUrl parametrizovat např.

loginUrl: 'https://dnnt.mzk.cz/podminky-zpristupneni-${LANG}' --> https://dnnt.mzk.cz/podminky-zpristupneni-en --> https://dnnt.mzk.cz/podminky-zpristupneni-cs Takže se pak pro každý jazyk vytvoří nový soubor Nebo se to rozhodí do adresáře např. loginUrl: 'https://dnnt.mzk.cz/podminky-zpristupneni/${LANG}.html' --> https://dnnt.mzk.cz/podminky-zpristupneni/en.html --> https://dnnt.mzk.cz/podminky-zpristupneni/cs.html

mduda100871 commented 2 years ago

Přidal jsem podporu dynamického placeholderu ${LANG}, který se nahradí kódem jazyka.

A jak se to zachová, když ta instance klienta nebude mít jazykovou mutaci, kterou má prohlížeč jako defaultní - třeba francouzštinu?

Nabídne to anglickou verzi? Nebo ta proměnná se naplňuje kódem jazyka podle toho co si uživatel změnil v klientovi v nabídce jazyků?

Ono to asi nebude úplně přesně to co jsme chtěli, protože my ten jazyk přepínáme javascriptem přímo v té stránce, takže teď si nejsem úplně jistý jak to předěláme - zřejmě budeme muset komplet překopat ty přihlašovací/souhlasící formuláře...

MD

honza-rychtar commented 2 years ago

@mduda100871 tohle je napojené na ten lokalizační mechanismus klienta. Použije se aktuální jazyk klienta - aktuálně svítící vlajka vpravo nahoře. Výběr jazyků je možné nastavit v konfiguraci přes APP_GLOBAL.languages (['cs', 'en', 'de', 'sk'] pokud není uvedeno) A výchozí jazyk taky APP_GLOBAL.defaultLanguage ('cs' pokud není uvedeno)

Když někdo přijde s francouzštinou, tak se použije použije výchozí jazyk dokud si uživatel sám nepřepne na některý jiný.

K té poslední části. Vy tam máte jazyk v parametru v url. On by se ten placeholder dal použít i pro parametr, ale tam je teď problém, že klient za to url přidává automaticky ?target=AKTUALNI_URL_V_KLIENTOVI - problém je ten otazník, klient předpokládá že target je prvním parametrem. Takže bychom to mohli ještě upravit a i ten target dělat přes placeholder ${TARGET}, takže v konfiguraci by jsi měl.

loginUrl: 'https://kramerius.lib.cas.cz/podminky-zpristupneni?target=${TARGET}&lang=${LANG}
mduda100871 commented 2 years ago

Ano, to by bylo dobré.

Možná jen otázka k zamyšlení, zda-li by nebylo z dlouhodobějšího hlediska dobré ten druhý placeholder "zobecnit" v podobě možnosti tam dát libovolný počet parametrů dle potřeby nastavením v konfiguraci klienta. Ale je to jen úvaha, netrvám na tom.

MD

mduda100871 commented 2 years ago

K té poslední části. Vy tam máte jazyk v parametru v url. On by se ten placeholder dal použít i pro parametr, ale tam je teď problém, že klient za to url přidává automaticky ?target=AKTUALNI_URL_V_KLIENTOVI - problém je ten otazník, klient předpokládá že target je prvním parametrem. Takže bychom to mohli ještě upravit a i ten target dělat přes placeholder ${TARGET}, takže v konfiguraci by jsi měl.

loginUrl: 'https://kramerius.lib.cas.cz/podminky-zpristupneni?target=${TARGET}&lang=${LANG}

Mám otázku, je výše uvedený návrh už zapracovaný do poslední vydané verze 2.3.4 klienta?

Přijde mi, že nikoliv, protože když jsem to nastavil do konfigurace stejně jak je uvedeno, tak to vygeneruje nesmyslné url, s automaticky dodaným targetem na konci, příklad z našeho testovacího dnnt Krameria:

https://kramerius-dnnt.lib.cas.cz/podminky-zpristupneni?target=${TARGET}&lang=cs?target=https://kramerius-dnnt.lib.cas.cz/

Díky, MD

honza-rychtar commented 2 years ago

@mduda100871 Není, bude v příští verzi.

honza-rychtar commented 2 years ago

Hotovo, dostupné od verze 2.3.5

mduda100871 commented 2 years ago

Vypadá to funkčně, ještě to nechám otestovat kolegy a Filip pak issue zavře.

MD

kerschfilip commented 2 years ago

Při použití tlačítka Přihlásit v menu to funguje dobře, díky.

Všiml jsem si ale problému, pokud se chci přihlásit odkazem v textu u neveřejného dokumentu: například tady máme v textu "...je nutné se přihlásit", přičemž to "přihlásit" je odkaz na přihlašovací stránku, který si s sebou nese i atribut targer= díky placeholderu ${UUID}, takže po přihlášení se uživatel vrátí zpět na dokument, co si prohlížel. Ve verzi 2.3.5 jsme k tomu odkazu dali ty nové placeholdery ${TARGET} a ${LANG} aby se přenesla jak URL, tak jazyk, ale nedochází k jejich nahrazení, takže URL pod odkazem vypadá takto: .../podminky-zpristupneni?target=${TARGET}&lang=${LANG}

Bylo by možné ještě nějak vyřešit tohle @honza-rychtar? Děkuji

rrandiak commented 2 years ago

Zdravím, máme rovnaký problém s placeholdermi TARGET a LANG v licenčných textoch. Bolo by fajn keby sa to vyriešilo čo najskôr. Vopred vďaka.

Róbert Randiak MZK

mduda100871 commented 2 years ago

U nás jsem to zatím obešel tak, že jsem do licenčních textů nastavil staticky linky pouze s placeholdrem ${UUID}:

Příklad (česká a anglická mutace):

kramerius-00 kramerius-01

Nicméně lepší by bylo to nahradit pak výše zmíněnými placeholdery.

MD

honza-rychtar commented 2 years ago

Takže zkusím shrnout zbývající problémy.

Navrhuju zahodit nepoužívat UUID a použít relativní PATH, takže

Potom bude na vás, jak PATH použijete - přidáte tam prefix url s požadovanou doménou, takže např.

Budou fungovat všechny placeholdery UUID, TARGET i PATH. Jen bude na zvážení, který použít.

mduda100871 commented 2 years ago

Jo, to mi připadá asi jako dobré řešení...

MD

honza-rychtar commented 2 years ago

Takže teď na místech

je možné použít placeholdery UUID, TARGET, PATH a LANG popsané výše.

Takže např. u KNAV u url pro přihlášení je vhodné použít TARGET, protože chci předat celé aktuální url a na něj se vrátit https://kramerius.lib.cas.cz/podminky-zpristupneni?target=${TARGET}&lang=${LANG} Ale u DK se použije PATH, protože se odkazuje na jinou instalaci klienta, kde chci předat jen relativní cestu v rámci klienta. https://dnnt.mzk.cz/podminky-zpristupneni?target=https://dnnt.mzk.cz${PATH}

Dostupné ve verzi 2.3.6

rrandiak commented 2 years ago

Nasadené na DK a otestované. Všetko funguje ako má.