diff options
author | rvelices <rv-github@modusoptimus.com> | 2006-10-21 20:16:01 +0000 |
---|---|---|
committer | rvelices <rv-github@modusoptimus.com> | 2006-10-21 20:16:01 +0000 |
commit | 641d335cff78b6e04c625ad3679547b73c1bb829 (patch) | |
tree | 9ec2e38e6b42d59e4050d8fd5865517dcd760e5c /include/functions_user.inc.php | |
parent | 8d7aa23a8e160c27bec20a21051b2d26217bcec9 (diff) |
merge -r1568 from trunk to branch-1_6 (auto_login/redirect corrections)
git-svn-id: http://piwigo.org/svn/branches/branch-1_6@1572 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/functions_user.inc.php')
-rw-r--r-- | include/functions_user.inc.php | 105 |
1 files changed, 83 insertions, 22 deletions
diff --git a/include/functions_user.inc.php b/include/functions_user.inc.php index ba085127f..0a3991574 100644 --- a/include/functions_user.inc.php +++ b/include/functions_user.inc.php @@ -104,6 +104,54 @@ function setup_style($style) return new Template(PHPWG_ROOT_PATH.'template/'.$style); } + +function build_user( $user_id, $use_cache ) +{ + global $conf; + $user['id'] = $user_id; + $user = array_merge( $user, getuserdata($user_id, $use_cache) ); + if ( $user['id'] == $conf['guest_id']) + { + $user['is_the_guest']=true; + $user['template'] = $conf['default_template']; + $user['nb_image_line'] = $conf['nb_image_line']; + $user['nb_line_page'] = $conf['nb_line_page']; + $user['language'] = $conf['default_language']; + $user['maxwidth'] = $conf['default_maxwidth']; + $user['maxheight'] = $conf['default_maxheight']; + $user['recent_period'] = $conf['recent_period']; + $user['expand'] = $conf['auto_expand']; + $user['show_nb_comments'] = $conf['show_nb_comments']; + $user['enabled_high'] = $conf['newuser_default_enabled_high']; + } + else + { + $user['is_the_guest']=false; + } + // calculation of the number of picture to display per page + $user['nb_image_page'] = $user['nb_image_line'] * $user['nb_line_page']; + + // include template/theme configuration + if (defined('IN_ADMIN') and IN_ADMIN) + { + list($user['template'], $user['theme']) = + explode + ( + '/', + isset($conf['default_admin_layout']) ? $conf['default_admin_layout'] + : $user['template'] + ); + // TODO : replace $conf['admin_layout'] by $user['admin_layout'] + } + else + { + list($user['template'], $user['theme']) = explode('/', $user['template']); + } + + return $user; +} + + /** * find informations related to the user identifier * @@ -458,7 +506,7 @@ function create_user_infos($user_id) { $status = 'normal'; } - + $insert = array( 'user_id' => $user_id, @@ -556,13 +604,13 @@ function log_user($user_id, $remember_me) { // search for an existing auto_login_key $query = ' -SELECT auto_login_key +SELECT auto_login_key FROM '.USERS_TABLE.' WHERE '.$conf['user_fields']['id'].' = '.$user_id.' ;'; - + $auto_login_key = current(mysql_fetch_assoc(pwg_query($query))); - if (empty($auto_login_key)) + if (empty($auto_login_key)) { $auto_login_key = base64_encode(md5(uniqid(rand(), true))); $query = ' @@ -574,45 +622,58 @@ UPDATE '.USERS_TABLE.' } $cookie = array('id' => $user_id, 'key' => $auto_login_key); setcookie($conf['remember_me_name'], - serialize($cookie), + serialize($cookie), time()+$conf['remember_me_length'], cookie_path() ); } - session_start(); + else + { // make sure we clean any remember me ... + setcookie($conf['remember_me_name'], '', 0, cookie_path()); + } + if ( session_id()!="" ) + { // this can happpen when the session is expired and auto_login + session_regenerate_id(); + } + else + { + session_start(); + } $_SESSION['pwg_uid'] = $user_id; $user['id'] = $_SESSION['pwg_uid']; - $user['is_the_guest'] = false; } /* * Performs auto-connexion when cookie remember_me exists - * @return void + * @return true/false */ -function auto_login() { +function auto_login() { global $conf; - // must remove slash added in include/common.inc.php - $cookie = unserialize(stripslashes($_COOKIE[$conf['remember_me_name']])); + if ( isset( $_COOKIE[$conf['remember_me_name']] ) ) + { + // must remove slash added in include/common.inc.php + $cookie = unserialize(stripslashes($_COOKIE[$conf['remember_me_name']])); - $query = ' + $query = ' SELECT auto_login_key FROM '.USERS_TABLE.' WHERE '.$conf['user_fields']['id'].' = '.$cookie['id'].' ;'; - $auto_login_key = current(mysql_fetch_assoc(pwg_query($query))); - if ($auto_login_key == $cookie['key']) - { - log_user($cookie['id'], false); - redirect(make_index_url()); + $auto_login_key = current(mysql_fetch_assoc(pwg_query($query))); + if ($auto_login_key == $cookie['key']) + { + log_user($cookie['id'], true); + return true; + } + else + { + setcookie($conf['remember_me_name'], '', 0, cookie_path()); + } } - else - { - setcookie($conf['remember_me_name'], '', 0, cookie_path()); - redirect(make_index_url()); - } + return false; } /* |