bhoernchen
Mitglied
Bei uns sollen Kunden keine zusätzlichen Adressen einrichten können, aber der Administrator sollte dies für den Kunden tun können. Ich unterscheide zwischen Kunden und Administratoren anhand der Funktion isAdmin im Template. Oberflächlich betrachtet ist das recht einfach und funktioniert einwandfrei: Der Kunde kann keine Adresse hinzufügen, aber der Administrator kann dies tun, wenn er gleichzeitig als Kunde eingeloggt ist.
Ich habe das in der TPL Datei --- templates/NOVA-Child/account/shipping_adresse_form so in der art stehen..
So Je nachdem in welcher reinfolge ich mich einlocke. Ändert sich jetzt die Anzeige. wenn ich erst als Kunde und mich dann als Admin einlogge wird der H3 Tag richtig Angezeigt..
wenn umgekehrt mich erst als Admin und mich dann als Kunde einlogge wir der H3 Tag nicht Angezeigt..
Die Funktion liegt in der Shop.php... die Session heißt immer JTLSHOP
Wenn ich beispielsweise die Variablen ausgeben lasse,
print_r($_SESSION['loggedAsAdmin']);
print_r($_SESSION['adminToken']);
steht je nach Reihenfolge des Logins entweder 'Admin/Kunde' oder 'Kunde/Admin' eben die Token drin und die Variable auf loggedAsAdmi=1 oder sie sind halt leer
Soll das so sein und ich mach was verkehrt..
Ich habe das in der TPL Datei --- templates/NOVA-Child/account/shipping_adresse_form so in der art stehen..
{if \JTL\ Shop::isAdmin()}
<h3 class class="adminmarker melder" style="color:#f40d0d45;">Admin Modus <span class="small">(shipping_adresse_form)</span></h3>
{else}
{/if}
So Je nachdem in welcher reinfolge ich mich einlocke. Ändert sich jetzt die Anzeige. wenn ich erst als Kunde und mich dann als Admin einlogge wird der H3 Tag richtig Angezeigt..
wenn umgekehrt mich erst als Admin und mich dann als Kunde einlogge wir der H3 Tag nicht Angezeigt..
Die Funktion liegt in der Shop.php... die Session heißt immer JTLSHOP
public static function isAdmin(bool $sessionSwitchAllowed = false): bool
{
if (\is_bool(self::$logged)) {
return self::$logged;
}
if (\session_name() === 'eSIdAdm') {
// admin session already active
self::$logged = self::Container()->getAdminAccount()->logged();
self::$adminToken = $_SESSION['jtl_token'];
self::$adminLangTag = $_SESSION['AdminAccount']->language;
} elseif (!empty($_SESSION['loggedAsAdmin']) && $_SESSION['loggedAsAdmin'] === true) {
// frontend session has been notified by admin session
self::$logged = true;
self::$adminToken = $_SESSION['adminToken'];
self::$adminLangTag = $_SESSION['adminLangTag'];
self::Container()->getGetText()->setLanguage(self::$adminLangTag);
} elseif ($sessionSwitchAllowed === true
&& isset($_COOKIE['eSIdAdm'])
&& Request::verifyGPDataString('fromAdmin') === 'yes'
) {
// frontend session has not been notified yet
// try to fetch information autonomously
$frontendId = \session_id();
\session_write_close();
\session_name('eSIdAdm');
\session_id($_COOKIE['eSIdAdm']);
\session_start();
self::$logged = $_SESSION['loginIsValid'] ?? null;
if (isset($_SESSION['jtl_token'], $_SESSION['AdminAccount'])) {
$adminToken = $_SESSION['jtl_token'];
$adminLangTag = $_SESSION['AdminAccount']->language;
$_SESSION['frontendUpToDate'] = true;
if (self::$logged) {
self::Container()->getGetText();
}
} else {
$adminToken = null;
$adminLangTag = null;
}
\session_write_close();
\session_name('JTLSHOP');
\session_id($frontendId);
\session_start();
self::$adminToken = $adminToken;
self::$adminLangTag = $adminLangTag;
$_SESSION['adminToken'] = $adminToken;
$_SESSION['adminLangTag'] = $adminLangTag;
$_SESSION['loggedAsAdmin'] = self::$logged;
} else {
// no information about admin session available
self::$logged = null;
self::$adminToken = null;
self::$adminLangTag = null;
}
return self::$logged ?? false;
}
Wenn ich beispielsweise die Variablen ausgeben lasse,
print_r($_SESSION['loggedAsAdmin']);
print_r($_SESSION['adminToken']);
steht je nach Reihenfolge des Logins entweder 'Admin/Kunde' oder 'Kunde/Admin' eben die Token drin und die Variable auf loggedAsAdmi=1 oder sie sind halt leer
Soll das so sein und ich mach was verkehrt..
Zuletzt bearbeitet: