private function login($redirect) { try { $user = VBX_User::authenticate($this->input->post('email'), $this->input->post('pw'), $this->input->post('captcha'), $this->input->post('captcha_token')); if ($user) { $connect_auth = OpenVBX::connectAuthTenant($user->tenant_id); // we kick out non-admins, admins will have an opportunity to re-auth the account if (!$connect_auth && !$user->is_admin) { $this->session->set_flashdata('error', 'Connect auth denied'); return redirect('auth/connect/account_deauthorized'); } $userdata = array('email' => $user->email, 'user_id' => $user->id, 'is_admin' => $user->is_admin, 'loggedin' => TRUE, 'signature' => VBX_User::signature($user->id)); $this->session->set_userdata($userdata); if (OpenVBX::schemaVersion() >= 24) { return $this->after_login_completed($user, $redirect); } return $this->redirect($redirect); } $this->session->set_flashdata('error', 'Email address and/or password is incorrect'); return redirect('auth/login?redirect=' . urlencode($redirect)); } catch (GoogleCaptchaChallengeException $e) { $this->session->set_flashdata('error', $e->getMessage()); $data['error'] = $e->getMessage(); $data['captcha_url'] = $e->captcha_url; $data['captcha_token'] = $e->captcha_token; } }