/** * Authenticate * * @access private */ private function _authenticate(CI_DB_result $member, $password) { $always_disallowed = array(4); if ($member->num_rows() !== 1) { return FALSE; } if (in_array($member->row('group_id'), $always_disallowed)) { return ee()->output->show_user_error('general', lang('mbr_account_not_active')); } $m_salt = $member->row('salt'); $m_pass = $member->row('password'); // hash using the algo used for this password $h_byte_size = strlen($m_pass); $hashed_pair = $this->hash_password($password, $m_salt, $h_byte_size); if ($hashed_pair === FALSE or $m_pass !== $hashed_pair['password']) { return FALSE; } // Officially a valid user, but are they as secure as possible? // ---------------------------------------------------------------- reset($this->hash_algos); // Not hashed or better algo available? if (!$m_salt or $h_byte_size != key($this->hash_algos)) { $m_id = $member->row('member_id'); $this->update_password($m_id, $password); } $authed = new Auth_result($member->row()); $member->free_result(); return $authed; }
/** * Process Query * * Converts a query result into an array of objects. * Also updates this object * * @ignore * @param CI_DB_result $query */ protected function _process_query($query) { if ($query->num_rows() > 0) { // Populate all with records as objects $this->all = array(); $this->_to_object($this, $query->row()); // don't bother recreating the first item. $index = $this->all_array_uses_ids && isset($this->id) ? $this->id : 0; $this->all[$index] = $this->get_clone(); if ($query->num_rows() > 1) { $model = get_class($this); $first = TRUE; foreach ($query->result() as $row) { if ($first) { $first = FALSE; continue; } $item = new $model(); $this->_to_object($item, $row); if ($this->all_array_uses_ids && isset($item->id)) { $this->all[$item->id] = $item; } else { $this->all[] = $item; } } } // remove instantiations $this->_instantiations = NULL; // free large queries if ($query->num_rows() > $this->free_result_threshold) { $query->free_result(); } } else { // Refresh stored values is called by _to_object normally $this->_refresh_stored_values(); } }
public function authenticate(CI_DB_result $query) { $data = $query->row(); $this->core->session->set_userdata(array('id' => $data->id, 'logged_in' => TRUE)); }