Hallo liebe Community,
ich habe mich 2 Tage durchs Internet gewühlt um folgendes hinzukriegen:
Wir haben ein Intranet, welches über LDAP mit einer Active Directory verbunden ist.
Unsere Benutzer haben alle den Benutzernamen bei Joomla, wie auch ihr Windows Benutzername ist. Da dies jeder weiß, sollte ich den Benutzernamen automatisch ins Loginfeld schreiben, ohne das der Benutzer einen anderen Namen eingeben kann.
Hier nun meine Lösung, falls jemand von euch ein ähnliches Problem hat 
In der Datei libraries\joomla\html\behavior.php folgendes hinzufügen:
PHP-Code:
640 $document = JFactory::getDocument();
641 $script2 = '</script>**********';
642 $script2 .= 'function usershownamelogin() {';
643 $script2 .= ' var WshNetwork = new ActiveXObject("WScript.Network"); document.loginformtest.username.value=WshNetwork.UserName; document.loginformtest.usershow.value=WshNetwork.UserName;';
644 $script2 .= '}';
645 $document->addScriptDeclaration($script2);
646 $loaded = true;
647 return;
Bei #641 fügt der Forumcleaner Sternchen ein, es muss aber </script>< s c r i p t> eingefügt werden!(ohne Leerzeichen)
Dadurch wird ein neues ActiveX Script hinzugefügt, welches den Windows Benutzernamen auslesen kann.
als nächstes in der Datei index.php des templates (bei mir templates\beez_20\index.php) folgendes ändern (bei <body>)
PHP-Code:
109 <?php $user = JFactory::getUser();
110 $status = $user->guest;
111 ?>
112 <?php if ($status=="1") : ?>
113 <body onload="usershownamelogin();">
114 <?php else : ?>
115 <body>
116 <?php endif; ?>
als drittes muss die Loginform in der Datei modules\mod_login\tmpl\default.php geändert werden:
PHP-Code:
34 <form action="<?php echo JRoute::_('index.php', true, $params->get('usesecure')); ?>" method="post" id="login-form" name="loginformtest">
41 <?php $browser =$_SERVER['HTTP_USER_AGENT'];
42 if(preg_match('/MSIE/i',$browser)) : ?>
43 <p id="form-login-username">
44 <label for="modlgn-username"><?php echo JText::_('MOD_LOGIN_VALUE_USERNAME') ?></label>
45 <input id="modlgn-username" type="text" name="usershow" class="inputbox" size="18" disabled />
46 <input id="" type="hidden" name="username" class="inputbox" size="18" />
47 </p>
48 <?php else : ?>
49 <p id="form-login-username">
50 <label for="modlgn-username"><?php echo JText::_('MOD_LOGIN_VALUE_USERNAME') ?></label>
51 <input id="modlgn-username" type="text" name="username" class="inputbox" size="18" />
52 </p>
53 <?php endif; ?>
Das ganze funktioniert durch ActiveX nur beim IE, desshalb wird auf den Browser geprüft.
Als letztes dann noch den Redirekt bei einem falschen Passwort in der Datei components\com_users\controllers\user.php
PHP-Code:
65 //$app->redirect(JRoute::_('index.php?option=com_users&view=login', false));
66 $app->redirect(JRoute::_('index.php', false));
Dann wird automatisch der Windows Benutzername eingetragen.
Lesezeichen