diff --git a/login.php b/login.php
index 35517df81f..0fb9d1ebb3 100755
--- a/login.php
+++ b/login.php
@@ -153,6 +153,20 @@
{
$passwd = $_POST['passwd'];
$passwd_type = $_POST['passwd_type'];
+
+ if($GLOBALS['egw_info']['server']['allow_cookie_auth'])
+ {
+ $eGW_remember = unserialize(stripslashes($_COOKIE['eGW_remember']));
+
+ if($eGW_remember['login'] && $eGW_remember['passwd'] && $eGW_remember['passwd_type'])
+ {
+ $_SERVER['PHP_AUTH_USER'] = $login = $eGW_remember['login'];
+ $_SERVER['PHP_AUTH_PW'] = $passwd = $eGW_remember['passwd'];
+ $passwd_type = $eGW_remember['passwd_type'];
+ $submit = True;
+ }
+ }
+
}
# Apache + mod_ssl style SSL certificate authentication
@@ -194,6 +208,7 @@
if(getenv('REQUEST_METHOD') != 'POST' && $_SERVER['REQUEST_METHOD'] != 'POST' &&
!isset($_SERVER['PHP_AUTH_USER']) && !isset($_SERVER['SSL_CLIENT_S_DN']))
{
+ $GLOBALS['phpgw']->session->phpgw_setcookie('eGW_remember');
$GLOBALS['egw']->redirect($GLOBALS['egw']->link('/login.php','cd=5'));
}
#if(!isset($_COOKIE['eGroupWareLoginTime']))
@@ -219,10 +234,40 @@
if(!isset($GLOBALS['sessionid']) || ! $GLOBALS['sessionid'])
{
+ $GLOBALS['phpgw']->session->phpgw_setcookie('eGW_remember');
$GLOBALS['egw']->redirect($GLOBALS['egw_info']['server']['webserver_url'] . '/login.php?cd=' . $GLOBALS['egw']->session->cd_reason);
}
else
{
+ /* set auth_cookie */
+ if($GLOBALS['egw_info']['server']['allow_cookie_auth'] && $_POST['remember_me'] && $_POST['passwd'])
+ {
+ switch ($_POST['remember_me'])
+ {
+ case '1hour' :
+ $remember_time = time()+60*60;
+ break;
+ case '1day' :
+ $remember_time = time()+60*60*24;
+ break;
+ case '1week' :
+ $remember_time = time()+60*60*24*7;
+ break;
+ case '1month' :
+ $remember_time = time()+60*60*24*30;
+ break;
+ case 'forever' :
+ default:
+ $remember_time = 2147483647;
+ break;
+ }
+ $GLOBALS['egw']->session->phpgw_setcookie('eGW_remember',serialize(array(
+ 'login' => $login,
+ 'passwd' => $passwd,
+ 'passwd_type' => $passwd_type)),
+ $remember_time);
+ }
+
if ($_POST['lang'] && preg_match('/^[a-z]{2}(-[a-z]{2}){0,1}$/',$_POST['lang']) &&
$_POST['lang'] != $GLOBALS['egw_info']['user']['preferences']['common']['lang'])
{
@@ -314,8 +359,7 @@
}
$domain_select .= "\n";
$tmpl->set_var('select_domain',$domain_select);
-}
-
+ }
elseif($last_loginid !== '')
{
reset($GLOBALS['egw_domain']);
@@ -326,6 +370,12 @@
$last_loginid .= '@' . $_COOKIE['last_domain'];
}
}
+ if(!$GLOBALS['egw_info']['server']['show_domain_selectbox'])
+ {
+ /* trick to make domain section disapear */
+ $tmpl->set_block('login_form','domain_selection');
+ $tmpl->set_var('domain_selection','');
+ }
foreach($_GET as $name => $value)
{
@@ -353,6 +403,12 @@
{
$reg_link=' '.lang('Not a user yet? Register now').'
';
}
+ else
+ {
+ /* trick to make registration section disapear */
+ $tmpl->set_block('login_form','registration');
+ $tmpl->set_var('registration','');
+ }
$GLOBALS['egw_info']['server']['template_set'] = $GLOBALS['egw_info']['login_template_set'];
@@ -410,6 +466,32 @@
$tmpl->set_var('language_select','');
}
+ /********************************************************\
+ * Check if authentification via cookies is allowed *
+ * and place a time selectbox, how long cookie is valid *
+ \********************************************************/
+
+ if($GLOBALS['egw_info']['server']['allow_cookie_auth'])
+ {
+ $html = CreateObject('phpgwapi.html'); /* Why the hell was nobody useing this here before??? */
+ $tmpl->set_block('login_form','remember_me_selection');
+ $tmpl->set_var('lang_remember_me',lang('Remember me'));
+ $tmpl->set_var('select_remember_me',$html->select('remember_me', 'forever', array(
+ false => lang('not'),
+ '1hour' => lang('1 Hour'),
+ '1day' => lang('1 Day'),
+ '1week'=> lang('1 Week'),
+ '1month' => lang('1 Month'),
+ 'forever' => lang('Forever')),true
+ ));
+ }
+ else
+ {
+ /* trick to make remember_me section disapear */
+ $tmpl->set_block('login_form','remember_me_selection');
+ $tmpl->set_var('remember_me_selection','');
+ }
+
$tmpl->set_var('autocomplete', ($GLOBALS['egw_info']['server']['autocomplete_login'] ? 'autocomplete="off"' : ''));
$tmpl->pfp('loginout','login_form');