Zum Inhalt

Modul: appRIORI (Maklervertrag-Generator)

Stand

Code-Analyse vom 2026-04-22 gegen sachpool.de, WebEdition 9.2.3, PHP 8.3.

Zweck

appRIORI ist ein externer Dienst, der Maklervertrags-Dokumente generiert („in 3 Klicks zum Maklervertrag"). Sachpool hat eine SSO-Integration: der Vermittler klickt im Portal → wird transparent an appRIORI weitergeleitet mit übertragenen Makler- und Mandanten-Daten.

Zwei Aufrufpunkte:

  • Als Vergleichsportal (Klasse software-tools, Badge INKLUSIVE)
  • Als Service-Tool (Quicklink auf Dashboard)

Template

Ein einziges Haupttemplate:

Tpl-ID Pfad ModDate
194 sachpool-portal/appriori/appriori.tmpl 2022-06-27

Unter-Ordner sachpool-portal/appriori/ enthält nur dieses Template (plus evtl. Helfer).

Einstiegspunkte

Doc-ID Pfad
/_login/vergleichsportale/appriori-570.php (über Objekt-Klasse software-tools id 570)
/_login/produkte/beratungsassistenten.php (Quicklink)

Integrations-Mechanik

SSO via REST-API an https://ssl.app-riori.de/rest/rest.svc/auth/sso.

Daten-Mapping

Aus den $sach_*-Variablen (kommen aus authorization.tmpl) wird ein JSON-Request zusammengebaut mit drei Blöcken:

$request = [
    'auth' => [
        'guid'          => $api_key,          // 🔴 hardcoded API-Key
        'sponsorID'     => $api_id,           // 🔴 hardcoded (89520)
        'rgnr'          => $sach_ihk_nr,      // Pflicht! IHK-Nummer
        'typeID'        => 4834,              // Hardcoded
        'fct'           => 'ssochk',
    ],
    'berater' => [                            // Makler
        'Anrede'  => $sach_anrede,
        'Vorname' => $sach_forename,
        'Name'    => $sach_surname,
        'Name2'   => $sach_firma,             // Firmenname
        'Strasse' => $sach_strasse . ' ' . $sach_nr,
        'Ort'     => $sach_ort,
        'PLZ'     => $sach_plz,
        'eMail'   => $sach_mail,
        'Telefon' => $sach_tel,
        'KdNr'    => $sach_ihk_nr,
    ],
    'mandant' => [ /* gleiche Felder nochmal */ ],
    'document' => ['ID' => '4022'],           // Hardcoded Dokument-Template
];

Fallback-Logik

Wenn Vermittlerdaten unvollständig sind:

  • Anrede nicht Herr/Frau → „Firma"
  • Leerer sach_surname und leerer sach_firma → „Unbekannt"
  • Leere sach_strasse → „Unbekannt"
  • Leere sach_plz → „00000"
  • Leere sach_ort → „Unbekannt"

Pflichtfeld IHK-Nummer

if (strlen($rgnr) == 0) {
    echo '<div>Fehler! Sie haben keine Registernummer hinterlegt.</div>';
    // Abbruch — keine SSO-Anfrage
}

Ergebnis

Erfolg: API liefert redirect-URL → JS window.open(redirect, '_self').

Fehler: Text-Output + print_r($manage) + print_r($request) — 🔴 leakt API-Credentials und Request-Daten ins HTML (siehe Handlungsempfehlungen).

Bekannte Altlasten

→ interne Datei HANDLUNGSEMPFEHLUNGEN.md im Repo-Root

  • 🔴 Hardcodierte Credentials ($api_key, $api_id)
  • 🔴 Debug-Leak im Fehlerpfad (print_r von Request und Response)
  • 🟢 Auskommentierte TEST-Credentials im Template (unschön, aber keine aktiven Secrets)

Siehe auch