Author Topic: Ajax Login und Logout Weiterleitung?  (Read 17367 times)

Offline rundkubus

  • Jr. Member
  • **
  • Posts: 12
Ajax Login und Logout Weiterleitung?
« on: December 08, 2009, 03:22:42 PM »
Hallo,

ich würde mich über Hilfe bei folgenden Fragen freuen...

1)
Wie kann man sich aus externer Seite via AJAX einloggen?
Ich möchte gerne via jQuery ein Form-Loginaufruf senden
und sowas wie true|false von Roundcube zurück erhalten.
Wenn "true" wird zur Roundcube URL weitergeleitet,
wenn "false" gebe ich in meinem externen Form einen Fehler aus.

2)
Wie kann man beim Logout direkt auf eine andere Seite umleiten,
statt zum Rundcube eigenem Loginfenster?
JavaScript window.location oder HTML hacks finde ich blöd. ;)

Besten Dank vorab,
Gruss Rundkubus

Offline rosali

  • Hero Member
  • *****
  • Posts: 2,533
Ajax Login und Logout Weiterleitung?
« Reply #1 on: December 09, 2009, 12:06:48 AM »
Zu 1)
true|false bekommst Du nicht zurück. Du kannst aber in [roundcube]/index.php posten und sehen was bei erfolgreichem bzw. nicht erfolgreichem Login als HTML-Output zurückgegeben wird. Erforderliche Values sind _user, _pass, _host.

Zu 2)
Das geht ganz leicht mit einem Plugin. Siehe Hook 'logout_after'.
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

Offline rundkubus

  • Jr. Member
  • **
  • Posts: 12
Ajax Login und Logout Weiterleitung?
« Reply #2 on: December 09, 2009, 04:13:45 AM »
@ rosali
super, vielen Dank für Deine Tipps.

Offline rosali

  • Hero Member
  • *****
  • Posts: 2,533
Ajax Login und Logout Weiterleitung?
« Reply #3 on: December 09, 2009, 05:46:51 AM »
Gern geschehen ... nochmal zu 1)

Natürlich kannst Du auch das gewünschte Return beim Login über einen Plugin Hook erzeugen, wenn Du dem AJAX Post z.B. ajax=1 mitgibst und dann im Hook 'login_after' über !empty($_POST['ajax']) verzweigst.

Es wäre auch möglich, den Hook 'login_failed' zu benutzen.
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

Offline rundkubus

  • Jr. Member
  • **
  • Posts: 12
Ajax Login und Logout Weiterleitung?
« Reply #4 on: December 09, 2009, 06:16:58 AM »
@ rosali
ahh herrlich, werde ich so machen.
Besten Dank und schonmal angenehme Feiertage. :)

Offline rundkubus

  • Jr. Member
  • **
  • Posts: 12
Ajax Login und Logout Weiterleitung?
« Reply #5 on: December 30, 2009, 07:25:32 AM »
@ rosali

Der Ajax Login klappt :), jedoch bin ich wohl zu bloed um den logout_after hook
zum laufen zu bekommen (das Plugin steht jedenfalls in /config/main.inc.php)...

Quote
class logout_redirect extends rcube_plugin
{
   public $task = 'logout';
   
   function init()
   {
      $this->add_hook('logout_after', array($this,'jumpto'));
   }
   
   function jumpto($args)
   {
      header("Location: http://domain.net");
      return null;
   }
}


...Roundcube loggt sich ganz normal aus, ohne obiges zu beachten.
Was mache ich denn falsch?

Danke vorab,
Gruss Rundkubus

Offline rosali

  • Hero Member
  • *****
  • Posts: 2,533
Ajax Login und Logout Weiterleitung?
« Reply #6 on: December 30, 2009, 08:48:56 AM »

<?php
class logout_redirect extends rcube_plugin
{
public 
$task 'logout';

function 
init()
{
$this->add_hook('logout_after', array($this,'jumpto'));
}

function 
jumpto($args)
{
header("Location: http://google.com");
return 
$args;
}
}
?>
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

Offline rundkubus

  • Jr. Member
  • **
  • Posts: 12
Ajax Login und Logout Weiterleitung?
« Reply #7 on: December 30, 2009, 09:10:02 AM »
@ rosali

