Extended Validation

Beispielszenario

Neben der in positionIt integrierten Validierung sollen Username und Passwort zusätzlich per Businesslogik validiert werden. Die angegebenen Daten sollen mit den in Typo3 angelegten Frontend Usern verglichen werden.

Voraussetzungen

  1. Ein Businesslogik Objekt vom Typ "Zusätzliche Prozessschritt Validierung" wurde angelegt
  2. Folgende Daten sind dort hinterlegt:
    • Pfad: z.b. fileadmin/example/DynamicValidation.php
    • Klasse: DynamicValidation
    • Methode: validateFEUser

Die Quellcodedatei kann hier heruntergeladen werden: Download (Wichtig: die Datei muss in den im Businesslogik Objekt angegebenen Pfad kopiert werden)

Aus den übergebenen Sessiondaten werden die Eingaben des Users gelesen. Danach werden der Username sowie das Passwort mit den Daten der Tabelle fe_users verglichen. Gibt es keinen Treffer wird eine zusätzliche Fehlermeldung erzeugt, die im Fehlermeldungsobjekt mit der ID 34 ausgegeben wird.
Die Fehlermeldung wird mit dem Kommando addError an positionIt zurückgegeben.

  1. class DynamicValidation {
  2.  
  3. public function validateFEUser($processId, $pre_stepid,
  4. $cur_stepid, $sessiondata, $htmlcode) {
  5.  
  6. $processId = 3;
  7. $stepId = 14;
  8. $userNameFieldId = 56;
  9. $userPasswordId = 57;
  10.  
  11. $userName = $sessiondata[$processId][$stepId][$userNameFieldId];
  12. $userPassword = $sessiondata[$processId][$stepId][$userPasswordId];
  13.  
  14. // select all data records where the username and password match
  15. $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('count(*) as count',
  16. 'fe_users', "username = '$userName' AND password = '$userPassword'");
  17. $row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);
  18.  
  19. $command = array();
  20. // if there is at least one data record, the user may be valid ;)
  21. if ($row['count'] == 0) {
  22. // define an error by setting css id and a message
  23. $command['addError']['errorObjId'] = 'formtext1';
  24. $command['addError']['message'] = "username/password invalid";
  25. // The following commands are optional and can be used to modify the appearance of the error message
  26. $command['addError']['layout']['msgPos'] = 'right center';
  27. $command['addError']['layout']['msgObjPos'] = 'left center';
  28. $command['addError']['layout']['jsalert'] = 0; // if 1, it is displayed as a javascriptalert
  29. }
  30.  
  31. // finally, return the command
  32. return array($command);
  33. }
  34. }
© 2017 Ososoft GmbH