public function handle_request_internal() { $req = APF::get_instance()->get_request(); $res = APF::get_instance()->get_response(); $oauth_config = APF::get_instance()->get_config('oauth', 'ldap'); $client_id = $oauth_config['client_id']; $client_secret = $oauth_config['client_secret']; $oauth_url = $oauth_config['oauth_url']; $user = $this->login_with_oauth($client_id, $client_secret, $oauth_url); if ($user) { $user = json_decode($user, true); $username = $user['username']; $token = $user['access_token']; $user_info = Bll_UserBiz::get_instance()->get_userinfo_by_username($username); //get userinfo from ibug if ($user_info) { $user_info = Util_ArrayUtils::obj_to_arr($user_info); $location = Home_IndexController::build_uri(); $this->login_success($user_info[0]['user_id'], $user_info[0]['user_name'], $location); } else { $ldap_info = $this->get_info_from_oauth($token, $oauth_url); $ldap_info = json_decode($ldap_info, true); $new_user = array('user_name' => $username, 'chinese_name' => $ldap_info['chinese_name'], 'english_name' => $ldap_info['english_name'], 'email' => $ldap_info['email']); $new_user_id = Bll_UserBiz::get_instance()->insert_newuser($new_user); $user_role_id = Bll_UserRoleBiz::get_instance()->default_role($new_user_id, 'dev'); $location = Home_IndexController::build_uri(); $this->login_success($new_user_id, $new_user['user_name'], $location); } } }
public function handle_request_internal() { $req = APF::get_instance()->get_request(); $res = APF::get_instance()->get_response(); $params = $req->get_parameters(); $login_page = 'Login'; //cookie start for 自动跳转! $cookiename = APF::get_instance()->get_config('AuthCookieName'); $cookie = @$req->get_cookie($cookiename); if ($cookie) { $id_name_array = $this->is_auth($cookie); if ($id_name_array) { $uid = $id_name_array[0]; $uname = $id_name_array[1]; $url = Home_IndexController::build_uri(); $this->login_success($uid, $uname, $url); } } //cookie end if (!$params) { return $login_page; } if (empty($params['username']) || empty($params['password'])) { $req->set_attribute('err_msg', '请输入用户名和密码!'); return $login_page; } else { $username = strtolower($params['username']); $password = $params['password']; $ldap_auth = Bll_LdapBiz::get_instance()->auth($username, $password); //ldap_auth return true or false if (!$ldap_auth) { //root login: if ($username == 'root') { $root_id = Bll_UserBiz::get_instance()->root_auth($password); if ($root_id) { $location = Home_IndexController::build_uri(); $this->login_success($root_id, 'root', $location); } else { $req->set_attribute('err_msg', 'root密码错误!'); return $login_page; } } $req->set_attribute('err_msg', '域验证失败,请检查域账户名和密码是否正确,域账户名不包含@anjuke.com<br/>或者请检查域密码是否过期<a href="https://192.168.1.98/iisadmpwd/">密码重置</a>'); return $login_page; } else { $user_info = Bll_UserBiz::get_instance()->get_userinfo_by_username($username); //get userinfo from ibug if ($user_info) { $user_info = Util_ArrayUtils::obj_to_arr($user_info); $location = Home_IndexController::build_uri(); $this->login_success($user_info[0]['user_id'], $user_info[0]['user_name'], $location); } else { $ldap_info = Bll_LdapBiz::get_instance()->get_userinfo_from_ldap($username, $password); if (!$ldap_info) { $req->set_attribute('err_msg', '域账户信息获取失败,请联系系统开发iBug(pidgin:柏健)'); return $login_page; } else { $new_user = array('user_name' => $username, 'chinese_name' => $ldap_info->chinese_name, 'english_name' => $ldap_info->english_name, 'email' => $ldap_info->email); $new_user_id = Bll_UserBiz::get_instance()->insert_newuser($new_user); if ($new_user_id) { $user_role_id = Bll_UserRoleBiz::get_instance()->default_role($new_user_id, 'dev'); if ($user_role_id) { $location = Home_IndexController::build_uri(); $this->login_success($new_user_id, $new_user['user_name'], $location); } else { $req->set_attribute('err_msg', '账户权限初始化失败,请联系系统开发iBug(pidgin:柏健)'); return $login_page; } } else { //insert new failed! $req->set_attribute('err_msg', '账户初始化失败,请联系系统开发iBug(pidgin:柏健)'); return $login_page; } } } } } }