ich habe Deinen Code 1zu1 uebernommen (siehe http://www.ssl.mynetcologne.de/screen.png) aber der logout leitet trotzdem zu!?...
/index.php?_task=logout

Ich benutze roundcube 0.31

Offline rosali

  • Hero Member
  • *****
  • Posts: 2,533
Ajax Login und Logout Weiterleitung?
« Reply #8 on: December 30, 2009, 10:39:36 AM »
Bei mir funzt es. Ich habe es gerade nochmal überprüft. Im Gegensatz zu Dir benutze ich die aktuelle SVN version (Roundcube Webmail). Also liegt es m.E. entweder an der Version oder Du hast ein anderes Plugin aktiviert, das den logout_after hook benutzt.

Wenn ich das folgende frage, komme ich mir immer etwas blöd vor, da ich ja nicht weiss, ob ich einen Newbie, einen Semi-Professional oder einen Advanced User anspreche:

Hast Du das plugin wirklich auch richtig registriert?

$rcmail_config['plugins'] = array(
  "logout_redirect",
  ... alle anderen Plugins
);
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

Offline rundkubus

  • Jr. Member
  • **
  • Posts: 12
Ajax Login und Logout Weiterleitung?
« Reply #9 on: December 30, 2009, 11:42:18 AM »
@ rosali

oh man, weil ich nicht richtig nachgelesen habe, wusste ich nicht das plugin-ordner, start-script und class _identisch_ betitelt sein muessen! :|
Danke fuer den Hinweis, jetzt gehts super! :)

Sorry fuer den Heckmeck,
Gruss rundkubus

Offline rundkubus

  • Jr. Member
  • **
  • Posts: 12
Ajax Login und Logout Weiterleitung?
« Reply #10 on: December 30, 2009, 12:45:39 PM »
@ rosali

Besten Dank fuer Deinen super Einsatz! :)

Eine kleine Frage habe ich noch, wie kann ich feststellen ob der Logout vom User
manuell oder vom System automatisch (aufgrund eines Timeouts) vollzogen wurde?

Das wuerde ich gerne in der redirect-url domain/?log=xxx mitgeben.
xxx = "user" _oder_ "auto"
« Last Edit: December 30, 2009, 12:47:54 PM by rundkubus »

Offline rosali

  • Hero Member
  • *****
  • Posts: 2,533
logout_redirect
« Reply #11 on: December 31, 2009, 02:04:48 AM »
Ich gehe davon aus, dass Deine User die Roundcube Login Page niemals zu Gesicht bekommen sollen.

Wenn das richtig ist, dann benutze das anhängende Plugin.
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

Offline rosali

  • Hero Member
  • *****
  • Posts: 2,533
Ajax Login und Logout Weiterleitung?
« Reply #12 on: December 31, 2009, 02:08:00 AM »
Könntest Du bitte Dein AJAX Login Script posten?
Regards,
Rosali
__________________
MyRoundcube Project (commercial)

Offline rundkubus

  • Jr. Member
  • **
  • Posts: 12
Ajax Login und Logout Weiterleitung?
« Reply #13 on: December 31, 2009, 07:38:02 AM »
@ rosali

Zuerst: Es sollte auch weiterhin moeglich sein, sich ueber das "normale" Loginform einzuloggen. Manche bevorzugen einen neutrales Loginform statt meine Portalseite.
Das ein Ajax Login via $_POST[ajax] in der Roundcube Session registriert und beim Logout entsprechend beachtet wird (ein Switch ob ein eigener Redirect greift oder nicht), fehlt aber noch.

Anbei eine Standalone Version des HTML/jQuery Login Scripts (muss nach .html umbenannt werden).

Frage:
Verstehe ich das richtig, das in Deinem logout_redirect.php Script bei einem Session Timeout die Funktion login_page() greift?

Gruss Rundkubus
« Last Edit: December 31, 2009, 07:41:01 AM by rundkubus »

Offline rosali

  • Hero Member
  • *****
  • Posts: 2,533
Ajax Login und Logout Weiterleitung?
« Reply #14 on: January 01, 2010, 10:24:51 AM »
Ich sehe keinen Hook, der bei einem Timeout benutzt werden könnte. Allerdings wird bei einem Timeout auf die Login Page umgeleitet. Insoweist ist die Antwort also "ja". Zu beachten ist aber, dass meine Methode die Login Page komplett sperrt.
Regards,
Rosali
__________________
MyRoundcube Project (commercial)