Ergebnis 1 bis 6 von 6

Thema: Online Buchungssystem MRBS einbinden und contao Member-Authentifizierung nutzen

  1. #1
    Contao-Nutzer
    Registriert seit
    03.11.2015.
    Beiträge
    3

    Standard Online Buchungssystem MRBS einbinden und contao Member-Authentifizierung nutzen

    Liebe Community,

    bin schon seit längerem auf der Suche nach einem contao Buchungssytem, und nun dazu übergegangen das Meeting Room Booking System (MRBS) als iframe einzubinden. Hierbei treten jedoch noch zwei Probleme auf, die ich noch nicht lösen konnte.

    1) Wie kann ich in externen Skripten "Contao-Code" laufen lassen?
    2) Wie kann falls ein Mitglied in Contao bereits eingelogged ist, einen automatischen Login in MRBS machen, ohne dass man sich nochmals einloggen muss?

    1. zu 1) Ich habe bereits die contao-Konfiguration eingebunden, um nicht DB-Verbindungen usw. neu eingebnenzu müssen
      Code:
      require_once('../../system/config/localconfig.php');
      Welche Contao-Files muss ich hierzu einbinden? Welche Schnittstelle mit Contao kann ich hier nutzen? Aber wie kann ich jetzt Contao-Code laufen lassen, um Mitgliederberechtigungen zu überprüfen wie z.B.
      Code:
      if (FE_USER_LOGGED_IN === true) {
          // es gibt einen authentifizierten Frontend-Benutzer
          $objUser = FrontendUser::getInstance();
          if ($objUser->isMemberOf(4)) {  // Gruppe Administratoren
            return 1;      
          }
      }
      }
    2. zu 2) Um zu testen, ob ein Benutzer bereits eingelogged ist, würde ich gerne COOKIES nutzen? Aber auch hier ist mir die genaue Schnittstelle mit Contao nicht klar? Muss ich in der contao config cookies mit name/pass erst setzen? Und per MRBS dann die entsprechenden Infos auslesen?


    Vielen Dank für eure Hilfe,
    Jens

  2. #2
    Contao-Nutzer
    Registriert seit
    03.11.2015.
    Beiträge
    3

    Standard

    Zitat Zitat von Physiklehrer Beitrag anzeigen
    ...die alten Foren-Threads zu diesem Thema enden leider alle nicht sehr zufriedenstellend, von daher würde ich sagen eher nein.

    Ich verwende MRBS (http://mrbs.sourceforge.net/, siehe z.B. auch https://lehrerfortbildung-bw.de/netz...ng/index1.html) parallel zu Contao. Es ist nicht besonders hübsch, tut aber zuverlässig was es soll und würde auch deine Anforderung mit den Mails erfüllen. Es ist aber natürlich nur ein Buchungsssytem ohne Preise und Abrechnung.

    Einen automatischen Login aus dem Contao-Mitgliederbereich heraus habe ich mit dem Session-Modus "cookie" hinbekommen. Prinzipiell kann MRBS auch andere Datenbanken (wie die von Contao) für die Mitgliederverwaltung anzapfen, da Contao das Passwort inzwischen aber stärker verschlüsselt und nicht nur einfach mit md5 hab ich das leider noch nicht hinbekommen.
    Wie genau hast du das mit Session-Modus "cookie" hinbekommen?

  3. #3
    Contao-Nutzer
    Registriert seit
    06.09.2016.
    Beiträge
    125

    Standard

    Hallo Jens,

    als Hintergrundinfo siehe http://mrbs.sourceforge.net/view_tex...AUTHENTICATION

    Letztendlich sind es zwei Probleme:

    1. Authentifizierung
    MRBS muss die Userdaten mit der Contao-Datenbank abgleichen. Bei MRBS gibt es dazu den Modus "db_ext" für externe Datenbank. Da kann man dann die entsprechenden Tabellenspalten, in denen Benutzername und Contao-Passwörter-Hashs stehen sowie deren Verschlüsselungsalgorithmen angeben und MRBS "bedient" sich dann aus der Contao-Datenbank.

    Das habe ich allerdings damals nicht hinbekommen, da Contao die Passwörter deutlich stärker verschlüsselt (mit SALT und so...), vielleicht klappt es mit der neuen MRBS-Version inzwischen aber doch. Ich habe mich dann so beholfen, dass ich die Nutzer manuell anlege, mit gleichem Benutzernamen/Passwort wie in Contao. Ansonsten müsste man im Code von Contao nachschauen wie die Passwörter erzeugt werden und das ganze dann in MRBS nachprogrammieren (ist natürlich nicht update-sicher in MRBS).

    2. Session
    Auch wenn MRBS die Nutzerdaten aus der Contao-Datenbank zieht, muss man sich dort trotzdem als Nutzer nochmal separat anmelden. Um nun single sign on zu realisieren, habe ich in MRBS das Session-Verfahren auf "cookie" gestellt und mir im Quellcode von MRBS (insbesondere die Datei session_cookie.inc im Ordner session) angeschaut, wie der Cookie, der die Session hält, generiert wird. Diesen Code habe ich 1:1 kopiert und in eine PHP-Datei in Contao -> Templates eingefügt. Durch Aufruf dieser PHP-Datei kann ich den Session-Cookie also auch aus Contao heraus erzeugen. Um nun die Nutzerdaten zu übernehmen, ersetze ich den username über die Contao-Funktion $this->replaceInsertTags('{{user::username}}');. Nötige Änderungen sind in Großbuchstaben.

    Code:
    <?php
    /*****************************************************************************\
    *                                                                            *
    *   File name      session_cookie.inc = QUELLE DER NEUPROGRAMMIERUNG!!!!     *
    *                                                                            *
    \*****************************************************************************/
    
    
    	$cookie_path = 'COOKIE-PFAD SIEHE MRBS-CONFIG-Datei';
    	$expiry_time = 0;
        $session_data = array();
        $session_data['user'] = $this->replaceInsertTags('{{user::username}}');
        $session_data['expiry'] = $expiry_time;
        if ($auth['session_cookie']['include_ip'])
        {
          $session_data['ip'] = $REMOTE_ADDR;
        }
    	
        $json_data = json_encode($session_data);
        if (!function_exists('hash_hmac'))
        {
          fatal_error(FALSE, "It appears that your PHP has the hash functions ".
                              "disabled, which are required for the 'cookie' ".
                              "session scheme.");
        }
        $hash = hash_hmac(
                          'sha512',
                          $json_data,
                          'GEHEIMNIS AUS CONFIG-DATEI'
                         );
    
        setcookie("SessionToken",
                  "${hash}_".base64_encode($json_data),
                  $expiry_time,
                  $cookie_path);		  
    ?>
    Das ist aber schon etwas hemdsärmelig, wie es eleganter geht sieht du vermutlich durch Vergleich mit dem Joomla oder Wordpress Authentification Plugin, die es für MRBS schon gibt. Am allerbesten wäre es natürlich, jemand würde ein solches Contao-Plugin für MRBS schreiben...
    Geändert von Physiklehrer (20.04.2017 um 08:15 Uhr)

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.391
    Partner-ID
    10107

    Standard

    Zitat Zitat von DamaskJe Beitrag anzeigen
    1) Wie kann ich in externen Skripten "Contao-Code" laufen lassen?
    Sieh dir einfach die Einstiegspunkte von Contao an:



    Wenn sich dein Script bspw. im Root der Installation befindet:
    PHP-Code:
    <?php

    define
    ('TL_SCRIPT''….php');
    define('TL_MODE''FE');
    require 
    __DIR__ '/system/initialize.php';

    // use Contao API here

  5. #5
    Contao-Nutzer
    Registriert seit
    03.11.2015.
    Beiträge
    3

    Standard

    Es klappt, danke Physiklehrer und Spooky,

    Authentifizierung hat gut über einbinden von Contao-Files geklappt
    Sessionskript konnte ich nach obiger Anleitung auch gut nachbauen!

    Viele Grüße,
    Jens

  6. #6
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Wenn das machbar wäre (kommt ja immer auch auf's Projekt an), würden sich andere bestimmt auch darüber freuen, wenn Du Deinen Code als funktionierendes Beispiel posten könntest. Dankeschön!

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •