Registrator
Die Registrierungs-API erlaubt es Modulen, QUIQQER mit eigenen Registrierungsmethoden zu erweitern. Die E-Mail Registrierung wird von dem Frontend-Users Modul standardmäßig mitgeliefert.
Ablauf einer Registrierung
Neuen Registrator realisieren
Ein Registrator ist eine Registrierungsklasse welche ein Benutzer am QUIQQER System registriert.
Vorgehensweise:
Erweitern Sie die package.xml um einen Provider Eintrag. Das src Attribut gibt an, wie Ihr neuer Registrator aufgerufen werden kann.
<quiqqer>
<package>
<!-- .... PAKET DATEN -->
<provider>
<registrator src="QUI\FrontendUsers\Registrars\Email\Registrator" />
</provider>
</package>
</quiqqer>
Registrator Provider realisieren
Ein Registrator muss immer von QUI\FrontendUsers\FrontendUsers\AbstractRegistrator
erben. Die AbstractRegistrator Klasse implementiert das Interface QUI\FrontendUsers \RegistratorInterface
. Dieses Interface legt einige Methoden fest welche Ihr Registrator beinhalten muss.
Folgende Methoden benötigt Ihr Registrator.
- public function validate();
- public function getUsername();
- public function getControl();
- public function onRegistered(QUI\Interfaces\Users\User $User);
Ein Grundgerüst für einen Registrator könnte also so aussehen:
<?php
/**
* This file contains QUI\FrontendUsers\Registrars\Email\Registrator
*/
namespace QUI\FrontendUsers\Registrars\Email;
use QUI;
use QUI\FrontendUsers;
/**
* Class EMail
*
* @package QUI\FrontendUsers\Registrars
*/
class Registrator extends FrontendUsers\AbstractRegistrator
{
/**
* @param QUI\Interfaces\Users\User $User
* @return int
*/
public function onRegistered(QUI\Interfaces\Users\User $User)
{
}
/**
* @throws FrontendUsers\Exception
*/
public function validate()
{
}
/**
* @return string
*/
public function getUsername()
{
}
/**
* @return Control
*/
public function getControl()
{
}
}
getUsername
Die getUsername
Methode benötigt der Registrator um den Benutzer am System erstellen können. Geben Sie hier bitte an welche Daten dem Benutzernamen entsprechen.
Beispiel:
/**
* @return string
*/
public function getUsername()
{
$data = $this->getAttributes();
if (isset($data['username'])) {
return $data['username'];
}
if (isset($data['email'])) {
return $data['email'];
}
return '';
}
onRegistered
Mit diese Methode können Sie auf eine Registrierung reagieren. Wenn alle Daten geprüft wurden ein neuer Benutzer am System angelegt wurde, wird diese Methode vom Registrierungsprozess aufgerufen.
Zusätzlich mpssen Sie in der onRegistered Methode einen Registrierungsstatus zurück geben. hier können Sie unter anderem bestimmen das es sich um ein asynchronen Registrierungsprozess handelt.
Folgende Prozesstatus stehen Ihnen zur Verfügung:
- QUI\FrontendUsers\Handler::REGISTRATION_STATUS_ERROR
- QUI\FrontendUsers\Handler::REGISTRATION_STATUS_SUCCESS
- QUI\FrontendUsers\Handler::REGISTRATION_STATUS_PENDING (asynchroner Prozess)
Zusätzlich können Sie dem Benutzer weitere Eigenschaften zuweisen oder ändern.
Beispiel für einen Asynchronen Registrierungs Prozess:
Ein Beispiel wäre eine E-Mail Authentifizierung. Möchten Sie den neu erstellten Benutzer zum Beispiel über eine E-Mail authentifizieren, können Sie in der onRegistered eine Authentifizieriungs E-Mail verwenden. Zusätzlich geben Sie als return Wert QUI\FrontendUsers\Handler::REGISTRATION_STATUS_PENDING
zurück.
Möchten Sie einen synchronen Registrierungsprozess umsetzen, müssen Sie den Benutzer aktivieren.
$User->activate(QUI::getUsers()->getSystemUser());
return QUI\FrontendUsers\Handler::REGISTRATION_STATUS_PENDING;
validate
Die Validate Methode validiert die gesendeten Daten vom Benutzer. Die Validate Methode nutzt hierbei QUI\FrontendUsers\Exception
.
Beispiel einer Validate Methode:
/**
* @throws FrontendUsers\Exception
*/
public function validate()
{
$username = $this->getUsername();
if (empty($username)) {
throw new FrontendUsers\Exception(array(
'quiqqer/frontend-users',
'exception.empty.username'
));
}
$email = $this->getAttribute('email');
$emailConfirm = $this->getAttribute('emailConfirm');
if ($email != $emailConfirm) {
if (empty($username)) {
throw new FrontendUsers\Exception(array(
'quiqqer/frontend-users',
'exception.different.emails'
));
}
}
$password = $this->getAttribute('password');
$passwordConfirm = $this->getAttribute('passwordConfirm');
if ($password != $passwordConfirm) {
if (empty($username)) {
throw new FrontendUsers\Exception(array(
'quiqqer/frontend-users',
'exception.different.passwords'
));
}
}
}
getControl
Die getControl
Methode gibt das zuständige Control (Oberfläche) zur Darstellung Ihrer Registrierung zurück. hier können Sie Formularfelder, Buttons, HTML bestimmen welches Ihren Registrierungsprozess startet.