Closed sparky672 closed 10 years ago
That line doesn't match the error you posted. Are you sure you overwrote the model?
https://github.com/benedmunds/CodeIgniter-Ion-Auth/blob/2/models/ion_auth_model.php#L1588
And yes that should be all you need to do to upgrade.
Yes, on the server at models/ion_auth_model.php
...
- Version: 2.5.2
and
- Last Change: 3.22.13
This is the file I downloaded today using the link on this page...
That comment is out of date.
What do you see around Line 1588? might be easier to just post your file in a gist..
This is at line 1588... it matches line 1588 from the file I downloaded today ...
$this->db->update($this->tables['users'], $data, array('id' => $user->id));
Hmm. That doesn't make sense... What version of CI are you running?
2.1.4
I'm confused. How can I see something at line 1588 in the file I downloaded today that's different than what you're seeing?
No what you are seeing is what I see. But that error seems weird, we aren't calling set() there which is what your error points to. So it seems that the $data array might be empty. Add this above that link to debug:
var_dump($data);exit;
and then let me know what the output is
array(0) { }
Maybe it's being filtered. Add the same at line 1567:
var_dump($data);exit;
Same result...
array(0) { }
Oh, are you sure you are passing data into $this->ion_auth->update()?
Add some debug to your controller code to make sure you arent sending an empty array or maybe an empty $_POST array.
I am editing the groups that the user belongs to and nothing else. Despite getting the error, the groups are correctly updated. So apparently, the groups information is not part of this array??
Post your controller code please.
Except for the redirects and URL's, it's pretty much still yours...
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Auth extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->library('ion_auth');
$this->load->library('form_validation');
$this->load->helper('url');
// Load MongoDB library instead of native db driver if required
$this->config->item('use_mongodb', 'ion_auth') ?
$this->load->library('mongo_db') :
$this->load->database();
$this->form_validation->set_error_delimiters($this->config->item('error_start_delimiter', 'ion_auth'), $this->config->item('error_end_delimiter', 'ion_auth'));
$this->lang->load('auth');
$this->load->helper('language');
}
//redirect if needed, otherwise display the user list
function index()
{
if (!$this->ion_auth->logged_in())
{
//redirect them to the login page
redirect('members/login', 'refresh');
}
elseif (!$this->ion_auth->is_admin()) //remove this elseif if you want to enable this for non-admins
{
//redirect them to the home page because they must be an administrator to view this
return show_error('You must be an administrator to view this page.');
}
else
{
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
//list the users
$this->data['users'] = $this->ion_auth->users()->result();
foreach ($this->data['users'] as $k => $user)
{
$this->data['users'][$k]->groups = $this->ion_auth->get_users_groups($user->id)->result();
}
$this->_render_page('members/auth/index', $this->data);
}
}
//log the user in
function login()
{
$this->data['title'] = "Login";
//validate form input
$this->form_validation->set_rules('identity', 'Identity', 'required');
$this->form_validation->set_rules('password', 'Password', 'required');
if ($this->form_validation->run() == true)
{
//check to see if the user is logging in
//check for "remember me"
$remember = (bool) $this->input->post('remember');
if ($this->ion_auth->login($this->input->post('identity'), $this->input->post('password'), $remember))
{
//if the login is successful
//redirect them back to the home page
$this->session->set_flashdata('message', $this->ion_auth->messages());
// JWK - 10/30/13
//redirect('/', 'refresh');
redirect('/members/acp', 'refresh');
}
else
{
//if the login was un-successful
//redirect them back to the login page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('members/login', 'refresh'); //use redirects instead of loading views for compatibility with MY_Controller libraries
}
}
else
{
//the user is not logging in so display the login page
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->data['identity'] = array('name' => 'identity',
'id' => 'identity',
'type' => 'text',
'value' => $this->form_validation->set_value('identity'),
);
$this->data['password'] = array('name' => 'password',
'id' => 'password',
'type' => 'password',
);
$this->_render_page('members/auth/login', $this->data);
}
}
//log the user out
function logout()
{
$this->data['title'] = "Logout";
//log the user out
$logout = $this->ion_auth->logout();
//redirect them to the login page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect('members/login', 'refresh');
}
//change password
function change_password()
{
$this->form_validation->set_rules('old', $this->lang->line('change_password_validation_old_password_label'), 'required');
$this->form_validation->set_rules('new', $this->lang->line('change_password_validation_new_password_label'), 'required|min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|matches[new_confirm]');
$this->form_validation->set_rules('new_confirm', $this->lang->line('change_password_validation_new_password_confirm_label'), 'required');
if (!$this->ion_auth->logged_in())
{
redirect('members/login', 'refresh');
}
$user = $this->ion_auth->user()->row();
if ($this->form_validation->run() == false)
{
//display the form
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->data['min_password_length'] = $this->config->item('min_password_length', 'ion_auth');
$this->data['old_password'] = array(
'name' => 'old',
'id' => 'old',
'type' => 'password',
);
$this->data['new_password'] = array(
'name' => 'new',
'id' => 'new',
'type' => 'password',
'pattern' => '^.{'.$this->data['min_password_length'].'}.*$',
);
$this->data['new_password_confirm'] = array(
'name' => 'new_confirm',
'id' => 'new_confirm',
'type' => 'password',
'pattern' => '^.{'.$this->data['min_password_length'].'}.*$',
);
$this->data['user_id'] = array(
'name' => 'user_id',
'id' => 'user_id',
'type' => 'hidden',
'value' => $user->id,
);
//render
$this->_render_page('members/auth/change_password', $this->data);
}
else
{
$identity = $this->session->userdata($this->config->item('identity', 'ion_auth'));
$change = $this->ion_auth->change_password($identity, $this->input->post('old'), $this->input->post('new'));
if ($change)
{
//if the password was successfully changed
$this->session->set_flashdata('message', $this->ion_auth->messages());
$this->logout();
}
else
{
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('members/auth/change_password', 'refresh');
}
}
}
//forgot password
function forgot_password()
{
$this->form_validation->set_rules('email', $this->lang->line('forgot_password_validation_email_label'), 'required');
if ($this->form_validation->run() == false)
{
//setup the input
$this->data['email'] = array('name' => 'email',
'id' => 'email',
);
if ( $this->config->item('identity', 'ion_auth') == 'username' ){
$this->data['identity_label'] = $this->lang->line('forgot_password_username_identity_label');
}
else
{
$this->data['identity_label'] = $this->lang->line('forgot_password_email_identity_label');
}
//set any errors and display the form
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->_render_page('members/auth/forgot_password', $this->data);
}
else
{
// get identity for that email
$identity = $this->ion_auth->where('email', strtolower($this->input->post('email')))->users()->row();
if(empty($identity)) {
$this->ion_auth->set_message('forgot_password_email_not_found');
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("members/auth/forgot_password", 'refresh');
}
//run the forgotten password method to email an activation code to the user
$forgotten = $this->ion_auth->forgotten_password($identity->{$this->config->item('identity', 'ion_auth')});
if ($forgotten)
{
//if there were no errors
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("members/login", 'refresh'); //we should display a confirmation page here instead of the login page
}
else
{
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect("members/auth/forgot_password", 'refresh');
}
}
}
//reset password - final step for forgotten password
public function reset_password($code = NULL)
{
if (!$code)
{
show_404();
}
$user = $this->ion_auth->forgotten_password_check($code);
if ($user)
{
//if the code is valid then display the password reset form
$this->form_validation->set_rules('new', $this->lang->line('reset_password_validation_new_password_label'), 'required|min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|matches[new_confirm]');
$this->form_validation->set_rules('new_confirm', $this->lang->line('reset_password_validation_new_password_confirm_label'), 'required');
if ($this->form_validation->run() == false)
{
//display the form
//set the flash data error message if there is one
$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
$this->data['min_password_length'] = $this->config->item('min_password_length', 'ion_auth');
$this->data['new_password'] = array(
'name' => 'new',
'id' => 'new',
'type' => 'password',
'pattern' => '^.{'.$this->data['min_password_length'].'}.*$',
);
$this->data['new_password_confirm'] = array(
'name' => 'new_confirm',
'id' => 'new_confirm',
'type' => 'password',
'pattern' => '^.{'.$this->data['min_password_length'].'}.*$',
);
$this->data['user_id'] = array(
'name' => 'user_id',
'id' => 'user_id',
'type' => 'hidden',
'value' => $user->id,
);
$this->data['csrf'] = $this->_get_csrf_nonce();
$this->data['code'] = $code;
//render
$this->_render_page('members/auth/reset_password', $this->data);
}
else
{
// do we have a valid request?
if ($this->_valid_csrf_nonce() === FALSE || $user->id != $this->input->post('user_id'))
{
//something fishy might be up
$this->ion_auth->clear_forgotten_password_code($code);
show_error($this->lang->line('error_csrf'));
}
else
{
// finally change the password
$identity = $user->{$this->config->item('identity', 'ion_auth')};
$change = $this->ion_auth->reset_password($identity, $this->input->post('new'));
if ($change)
{
//if the password was successfully changed
$this->session->set_flashdata('message', $this->ion_auth->messages());
$this->logout();
}
else
{
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect('members/auth/reset_password/' . $code, 'refresh');
}
}
}
}
else
{
//if the code is invalid then send them back to the forgot password page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect("members/auth/forgot_password", 'refresh');
}
}
//activate the user
function activate($id, $code=false)
{
if ($code !== false)
{
$activation = $this->ion_auth->activate($id, $code);
}
else if ($this->ion_auth->is_admin())
{
$activation = $this->ion_auth->activate($id);
}
if ($activation)
{
//redirect them to the auth page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("members/auth", 'refresh');
}
else
{
//redirect them to the forgot password page
$this->session->set_flashdata('message', $this->ion_auth->errors());
redirect("members/auth/forgot_password", 'refresh');
}
}
//deactivate the user
function deactivate($id = NULL)
{
$id = $this->config->item('use_mongodb', 'ion_auth') ? (string) $id : (int) $id;
$this->load->library('form_validation');
$this->form_validation->set_rules('confirm', $this->lang->line('deactivate_validation_confirm_label'), 'required');
$this->form_validation->set_rules('id', $this->lang->line('deactivate_validation_user_id_label'), 'required|alpha_numeric');
if ($this->form_validation->run() == FALSE)
{
// insert csrf check
$this->data['csrf'] = $this->_get_csrf_nonce();
$this->data['user'] = $this->ion_auth->user($id)->row();
$this->_render_page('members/auth/deactivate_user', $this->data);
}
else
{
// do we really want to deactivate?
if ($this->input->post('confirm') == 'yes')
{
// do we have a valid request?
if ($this->_valid_csrf_nonce() === FALSE || $id != $this->input->post('id'))
{
show_error($this->lang->line('error_csrf'));
}
// do we have the right userlevel?
if ($this->ion_auth->logged_in() && $this->ion_auth->is_admin())
{
$this->ion_auth->deactivate($id);
}
}
//redirect them back to the auth page
redirect('members/auth', 'refresh');
}
}
//create a new user
function create_user()
{
$this->data['title'] = "Create User";
if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_admin())
{
redirect('/members/auth', 'refresh');
}
//validate form input
$this->form_validation->set_rules('first_name', $this->lang->line('create_user_validation_fname_label'), 'required|xss_clean');
$this->form_validation->set_rules('last_name', $this->lang->line('create_user_validation_lname_label'), 'required|xss_clean');
$this->form_validation->set_rules('email', $this->lang->line('create_user_validation_email_label'), 'required|valid_email|is_unique[users.email]');
// JWK - 11/11/13
//$this->form_validation->set_rules('phone', $this->lang->line('create_user_validation_phone_label'), 'required|xss_clean');
//$this->form_validation->set_rules('company', $this->lang->line('create_user_validation_company_label'), 'required|xss_clean');
$this->form_validation->set_rules('password', $this->lang->line('create_user_validation_password_label'), 'required|min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|matches[password_confirm]');
$this->form_validation->set_rules('password_confirm', $this->lang->line('create_user_validation_password_confirm_label'), 'required');
if ($this->form_validation->run() == true)
{
$username = strtolower($this->input->post('first_name')) . ' ' . strtolower($this->input->post('last_name'));
$email = strtolower($this->input->post('email'));
$password = $this->input->post('password');
$additional_data = array(
'first_name' => $this->input->post('first_name'),
'last_name' => $this->input->post('last_name')
// JWK - 11/11/13
//'company' => $this->input->post('company'),
//'phone' => $this->input->post('phone'),
);
}
if ($this->form_validation->run() == true && $this->ion_auth->register($username, $password, $email, $additional_data))
{
//check to see if we are creating the user
//redirect them back to the admin page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("/members/auth", 'refresh');
}
else
{
//display the create user form
//set the flash data error message if there is one
$this->data['message'] = (validation_errors() ? validation_errors() : ($this->ion_auth->errors() ? $this->ion_auth->errors() : $this->session->flashdata('message')));
$this->data['first_name'] = array(
'name' => 'first_name',
'id' => 'first_name',
'type' => 'text',
'value' => $this->form_validation->set_value('first_name'),
);
$this->data['last_name'] = array(
'name' => 'last_name',
'id' => 'last_name',
'type' => 'text',
'value' => $this->form_validation->set_value('last_name'),
);
$this->data['email'] = array(
'name' => 'email',
'id' => 'email',
'type' => 'text',
'value' => $this->form_validation->set_value('email'),
);
// JWK - 11/11/13
/*
$this->data['company'] = array(
'name' => 'company',
'id' => 'company',
'type' => 'text',
'value' => $this->form_validation->set_value('company'),
);
$this->data['phone'] = array(
'name' => 'phone',
'id' => 'phone',
'type' => 'text',
'value' => $this->form_validation->set_value('phone'),
);
*/
$this->data['password'] = array(
'name' => 'password',
'id' => 'password',
'type' => 'password',
'value' => $this->form_validation->set_value('password'),
);
$this->data['password_confirm'] = array(
'name' => 'password_confirm',
'id' => 'password_confirm',
'type' => 'password',
'value' => $this->form_validation->set_value('password_confirm'),
);
$this->_render_page('/members/auth/create_user', $this->data);
}
}
//edit a user
function edit_user($id)
{
$this->data['title'] = "Edit User";
// JWK - 11/4/13
// allow user to edit own account
//if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_admin())
if (!$this->ion_auth->logged_in() || (!$this->ion_auth->is_admin() && !($this->ion_auth->user()->row()->id == $id)))
{
redirect('members/auth', 'refresh');
}
$user = $this->ion_auth->user($id)->row();
$groups=$this->ion_auth->groups()->result_array();
$currentGroups = $this->ion_auth->get_users_groups($id)->result();
//validate form input
// JWK - 11/13/13
//$this->form_validation->set_rules('first_name', $this->lang->line('edit_user_validation_fname_label'), 'required|xss_clean');
//$this->form_validation->set_rules('last_name', $this->lang->line('edit_user_validation_lname_label'), 'required|xss_clean');
//$this->form_validation->set_rules('phone', $this->lang->line('edit_user_validation_phone_label'), 'required|xss_clean');
//$this->form_validation->set_rules('company', $this->lang->line('edit_user_validation_company_label'), 'required|xss_clean');
$this->form_validation->set_rules('groups', $this->lang->line('edit_user_validation_groups_label'), 'xss_clean');
if (isset($_POST) && !empty($_POST))
{
// do we have a valid request?
if ($this->_valid_csrf_nonce() === FALSE || $id != $this->input->post('id'))
{
show_error($this->lang->line('error_csrf'));
}
$data = array(
// JWK - 11/11/13
//'first_name' => $this->input->post('first_name'),
//'last_name' => $this->input->post('last_name'),
//'company' => $this->input->post('company'),
//'phone' => $this->input->post('phone'),
);
//Update the groups user belongs to
$groupData = $this->input->post('groups');
if (isset($groupData) && !empty($groupData)) {
$this->ion_auth->remove_from_group('', $id);
foreach ($groupData as $grp) {
$this->ion_auth->add_to_group($grp, $id);
}
}
//update the password if it was posted
if ($this->input->post('password'))
{
$this->form_validation->set_rules('password', $this->lang->line('edit_user_validation_password_label'), 'required|min_length[' . $this->config->item('min_password_length', 'ion_auth') . ']|max_length[' . $this->config->item('max_password_length', 'ion_auth') . ']|matches[password_confirm]');
$this->form_validation->set_rules('password_confirm', $this->lang->line('edit_user_validation_password_confirm_label'), 'required');
$data['password'] = $this->input->post('password');
}
if ($this->form_validation->run() === TRUE)
{
$this->ion_auth->update($user->id, $data);
//check to see if we are creating the user
//redirect them back to the admin page
$this->session->set_flashdata('message', "User Saved");
// JWK - 11/4/13
// checks for admin and redirect as needed
//redirect("auth", 'refresh');
if ($this->ion_auth->is_admin())
{
redirect("members/auth", 'refresh');
}
else
{
redirect("members/acp", 'refresh');
}
}
}
//display the edit user form
$this->data['csrf'] = $this->_get_csrf_nonce();
//set the flash data error message if there is one
$this->data['message'] = (validation_errors() ? validation_errors() : ($this->ion_auth->errors() ? $this->ion_auth->errors() : $this->session->flashdata('message')));
//pass the user to the view
$this->data['user'] = $user;
$this->data['groups'] = $groups;
$this->data['currentGroups'] = $currentGroups;
// JWK - 11/13/13
/*
$this->data['first_name'] = array(
'name' => 'first_name',
'id' => 'first_name',
'type' => 'text',
'value' => $this->form_validation->set_value('first_name', $user->first_name),
);
$this->data['last_name'] = array(
'name' => 'last_name',
'id' => 'last_name',
'type' => 'text',
'value' => $this->form_validation->set_value('last_name', $user->last_name),
);
$this->data['company'] = array(
'name' => 'company',
'id' => 'company',
'type' => 'text',
'value' => $this->form_validation->set_value('company', $user->company),
);
$this->data['phone'] = array(
'name' => 'phone',
'id' => 'phone',
'type' => 'text',
'value' => $this->form_validation->set_value('phone', $user->phone),
);
*/
$this->data['password'] = array(
'name' => 'password',
'id' => 'password',
'type' => 'password'
);
$this->data['password_confirm'] = array(
'name' => 'password_confirm',
'id' => 'password_confirm',
'type' => 'password'
);
$this->_render_page('members/auth/edit_user', $this->data);
}
// create a new group
function create_group()
{
$this->data['title'] = $this->lang->line('create_group_title');
if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_admin())
{
redirect('members/auth', 'refresh');
}
//validate form input
$this->form_validation->set_rules('group_name', $this->lang->line('create_group_validation_name_label'), 'required|alpha_dash|xss_clean');
$this->form_validation->set_rules('description', $this->lang->line('create_group_validation_desc_label'), 'xss_clean');
if ($this->form_validation->run() == TRUE)
{
$new_group_id = $this->ion_auth->create_group($this->input->post('group_name'), $this->input->post('description'));
if($new_group_id)
{
// check to see if we are creating the group
// redirect them back to the admin page
$this->session->set_flashdata('message', $this->ion_auth->messages());
redirect("members/auth", 'refresh');
}
}
else
{
//display the create group form
//set the flash data error message if there is one
$this->data['message'] = (validation_errors() ? validation_errors() : ($this->ion_auth->errors() ? $this->ion_auth->errors() : $this->session->flashdata('message')));
$this->data['group_name'] = array(
'name' => 'group_name',
'id' => 'group_name',
'type' => 'text',
'value' => $this->form_validation->set_value('group_name'),
);
$this->data['description'] = array(
'name' => 'description',
'id' => 'description',
'type' => 'text',
'value' => $this->form_validation->set_value('description'),
);
$this->_render_page('members/auth/create_group', $this->data);
}
}
//edit a group
function edit_group($id)
{
// bail if no group id given
if(!$id || empty($id))
{
redirect('members/auth', 'refresh');
}
$this->data['title'] = $this->lang->line('edit_group_title');
if (!$this->ion_auth->logged_in() || !$this->ion_auth->is_admin())
{
redirect('members/auth', 'refresh');
}
$group = $this->ion_auth->group($id)->row();
//validate form input
$this->form_validation->set_rules('group_name', $this->lang->line('edit_group_validation_name_label'), 'required|alpha_dash|xss_clean');
$this->form_validation->set_rules('group_description', $this->lang->line('edit_group_validation_desc_label'), 'xss_clean');
if (isset($_POST) && !empty($_POST))
{
if ($this->form_validation->run() === TRUE)
{
$group_update = $this->ion_auth->update_group($id, $_POST['group_name'], $_POST['group_description']);
if($group_update)
{
$this->session->set_flashdata('message', $this->lang->line('edit_group_saved'));
}
else
{
$this->session->set_flashdata('message', $this->ion_auth->errors());
}
redirect("members/auth", 'refresh');
}
}
//set the flash data error message if there is one
$this->data['message'] = (validation_errors() ? validation_errors() : ($this->ion_auth->errors() ? $this->ion_auth->errors() : $this->session->flashdata('message')));
//pass the user to the view
$this->data['group'] = $group;
$this->data['group_name'] = array(
'name' => 'group_name',
'id' => 'group_name',
'type' => 'text',
'value' => $this->form_validation->set_value('group_name', $group->name),
);
$this->data['group_description'] = array(
'name' => 'group_description',
'id' => 'group_description',
'type' => 'text',
'value' => $this->form_validation->set_value('group_description', $group->description),
);
$this->_render_page('members/auth/edit_group', $this->data);
}
function _get_csrf_nonce()
{
$this->load->helper('string');
$key = random_string('alnum', 8);
$value = random_string('alnum', 20);
$this->session->set_flashdata('csrfkey', $key);
$this->session->set_flashdata('csrfvalue', $value);
return array($key => $value);
}
function _valid_csrf_nonce()
{
// JWK - 10/30/13
// disabled - not working - constant errors
return TRUE; // effectively disables Ion Auth's CSRF protection
// ENABLED CSRF Protection in CI Config file instead (line 298)
/*
if ($this->input->post($this->session->flashdata('csrfkey')) !== FALSE &&
$this->input->post($this->session->flashdata('csrfkey')) == $this->session->flashdata('csrfvalue'))
{
return TRUE;
}
else
{
return FALSE;
}
*/
}
function _render_page($view, $data=null, $render=false)
{
$this->viewdata = (empty($data)) ? $this->data: $data;
// JWK - 10/30/13
// $view_html = $this->load->view($view, $this->viewdata, $render);
$view_html = $this->template->load('default', $view, $this->viewdata, $render);
if (!$render) return $view_html;
}
}
It looks like everything in your data array is commented out:
$data = array(
// JWK - 11/11/13
//'first_name' => $this->input->post('first_name'),
//'last_name' => $this->input->post('last_name'),
//'company' => $this->input->post('company'),
//'phone' => $this->input->post('phone'),
);
You don't need to call
$this->ion_auth->update($user->id, $data);
if you arent trying to update the user's data.
Ok thanks... I just want to update password and groups on the user edit page and nothing else. I've done this on several projects and don't recall ever seeing this issue.
I now see how the groups and password are edited separately from the $data
array, so I've removed the $this->ion_auth->update($user->id, $data)
line. It's working fine now.
Sorry for the hassles and thank-you very much for your time.
No problem, glad to help!
@sparky672 it is ok yet
@PedroRuizHidalgo, why do you keep hijacking this 2-year old thread?
I'm still in development and Ion Auth was last updated last year. While testing today, I discovered the following error when using the "edit user" function.
So I followed your "upgrade" directions...
http://benedmunds.com/ion_auth/#upgrade
libraries/ion_auth.php
andmodels/ion_auth_model.php
with the new versions.However, I'm still getting this error:
Do I need to reinstall all Ion Auth files from scratch? I love Ion Auth, but I really hate trying to keep it up to date.