| |
 |
|
 |
|
[dnes je 25. května 2013] Externí login do webmailu #RoundCube pomocí #JQueryxChaos 6. června 2011 [5017 znaků] [editováno 16. srpna 2011] [HowKnow]
★★ [ + ] 2 [2x] [ - ] [ informativní[x]] Zobrazení 4476 ← RSS 685 twitter 315 google 150 seznam 2 nyx 17 bot 803 Komentářů 6
Externí login do webmailu #RoundCube lze pomocí #JQuery realizovat jednodušeji, než to na první pohled vypadá. #internet #web2 #webmail #programming [Summary: external login to RoundCube using JQuery made easy]
Tento fragment zdrojového kódu v Javascriptu/JQuery umožňuje přihlásit se do lokální kopie moderního, Ajaxového webmailu RoundCube [roundcube.net] přímo z vaší úvodní webové stránky (nebo z jiného místa ve stejné doméně). Finta spočívá v poskytnutí správné hodnoty "tokenu" během přihlášení. Jediným zbývajícím omezením je zákaz cross-site skriptování ve všech velkých browserech.
Tuto informaci zveřejňuji hlavně protože když jsem na webu hledal řešení tohoto problému, tak jsem narazil na významné množství lidí, kteří se ptali na to samé, aniž by dostali od kohokoliv použitelnou odpověď - ve skutečnosti, některé z poskytnutých rad byly zavádějící. Bude zajímavé monitorovat gůglenost tohoto článku. Domnívám se, že integraci hotových free/open-source řešení do existujících webových stránek a aplikací dnes pod tlakem uživatelské přítulnosti velkých portálů a sociálních sítí řeší hodně webmasterů.
Aby uvedený kód fungoval korektně, tak musí být webmail RoundCube přístupné současně přes protokoly http:// i https:// a musí být instalován na stejné doméně, z které k němu chcete přistupovat (např. domácí stránky vaší firmy). (V případě potřeby můžete omezit nešifrovaný http:// přístup k aplikaci Roundcube pouze na požadovanou akci ?_action=logout pomocí jednoduché rewrite condition/rule v konfiguraci Apache). Samotný javascriptový kód ukazuje sílu syntaxe JQuery selektorů i v případě práce s HTML kódem poskytným 3. stranou, který nemáte pod kontrolou (Roundcube logout stránka).
This Javascript/JQuery code fragment enables login to localy installed copy of modern, Ajax-based RoundCube [roundcube.net] webmail directly from your main web page (or any other place in the same domain). The trick is in providing correct "token" value when logging-in. Only remaining restriction is ban of
cross-site scripting in all major browsers.
I publish this information mainly because when I was searching web for solution of this problem, I have found substantial number of people asking the same question, without receiving useful answer from anyone - actually, some of the advices were misleading. It will be interesting to monitor Google-impact of this article. I guess, that many webmasters are working on integration of off-the-shelf free/open-source solutions into existing web pages and application - being pressed by user-friendly approach of social networks and major portals.
In order for this code to work correctly, Roundcube webmail must be accessible using both http:// and https:// protoclols and it must be installed in the same domain as the web page, from which you want to access it (e.g. your company homepage). (Optionaly, you can restrict unencrypted http:// access to Roundcube application just to required action ?_action=logout using simple rewrite condition/rule in Apache configuration). The javascript code itself demonstrates power of JQuery selector syntax - even when working with 3rd party HTML code which you do not control (Roundcube logout page).
Javascript (nahraďte JQUERY-URL vaším preferovaným umístěním knihovny JQuery - replace JQUERY-URL with your prefered location of JQuery library):
<script type="text/javascript" src="JQUERY-URL"></script>
<script type="text/javascript">
$("#loginbutton").click(function()
{
$("#loginbutton").hide();
$("#formcontent").load("/roundcube/?_action=logout", function()
{
$("#stolentoken").val($('#formcontent :input[name="_token"]').val());
$("#loginform").submit();
});
});
</script>
HTML fragment (nahraďte HOMEPAGE-URL adresou vaší domovské stránky, Roundcube musí být instalován v podadresáři - replace HOMEPAGE-URL with your homepage address, Roundcube must be installed in subdirectory)
<form id="loginform" name="mailform" action="https://HOMEPAGE-URL/roundcube/" method="post">
<input type="hidden" name="_token" id="stolentoken" value="" />
<input type="hidden" name="_action" value="login" />
<input type="hidden" name="_timezone" id="rcmlogintz" value="_default_" />
<label for="rcmloginuser">Username</label>
<input name="_user" id="rcmloginuser" type="text"/>
<label for="rcmloginpwd">Password</label>
<input name="_pass" id="rcmloginpwd" type="password" />
<input id="loginbutton" type="button" value="Login (SSL)" />
</form>
Ukázková implementace - Sample implementation: www.spoje.net
Sloupcová sazba článku pro browsery Firefox, Opera
a Chrome [zpět na začátek sloupcové sazby] CZK 2900242944/2010 (VS 1134) BTC 19rriLx8vR19wGefPaMhakqnCYNYwjLvxq Podpořte autora článku nebo celou TečkuCZ [zobrazit možnosti] →- moderujte článek kladně (v záhlaví nebo níže) nebo odstraňujte negativní přívlastky, se kterými nesouhlasíte
- moderujte relevantní komentáře kladně (stanou se nedílnou součástí článku) a nesmyslné naopak záporně
- napište pod článek sami pozitivní či přínosný komentář (pokud vím, tak většina autorů na webu má ráda komentáře)
- uvažujte TečkaCZ-kovitě a používejte mikrosyntaxi v komentářích (používejte hashtagy, vkládejte odkazy nebo obrázky...)
- uploadněte si ikonku ke své přezdívce, pod kterou komentujete články [www.gravatar.com] :-)
- staňte se registrovaným komentátorem a moderátorem [COMMING SOON]
- sdílejte tento článek v sociálních sítích a na diskuzních fórech (některé předem připravené možnosti viz níže)
- followujte (sledujte, spřátelte si...) TečkuCZ v sítích [Identi.ca] [Twitter] [Google+] nebo odebírejte [RSS kanál]
- zašlete Bitcoin dar dle vlastního uvážení (např. 0.001-0.01 BTC) na účet [19rriLx8vR19wGefPaMhakqnCYNYwjLvxq] :-)
- zašlete peněžní dar dle vlastního uvážení (např. 1-10 CZK, VS=číslo článku) na transparentní účet [2900242944/2010]
Sdílet v síti [Identi.ca] [Twitter] [Google+]
[Facebook]
[Jagg.cz] Formátovat pro tisk [bez komentářů]
[s komentáři]
Krátká forma URL (adresy) [http://teckacz.cz/1134]
Všechny články [od autora xChaos]
[v rubrice HowKnow] [nejnovější]
Hodnocení článku čtenáři [ + ] 2 [2x] [ - ] Tip: Pro moderaci ÄlĂĄnkĹŻ (kladnĂŠ nebo zĂĄpornĂŠ hodnocenĂ) je nutnĂŠ pouĹžĂt browser, kterĂ˝ podporuje javascript a cookies.
Komentáře čtenářů [napsat vlastní]
Harvie 6. června 2011 ← komentářů 6 ☯ 1 [11x] ★ [ + ] -1 [1x] [ - ] [ nepřesné[x]] [zobrazení 121] → [/-/15214] ← sdílet nebo odpovědět
No timhle bych se radsi nechlubil.
1.) v Chromiu mi ten bastl zas nejede (jinde sem to nezkousel :)
2.) i kdyby to jelo, tak je dost mozny ze load("/roundcube/?_action=logout", ...) by me zas odhlasilo, kdybych nahodou chtel navstivit v druhym tabu stranku s timhle dialogem
3.) spravny reseni je imho bud napsat plugin do roundcube, nebo jeste lepe vysvetlit autorum roundcube, jak nepouzitelny ty jejich tokeny jsou.
xChaos 6. června 2011 ← komentářů 7436 ☯ -100 [4732x] ★ [ + ] 0 [0x] [ - ] ← pro ohodnocení komentáře se není nutné registrovat
[zobrazení 53] → [/-/15215] ← sdílet nebo odpovědět
@Harvie ve Firefoxu to jede v pohodě, teď jsem teda opět otestoval Operu a Chrome ... a oboje ok, zalogoval jsem se (tedy na svůj účet na jetsetu - nevím, možná by to chtělo testnout s jiným serverem). JQuery je z definice knihovna zaručující multiplatformní kompatibilitu - nemůže to fungovat někde a už ne jinde, chápeš ? Pokud ti to opravdu nejde, tak je problém ještě někde jinde. Ale počítám, že to testuješ na new.spoje.net a ne na → [http://www.spoje.net] :-) na tom new.spoje.net to poměrně logicky nemůže fungovat.
S tím odhlášením v jiným tabu to závisí na implementaci cookies - a ano: vzhledem k tomu, že všechny taby a okna browseru typicky sdílí cookie jar, tak znovu-přihlášení tě logicky odhlásí v ostatních tabech/oknech - to je zcela žádoucí chování. (Nevšiml sis, že ten Ajax se volá jen při pokusu o nový login ? ne při každém zobrazení úvodní stránky ?)
phil 7. června 2011 ← komentářů 21 ☯☯☯ 17 [25x] ★ [ + ] 1 [1x] [ - ] [ pravdivé[x]] [zobrazení 66] → [/-/15230] ← sdílet nebo odpovědět
drobna korektura: "Jediným zbývajícím omezením je zákaz cross-side skriptování ve všech velkých browserech." -> "cross-site scripting" spis ne? ;-)
xChaos 7. června 2011 ← komentářů 7436 ☯ -100 [4732x] ★ [ + ] 0 [0x] [ - ] ← pro ohodnocení komentáře se není nutné registrovat
[zobrazení 49] → [/-/15231] ← sdílet nebo odpovědět
opraveno.... (měl jsem pocit, že jsem to už opravoval, ale evidentně jsem to nějak neuložil, nebo co)
(vtipné je, že googlenost tohohle článku je nakonec minimální... zřejmě to SEO zatím ještě vůbec nechápu...)
phil 8. června 2011 ← komentářů 21 ☯☯☯ 17 [25x] ★ [ + ] 1 [1x] [ - ] [ informativní[x]] [zobrazení 52] → [/-/15240] ← sdílet nebo odpovědět
Tohle neni imho zalezitost SEO, protoze na vyraz "externi login roundcube" jses na tretim+ctvrtym (nebo tak nejak) miste na googlu, to je v poradku, spis jsi precenil hledanost toho vyrazu v ceskym jazyce si myslim.
xChaos 15. září 2011 ← komentářů 7436 ☯ -100 [4732x] ★ [ + ] 0 [0x] [ - ] ← pro ohodnocení komentáře se není nutné registrovat
[zobrazení 53] → [/-/16317] ← sdílet nebo odpovědět
Tak s těmi cookies je to pořád nějaké složité... poslední verze kódu vypadá takto:
$("#loginbutton").click(function()
{
$("#loginbutton").hide();
$("#ajaxloader").show();
$("#formcontent").load("/roundcube/?_action=logout", function()
{
$("#stolentoken").val($('#formcontent :input[name="_token"]').val());
$("#formcontent").load("/roundcube/"); /* set-cookie: roundcube_sessid */
$("#loginform").submit();
});
});
| |
Zobrazeno 6 komentářů z 6 nalezených. Zpracování trvalo 0.32 sekund.
- Konce řádků budou zachovány
- Systém se pokusí o autodetekci platných URL (například http://www.domena.tld/cesta)
- Vložení obrázku nebo YouTube videa do textu: +URL (prozatím nelze kombinovat s vložením odkazu)
- Odkaz na jeden konkrétní příspěvek: @přezdívka:id (předvyplňuje se automaticky při psaní odpovědi)
- Odkaz na aktuální příspěvky pod danou přezdívkou: @přezdívka
- Odkaz na aktuální příspěvky obsahující daný tag: #hashtag (hashtag má minimálně 4 znaky)
- Zvýraznění části textu tučně: *text*
- Zvýraznění části textu kurzívou: _text_
Nápověda: ve vlastním zájmu uvádějte u komentářů pouze funkční a dostupnou e-mailovou adresu.
Přezdívku, která je jednou spojená s konkrétní e-mailovou adresou, už nyní nelze bez zásahu
administrátora serveru spojit s jinou adresou. Uvedením neplatné e-mailové adresy si v budoucnu
znemožníte upload ikonky i možnost použít některé další chystané neanonymní funkce vázané na
uvedení platné e-mailové adresy.
TečkaCZ [Nejnovější články] [Nejnovější komentáře] [Aktuální debaty] [Zeď vzkazů] [Zeď odkazů] Externí login do webmailu #RoundCube pomocí #JQuery [Začátek článku] [Začátek komentářů]
|
|
 |
|
![[]](http://www.gravatar.com/avatar/94b652a98d5519730d39fdbe0a9dea91?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/64def6753df6be2ce8eca1ebcb7e60ba?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/3ddbf46000c2fbd44759f3b4672b64db?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/bfecb2d8170a86bfe1b0eb3f1fdb6232?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/7419dbec7ab81c53b12c59ef7db56b00?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/be51f9fea10a427c1b83ea5ad2cdf3d0?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/a6f30815a43f38ec6de95b9a9d74da37?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/60079ac67c52b78a7a541910f4c2ca37?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/25ba3bc8250b0041532b6fdbf24d724b?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/4eae6e28f75862a7f3e196f1bb372825?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/3ba0df08ceeb1c9285dcd9f2f3e8f861?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/e061c9aea5026301e7b3ff09e9aca2cf?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/d73747d27243cd0c1a184b6376e9be49?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/68ee557d5b86d27b87a890587a3699d7?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/ca1a65ac23dd078a4b9904aea5f7cc0f?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/34102dad8aa0eebae8d653b797b7c644?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/18cfff0e208be80a41b8bb41523e6606?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/9dd4e461268c8034f5c8564e155c67a6?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/39ec785d60a1b23bfda9944b9138bbcf?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/66f7c3a8b73e1d5e52cb7131b356840b?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/0df9e7be32918db535c59e0e0cd9a154?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/f561aaf6ef0bf14d4208bb46a4ccb3ad?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/d6e35bac111ad4d8a803acf4fdadb922?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/5213e162c7c8c02628ab43079272bd10?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/d231ce976ab3122c0786db59886b4c60?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/10f8b00185d14291cd228e80a4a40015?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/8b96c06b6c0ce3434d4f47fdfd4b98ae?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/31b1cc1b250fbd31e037948c43e37640?s=40&r=r&default=wavatar) ![[]](http://www.gravatar.com/avatar/b551730a408be63e0c6af77d2438f8f1?s=40&r=r&default=wavatar)
|