Baustelle:Intranet mit Windows Benutzernamen
Um in einem Intranet, welches über LDAP mit einer Active Directory verbunden ist, den Windows Benutzernamen automatisch als Benutzernamen einzutragen, ohne das der Benutzer ihn ändern kann, müssen 4 Dateien bearbeitet werden.
Die Eintragung funktioniert nur mit dem Internet Explorer mit Aktiviertem ActiveX, andere Browser unterstützen dies nicht
<head> ... <?php if('msie' == JBrowser::getInstance()->getBrowser() && JFactory::getUser()->guest) : ?> <script type="text/javascript">window.addEvent('domready', function usershownamelogin(){ var WshNetwork = new ActiveXObject('WScript.Network'); document.id('modlgn-username').value = WshNetwork.UserName; }); </script> <?php endif; ?> </head>
Wichtig ist dabei, das Script ganz am Ende des <head> Tags zu schreiben, da sonst Fehler auftreten können
Dadurch wird ein neues ActiveX Script hinzugefügt, welches den Windows Benutzernamen auslesen kann.
als nächstes in der Datei index.php des templates (als Beispiel templates\beez_20\index.php) folgendes ändern (bei <body>)
templates\TEMPLATE\
index.php
<?php $user = JFactory::getUser(); $status = $user->guest; ?> <?php if ($status=="1") : ?> <body onload="usershownamelogin();"> <?php else : ?> <body> <?php endif; ?>
Dadurch wird bei allen Gästen, die noch nicht angemeldet sind, automatisch das ActiveX Script aufgerufen. Wenn der Benutzer angemeldet ist, wird die Funktion nicht aufgerufen, da kein Loginfeld vorhanden ist und es sonst Fehler geben würde.
Als drittes muss die Loginform in der Datei modules\mod_login\tmpl\default.php geändert werden:
Die Datei
modules\mod_login\tmpl\
default.php
wird kopiert nach:
templates\TEMPLATE\html\mod_login\
default.php
und folgendermassen geändert:
<p id="form-login-username"> <label for="modlgn-username"><?php echo JText::_('MOD_LOGIN_VALUE_USERNAME') ?></label> <?php if('msie' == JBrowser::getInstance()->getBrowser()) :?> <input id="modlgn-username-show" type="hidden" name="username-show" /> <input id="modlgn-username" type="text" class="inputbox" size="18" name="username" readonly /> <?php else : ?> <input id="modlgn-username" type="text" name="username" class="inputbox" size="18" /> <?php endif; ?> </p>
Das ganze funktioniert durch ActiveX nur beim IE, desshalb wird auf den Browser geprüft. Wenn der Internet Explorer gefunden wurde, wird ein neues Forumlarfeld erstellt, dieses aber direkt auf readonly gesetzt, damit der Benutzer keinen anderen Namen eintragen kann.
Um auch die Felder anzupassen, welche bei falscher Passworteingabe angezeigt werden, muss noch folgendes geändert werden:
Die Datei
components\com_users\views\login\tmpl\
default_login.php
wird kopiert nach:
templates\TEMPLATE\html\com_users\login\
default_login.php
und folgendermassen geändert:
<?php foreach ($this->form->getFieldset('credentials') as $field): ?> <?php if('username' == $field->name && 'msie' == JBrowser::getInstance()->getBrowser()) : ?> <div class="login-fields"><?php echo $field->label; ?> <input id="modlgn-username" type="text" name="username" class="inputbox" size="18" readonly /> <p id="form-login-password"> <label for="modlgn-passwd"><?php echo JText::_('JGLOBAL_PASSWORD') ?></label> <input id="modlgn-passwd" type="password" name="password" class="inputbox" size="18" /> </p> </div> <?php continue; ?> <?php endif; ?> <?php endforeach; ?>
Nun müssen sich Windows Benutzer mit ihren Windows Benutzernamen anmelden.
[Bearbeiten] Bemerkungen
ActiveX ist standartmäßig deaktiviert und sollte auch nur für das Intranet freigeschaltet werden. Fügen sie ihre Intranetseite zu den Vertrauenswürdigen Seiten hinzu und ändern sie die Sicherheitseinstellungen für vertrauenswürdige Seiten.
Die Funktion zum aktivieren finden Sie unter Extras > Internetoption dort im Reiter Sicherheit.
WICHTIG!!! Wie bereits geschrieben, nur im Lokalen Intranet bzw. auf der Vertrauenswürdigen Site aktivieren
In den Sicherheitseinstellungen dann auf Stufe anpassen und dort
"ActiveX-Steuerelemente initialisieren und ausführen, die nicht als "sicher für Scripting" markiert sind" Aktivieren.
Wird dies nicht gemacht, kann über den Internet Explorer kein Benutzername eingetragen werden, da das Benutzerfeld leer ist.