X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=application%2Fcontrollers%2Fuser.php;h=169d5d2bf29abac077adf06a6324e0e453a08753;hb=refs%2Fheads%2Fmaster;hp=169fa4602b8c11a42bf2ed20232ef8a64aa67684;hpb=6db375a0706b5328fbd53be4dd2e517c96560ea6;p=living-lab-site.git
diff --git a/application/controllers/user.php b/application/controllers/user.php
index 169fa46..169d5d2 100644
--- a/application/controllers/user.php
+++ b/application/controllers/user.php
@@ -26,7 +26,31 @@ class User extends CI_Controller {
public function test($user_id = 1)
{
-
+// echo extension_loaded('gd') ? 'gd' : 'nu';
+ }
+
+ // DEBUG
+ public function show_session()
+ {
+ if (ENVIRONMENT == 'production')
+ die();
+
+ var_dump($this->session->all_userdata());
+ }
+ // DEBUG
+ public function destroy_session()
+ {
+ if (ENVIRONMENT == 'production')
+ die();
+
+ $this->session->sess_destroy();
+ }
+
+ public function ajax_get_captcha()
+ {
+ $this->load->library('captcha');
+ $captcha = $this->captcha->get_captcha();
+ echo $captcha['image'];
}
/**
@@ -39,11 +63,22 @@ class User extends CI_Controller {
public function login($redirect = '')
{
$this->load->library('form_validation');
-
$this->form_validation->set_error_delimiters('',
'');
+
+ // Normal or OpenID login?
+ if ($this->input->post('openid') !== FALSE)
+ $b_openid = TRUE;
+ else
+ $b_openid = FALSE;
+ // Validate the correct form.
+ $res_form_validation = FALSE;
+ if (!$b_openid)
+ $res_form_validation = $this->form_validation->run('login');
+ else
+ $res_form_validation = $this->form_validation->run('login_openid');
- if ($this->form_validation->run('login') === FALSE)
+ if ($res_form_validation === FALSE)
{
$params = array( 'title' =>
$this->lang->line('ui_nav_menu_login')
@@ -69,6 +104,14 @@ class User extends CI_Controller {
}
else
{
+ if ($b_openid)
+ {
+ $this->users_model->openid_begin_login(
+ $this->input->post('openid'));
+ return;
+ }
+
+ // Without OpenID
if (! $this->activated_account)
header('Location: '
. site_url("user/activate/{$this->user_id}"));
@@ -87,6 +130,43 @@ class User extends CI_Controller {
}
}
+ public function check_openid_login()
+ {
+ $user = $this->users_model->openid_complete_login();
+
+ // Authentication failed.
+ if ($user == Auth_OpenID_CANCEL)
+ {
+ $this->load->helper('message');
+ show_error_msg_page($this, $this->lang->line('openid_cancel'));
+ return;
+ }
+ else if ($user == Auth_OpenID_FAILURE)
+ {
+ $this->load->helper('message');
+ show_error_msg_page($this, $this->lang->line('openid_failure'));
+ return;
+ }
+
+ // Authentication successful: set session with user data.
+ $this->session->set_userdata(array(
+ 'user_id'=> $user['id'],
+ 'username'=> $user['username'],
+ 'auth_src'=> $user['auth_src'],
+ 'time_zone'=> $user['time_zone']
+ ));
+
+ if ($user['import'])
+ header('Location: '. site_url('user/account'));
+ else
+ header('Location: '. site_url());
+ }
+
+ public function openid_policy()
+ {
+ $this->load->view('openid_policy_view');
+ }
+
/**
* Logout user and then redirect it to the last page which must be encoded
* in $redirect.
@@ -99,6 +179,7 @@ class User extends CI_Controller {
$this->session->unset_userdata('user_id');
$this->session->unset_userdata('username');
$this->session->unset_userdata('auth_src');
+ $this->session->unset_userdata('roles');
$this->session->unset_userdata('time_zone');
header('Location: '. site_url(urldecode_segments($redirect)));
@@ -109,6 +190,8 @@ class User extends CI_Controller {
$this->load->library('form_validation');
$this->load->helper('localization');
$this->load->helper('date');
+
+ $user_id = $this->session->userdata('user_id');
$this->form_validation->set_error_delimiters('',
'');
@@ -136,19 +219,30 @@ class User extends CI_Controller {
}
else
$b_validation = FALSE;
-
+
if (! $b_validation)
{
// Edit account data if logged in, otherwise register.
- if ($user_id = $this->session->userdata('user_id'))
+ // ** ACCOUNT
+ if ($user_id)
{
$userdata = $this->users_model->get_userdata(intval($user_id));
+ if (substr($userdata['username'], 0, 8) == 'autogen_')
+ $userdata['autogen_username'] =
+ substr($userdata['username'], 8);
$selected_menu = 'account';
+ $captcha = FALSE;
}
+ // ** REGISTER
else
{
$userdata = FALSE;
$selected_menu = 'register';
+
+ // CAPTCHA
+ $this->load->library('captcha');
+ $captcha = $this->captcha->get_captcha();
+ $captcha = $captcha['image'];
}
$params = array('title' =>
@@ -168,7 +262,7 @@ class User extends CI_Controller {
$main_params['content'] = $this->load->view('user/register_view',
array('userdata'=> $userdata, 'redirect'=> $redirect,
- 'error_upload'=> $error_upload),
+ 'error_upload'=> $error_upload, 'captcha'=> $captcha),
TRUE);
$main_params['side'] = $this->load->view('side_default', NULL, TRUE);
$this->load->view('main', $main_params);
@@ -178,10 +272,14 @@ class User extends CI_Controller {
}
else
{
- $user_id = $this->input->post('user-id');
+ // TODO: Security problem!
+ //$user_id = $this->input->post('user-id');
+ if ($this->input->post('username'))
+ $data['username'] = $this->input->post('username');
$data['email'] = $this->input->post('email');
$data['first_name'] = $this->input->post('first-name');
$data['last_name'] = $this->input->post('last-name');
+ $data['sex'] = intval($this->input->post('sex'));
$data['birth_date'] = $this->input->post('birth-date');
$data['country'] = $this->input->post('country');
$data['locality'] = $this->input->post('locality');
@@ -203,11 +301,12 @@ class User extends CI_Controller {
640, 480, IMAGETYPE_AUTO);
}
// Create thumbnail.
- $data['picture'] = $upload_data['file_name']. '-thumb.jpg';
+ $data['picture'] = $upload_data['file_name'];
$this->image->save_thumbnail($upload_data['file_path']
. $upload_data['file_name']. '-thumb.jpg', 120, 90);
}
+ // TODO: To much info as session data?
// Update session user data.
$this->_update_session_userdata($data);
@@ -216,7 +315,7 @@ class User extends CI_Controller {
{
$password = $this->input->post('new-password');
if ($password)
- $data['password'] = $this->input->post('new-password');
+ $data['password'] = $password;
$this->users_model->set_userdata($user_id, $data);
@@ -228,6 +327,7 @@ class User extends CI_Controller {
{
$data['username'] = $this->input->post('username');
$data['password'] = $this->input->post('password');
+ $data['auth_src'] = 'internal';
$this->users_model->register($data);
$user_id = $this->users_model->get_userdata($data['username'],
@@ -249,6 +349,17 @@ class User extends CI_Controller {
{
// TODO handle user not found
+ $user_id = $this->session->userdata('user_id');
+ if ($user_id)
+ {
+ if (intval($user_id) & USER_ROLE_ADMIN)
+ $allow_unactivated = TRUE;
+ else
+ $allow_unactivated = FALSE;
+ }
+ else
+ $allow_unactivated = FALSE;
+
$this->load->config('localization');
$this->load->helper('date');
$this->lang->load('date');
@@ -258,33 +369,29 @@ class User extends CI_Controller {
// **
// Logged in user time zone
$time_zone = $this->session->userdata('time_zone');
- if (! $time_zone)
- $time_zone = 'UTC';
// User data
$userdata = $this->users_model->get_userdata($username);
$userdata['roles'] = Users_model::roles_to_string($userdata['roles']);
$country_list = $this->config->item('country_list');
$userdata['country_name'] = $country_list[ $userdata['country'] ];
- $userdata['last_login'] = date('Y-m-d H:i:s',
- gmt_to_local(
- strtotime($userdata['last_login']),
- $time_zone,
- TRUE)) . ($time_zone == 'UTC' ? ' (UTC)' : '');
+ $userdata['last_login'] = human_gmt_to_human_local(
+ $userdata['last_login'], $time_zone);
$userdata['time_zone'] = $this->lang->line($userdata['time_zone']);
// User's videos
$this->load->model('videos_model');
$vs_data['videos'] = $this->videos_model->get_videos_summary(
- NULL, $username, intval($videos_offset),
- $this->config->item('videos_per_page'));
+ NULL, $username, intval($videos_offset),
+ $this->config->item('videos_per_page'), 'hottest',
+ $allow_unactivated);
// Pagination
$this->load->library('pagination');
$pg_config['base_url'] = site_url("user/profile/$username/");
$pg_config['uri_segment'] = 4;
$pg_config['total_rows'] = $this->videos_model->get_videos_count(
- NULL, $username);
+ NULL, $username, $allow_unactivated);
$pg_config['per_page'] = $this->config->item('videos_per_page');
$this->pagination->initialize($pg_config);
$vs_data['pagination'] = $this->pagination->create_links();
@@ -337,17 +444,18 @@ class User extends CI_Controller {
&& $this->users_model->activate_account($user_id,
$activation_code))
{
- $this->session->set_flashdata('msg', sprintf(
+ $this->load->helper('message');
+ show_info_msg_page($this, sprintf(
$this->lang->line('user_msg_activated_account'),
site_url('user/login')));
- header('Location: '. site_url('message/info'));
return;
}
else
{
- $this->session->set_flashdata('msg',
- $this->lang->line('user_msg_wrong_activation_code'));
- header('Location: '. site_url('message/error'));
+ $this->load->helper('message');
+ show_error_msg_page($this,
+ $this->lang->line(
+ 'user_msg_wrong_activation_code'));
return;
}
}
@@ -365,10 +473,10 @@ class User extends CI_Controller {
if ($activated_account)
{
- $this->session->set_flashdata('msg', sprintf(
- $this->lang->line('user_msg_activated_account'),
- site_url('user/login')));
- header('Location: '. site_url('message/info'));
+ $this->load->helper('message');
+ show_info_msg_page($this, sprintf(
+ $this->lang->line('user_msg_activated_account'),
+ site_url('user/login')));
return;
}
@@ -410,21 +518,21 @@ class User extends CI_Controller {
{
if ($method == 'code')
{
- // Redirect to a message which tells the user that the
+ // A message which tells the user that the
// activation was successful.
- $this->session->set_flashdata('msg', sprintf(
- $this->lang->line('user_msg_activated_account'),
- site_url('user/login')));
- header('Location: '. site_url('message/info'));
+ $this->load->helper('message');
+ show_info_msg_page($this, sprintf(
+ $this->lang->line('user_msg_activated_account'),
+ site_url('user/login')));
return;
}
else if ($method == 'resend')
{
// Redirect to resent message
- $this->session->set_flashdata('msg', sprintf(
+ $this->load->helper('message');
+ show_info_msg_page($this, sprintf(
$this->lang->line('user_msg_activation_resent'),
$this->input->post('email')));
- header('Location: '. site_url('message/info'));
return;
}
}
@@ -467,20 +575,36 @@ class User extends CI_Controller {
}
else
{
- // Redirect to resent message
- $this->session->set_flashdata('msg', sprintf(
+ // Resent message
+ $this->load->helper('message');
+ show_info_msg_page($this, sprintf(
$this->lang->line('user_msg_password_recovery_email_sent'),
$this->input->post('username'),
$this->input->post('email')));
- header('Location: '. site_url('message/info'));
return;
}
}
+ public function _format_message($msg, $val = '', $sub = '%s')
+ {
+ return str_replace($sub, $val, $this->lang->line($msg));
+ }
+
public function _update_session_userdata($data)
{
foreach ($data as $key=> $val)
- $this->session->set_userdata($key, $val);
+ {
+ if ($this->session->userdata($key))
+ $this->session->set_userdata($key, $val);
+ }
+ }
+
+ public function _is_username_unique($username)
+ {
+ if ($this->users_model->get_userdata($username))
+ return FALSE;
+
+ return TRUE;
}
public function _valid_username($username)
@@ -506,12 +630,21 @@ class User extends CI_Controller {
return (preg_match('/[\d]{4}-[\d]{2}-[\d]{2}/', $date) === 1);
}
- public function _valid_old_password($old_password, $field_username)
+ public function _postprocess_birth_date($date)
+ {
+ // If the user entered no birth date NULL needs to be inserted into DB.
+ if (! $date)
+ return NULL;
+
+ return $date;
+ }
+
+ public function _valid_old_password($old_password)
{
if (! $old_password)
return TRUE;
- $username= $this->input->post($field_username);
+ $username= $this->session->userdata('username');
if ($this->users_model->login($username, $old_password))
return TRUE;
@@ -531,7 +664,7 @@ class User extends CI_Controller {
public function _required_by_register($param)
{
- $user_id = $this->input->post('user-id');
+ $user_id = $this->session->userdata('user_id');
if (! $user_id && ! $param)
return FALSE;
@@ -567,6 +700,7 @@ class User extends CI_Controller {
'user_id'=> $user['id'],
'username'=> $user['username'],
'auth_src'=> $user['auth_src'],
+ 'roles'=> $user['roles'],
'time_zone'=> $user['time_zone']
));
$this->import = (isset($user['import']) ? $user['import'] : FALSE);
@@ -607,6 +741,13 @@ class User extends CI_Controller {
return TRUE;
}
+ public function _check_captcha($word)
+ {
+ $this->load->library('captcha');
+
+ return $this->captcha->check_captcha($word);
+ }
+
public function _internal_account($username)
{
$userdata = $this->users_model->get_userdata($username, 'auth_src');