каждый клиент который регистрируется на сайте www.domain.com получает свой поддомен $client_id.domain.com cо своей изолированной базой данных, пользователь записывается как клиент в основную базу данных www.domain.com и в базу данных своего поддомена как администратор.
при авторизации пользователя на www.domain.com, функция должна определить $client_id и если $client_id != 0 то перенаправить авторизацию на $client_id.domain.com
model function authenticate($email, $password) {
$this->db->select("id,user_type,client_id");
$result = $this->db->get_where($this->table, array('email' => $email, 'password' => md5($password), 'status' => 'active', 'deleted' => 0, 'disable_login' => 0));
if ($result->num_rows() == 1) {
$user_info = $result->row();
//check client login settings
if ($user_info->user_type === "client" && get_setting("disable_client_login")) {
return false;
} else if ($user_info->user_type === "client") {
//user can't be loged in if client has deleted
$clients_table = $this->db->dbprefix('clients');
$sql = "SELECT $clients_table.id
FROM $clients_table
WHERE $clients_table.id= $user_info->client_id AND $clients_table.deleted=0
";
$client_result = $this->db->query($sql);
if (!$client_result->num_rows()) {
return false;
}
}
$this->session->set_userdata('user_id', $user_info->id);
return true;
}
}
function login_user_id() {
$login_user_id = $this->session->user_id;
return $login_user_id ? $login_user_id : false;
}
Controllerfunction index() {
if ($this->Users_model->login_user_id()) {
redirect('dashboard/view');
} else {
$view_data["redirect"] = "";
if (isset($_REQUEST["redirect"])) {
$view_data["redirect"] = $_REQUEST["redirect"];
}
//check if there reCaptcha is enabled
//if reCaptcha is enabled, check the validation
if (get_setting("re_captcha_secret_key")) {
$this->form_validation->set_rules('g-recaptcha-response', '', 'callback_check_recaptcha');
}
$this->form_validation->set_rules('email', '', 'callback_authenticate'); //авторизация
$this->form_validation->set_error_delimiters('<span>', '</span>');
if ($this->form_validation->run() == FALSE) {
$this->load->view('signin/index', $view_data);
} else {
if ($view_data["redirect"]) {
redirect($view_data["redirect"]);
} else {
redirect('dashboard/view');
}
}
}
}
// check authentication
function authenticate($email) {
//don't check password if there is any error
if (validation_errors()) {
$this->form_validation->set_message('authenticate', "");
return false;
}
$password = $this->input->post("password");
if (!$this->Users_model->authenticate($email, $password)) {
$this->form_validation->set_message('authenticate', lang("authentication_failed"));
return false;
}
return true;
}