Skip to content

Commit

Permalink
YForm Email Template ergänzt und Doku angepasst
Browse files Browse the repository at this point in the history
  • Loading branch information
dergel committed Nov 15, 2024
1 parent 454bbb8 commit 9c3f1c3
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 36 deletions.
39 changes: 12 additions & 27 deletions docs/10_otp.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,46 +6,26 @@ Zunächst muss die Konfiguration in den YCom Einstellungen vorgenommen werden. D

## Benötigte Artikel

Es werden 2 REDAXO Artikel benötigt. Ein Setup-Artikel um die OTP Authentifizierung zu aktivieren und einen Artikel für die Überprüfung des OTP Codes. Diese werden immer entsprechende der aktuellen Usersituation aufgerufen. Z.B. wenn wenn ein User sich gerade eingeloggt hat und eine OTP Authentifizierungen erzwungen wird, wird auf den Setup oder die Verifizierung weitergeleitet.
Es wird 1 REDAXO Artikel benötigt. Dieser führt das initale SetUp und auch die Verifizierung durch. Dieser Artikel muss in der Einstellungseite verlinkt sein

### Artikel für das OTP Setup

Im OTP Artikel das YForm Builder Modul verwenden und diesen YFormCode einsetzen.
Im OTP Artikel das YForm Builder Modul verwenden und diesen YFormCode einsetzen. Rechte müssen auf "Zugriff für eingeloggte User" gesetzt sein.

```
ycom_auth_otp|setup
```

### Artikel für die OTP Verifizierung

Im OTP Artikel das YForm Builder Modul verwenden und diesen YFormCode einsetzen.

```
ycom_auth_otp|verify
```











## Einleitung

Die 2-Faktor-Authentifizierung (2FA) ist eine zusätzliche Sicherheitsebene für Ihr Konto. Sie schützt Ihr Konto vor unbefugtem Zugriff, selbst wenn Ihr Passwort kompromittiert wurde.

Die 2FA ist eine Authentifizierungsmethode, bei der zwei verschiedene Faktoren verwendet werden, um die Identität einer Person zu bestätigen. In der Regel sind dies:
Die 2FA ist eine Authentifizierungsmethode, bei der zwei verschiedene Faktoren verwendet werden, um die Identität einer Person zu bestätigen.

Hier werden 2 Möglichkeiten angeboten.

1. **Etwas, das Sie wissen**: Ihr Passwort
2. **Etwas, das Sie besitzen**: Ihr Smartphone
3. **Etwas, das Sie sind**: Ihr Fingerabdruck
4. **Etwas, das Sie tun**: Ihre Stimme
5. **Etwas, das Sie haben**: Ein Sicherheitsschlüssel
6. **Etwas, das Sie sind**: Ihr Gesicht
* One Time Passwort über E-Mail.
* One Time Passwort über (Google) Authenticator.

Die 2FA ist eine der besten Möglichkeiten, um Ihr Konto zu schützen, da sie sicherstellt, dass nur Sie auf Ihr Konto zugreifen können, selbst wenn jemand Ihr Passwort kennt.

Expand All @@ -67,3 +47,8 @@ In REDAXO kann die 2FA z.B. mit dem AddOn YCom umgesetzt werden. Dazu müssen Si

Die 2FA bietet eine zusätzliche Sicherheitsebene für Ihr REDAXO-Konto und schützt es vor unbefugtem Zugriff. Wir empfehlen daher, die 2FA zu aktivieren, um Ihr Konto zu schützen.

## E-Mail Template

Standardmäßig wird eine vorbereitete E-Mail mit festem Text verschickt.

Es kann aber ein eigenes YForm-Template für die 2FA verwendet. Mit dem Key ```ycom_otp_code_template``` kann ein eigenes Template gesetzt wird. Folgende Werte sind verfügbar: ```name, email, firstname, code```.
35 changes: 26 additions & 9 deletions plugins/auth/lib/otp/method_email.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,38 @@

final class rex_ycom_otp_method_email implements rex_ycom_otp_method_interface
{
public static string $yform_email_template_key = 'ycom_otp_code_template';

public function challenge(string $provisioningUrl, rex_ycom_user $user): void
{
$mail = new rex_mailer();

$otp = Factory::loadFromProvisioningUri($provisioningUrl);
$otpCode = $otp->at(time());

$mail->addAddress($user->getValue('email'));
$mail->Subject = 'OTP-Code: (' . $_SERVER['HTTP_HOST'] . ')';
$mail->isHTML();
$mail->Body = '<style>body { font-size: 1.2em; text-align: center;}</style><h2>' . rex::getServerName() . ' Login verification</h2><br><h3><strong>' . $otpCode . '</strong></h3><br> is your 2 factor authentication code.';
$mail->AltBody = " Login verification \r\n ------------------ \r\n" . $otpCode . "\r\n ------------------ \r\nis your 2 factor authentication code.";
if ($ycom_otp_code_template = rex_yform_email_template::getTemplate(self::$yform_email_template_key)) {
$values = [];
$values['email'] = $user->getValue('email');
$values['name'] = $user->getValue('name');
$values['firstname'] = $user->getValue('firstname');
$values['code'] = $otpCode;

$yform_email_template = rex_yform_email_template::replaceVars($ycom_otp_code_template, $values);
$yform_email_template['mail_to'] = $user->getValue('email');
$yform_email_template['mail_to_name'] = $user->getValue('name');

if (!rex_yform_email_template::sendMail($yform_email_template, self::$yform_email_template_key)) {
throw new Exception('Unable to send email via Template. Make sure to setup the phpmailer AddOn.');
}
} else {
$mail = new rex_mailer();
$mail->addAddress($user->getValue('email'));
$mail->Subject = 'OTP-Code: (' . $_SERVER['HTTP_HOST'] . ')';
$mail->isHTML();
$mail->Body = '<style>body { font-size: 1.2em; text-align: center;}</style><h2>' . rex::getServerName() . ' Login verification</h2><br><h3><strong>' . $otpCode . '</strong></h3><br> is your 2 factor authentication code.';
$mail->AltBody = " Login verification \r\n ------------------ \r\n" . $otpCode . "\r\n ------------------ \r\nis your 2 factor authentication code.";

if (!$mail->send()) {
throw new Exception('Unable to send e-mail. Make sure to setup the phpmailer AddOn.');
if (!$mail->send()) {
throw new Exception('Unable to send email. Make sure to setup the phpmailer AddOn.');
}
}
}

Expand Down

0 comments on commit 9c3f1c3

Please sign in to comment.