建融慧学 auth 统一认证 php 登录对接

获取code 浏览器请求:

https://pass.gdddc.edu.cn/#/loginAuth?client_id=XXXXXXXXXX
&schoolId=14407&grant_type=code&redirect_uri=https://ms.gdddc.edu.cn/login&response_type=code
&state=123

获取token 用curl请求:

		$data['code'] = $_GET['code'];
		$data['grant_type'] = 'authorization_code';
		$data['client_id'] = 'XXXXXXXXX';
		$data['client_secret'] = 'XXXXXXXXXXXXXXXX';
		$data['redirect_uri'] = 'https://ms.gdddc.edu.cn/';
		$data['state'] = '123';
		
		$token_json = $this->https_request("https://pass.gdddc.edu.cn/auth/oauth/token",http_build_query($data));
		$token_arr = json_decode($token_json,true);//dd($token_json);
		if($token_arr['code'] != 200){
			dd($token_json);
		}

获取信息:

function login()
    {
	
		$data['code'] = $_GET['code'];
		$data['grant_type'] = 'authorization_code';
		$data['client_id'] = 'XXXXXXXX';
		$data['client_secret'] = 'XXXXXXXXXXXXXX';
		$data['redirect_uri'] = 'https://ms.gdddc.edu.cn/';
		$data['state'] = '123';

		$token_json = $this->https_request("https://pass.gdddc.edu.cn/auth/oauth/token",http_build_query($data));
		$token_arr = json_decode($token_json,true);//dd($token_json);
		if($token_arr['code'] != 200){
			dd($token_json);
		}
		
		$token = $token_arr['data']['accessToken'];
		$h = array('content-type: application/json','Authorization:'.$token);
		
		$user_json = $this->https_request("https://pass.gdddc.edu.cn/auth/user/info",'1',$h);
		$user_arr = json_decode($user_json,true);
		if($user_arr['code'] != 200){
			dd($user_json);
		}

      
		$username = $user_arr['data']['xh'];
		$email = $username . '@' . app()->env;
		$password = md5($username);
		$name = $user_arr['data']['xm'];
		$type = $user_arr['data']['userType'];
		
		$departname = '广东舞蹈戏剧职业学院';
		
		//教师
		if($type == '01'){
			$type = 3;

		}elseif($type =='00'){
			//学生
			$type = 2;
		}else{
			//其他
			$type = 1;
		}
		
		
		if(!empty($departname)){
			// dd($department);
			$departments = DB::table('department')->select('departmentid')->where('name', $departname)->first();

			if (empty($departments)) {

				$data = [
					'parentid' => 1,
					'name' => $departname,
				];
				$departmentid = DB::table('department')->insertGetId($data);

				//部门预先分配5000个激活次数
				//windows 7/8
				$data1 = [
					'departmentid' => $departmentid,
					'keyid' => 3,
					'count' => 10000,
					'status' => 1
				];
				// office
				$data2 = [
					'departmentid' => $departmentid,
					'keyid' => 4,
					'count' => 10000,
					'status' => 1
				];
				// Windows 10/11
				$data3 = [
					'departmentid' => $departmentid,
					'keyid' => 5,
					'count' => 10000,
					'status' => 1
				];
				//WINSERVER2012R2
				$data4 = [
					'departmentid' => $departmentid,
					'keyid' => 9,
					'count' => 10000,
					'status' => 1
				];
				// visio
				$data5 = [
					'departmentid' => $departmentid,
					'keyid' => 10,
					'count' => 10000,
					'status' => 1
				];
				// WINSERVER2016
				$data6 = [
					'departmentid' => $departmentid,
					'keyid' => 12,
					'count' => 10000,
					'status' => 1
				];
				// WINSERVER2019
				$data7 = [
					'departmentid' => $departmentid,
					'keyid' => 14,
					'count' => 10000,
					'status' => 1
				];
				// WINSERVER2022
				$data8 = [
					'departmentid' => $departmentid,
					'keyid' => 15,
					'count' => 10000,
					'status' => 1
				];
				// Project 
				$data9 = [
					'departmentid' => $departmentid,
					'keyid' => 16,
					'count' => 10000,
					'status' => 1
				];
				DB::table('department__key')->insert([$data1,$data2,$data3,$data4,$data5,$data6,$data7,$data8,$data9]);
			} else {
				$departmentid = $departments->departmentid;
				if ($departmentid == 1) {
					$departmentid = 2;
				}
			}
		}else{//部门名称为空,归属学校
			$departmentid = 2;
		}
		
		
		
		
		$user = UserService::get_user_by_username($username);
		if (!$user) {

			// 获取userid, 并且保存用户信息
			$userId = UserService::add_user($email, $password, $username, $name, $departmentid, 1, str_random(32), $type);
			// 自动分配密钥
			$reason = 'CAS登录自动分配密钥';
			$managers = ManagerService::managers();
			KeyService::auto_assign($userId, $managers[0]->managerid, $reason);
		} else {
			$userId = $user->userid;
			//更新
			//DB::table('user')->where('userid',$userId)->update(['name'=>$name,'type'=>$type]);

		}
		

		Session::set('user.provider', 'user');
		Auth::loginUsingId($userId);
		\Ca\Logger::getInstance()->UserAccessLog();


		return Redirect::to('/');

    }

	function https_request($url, $data = null, $header_arr = array('content-type: application/x-www-form-urlencoded'))
	{
		$curl = curl_init();//初始化
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_TIMEOUT, 30);//允许 cURL 函数执行的最长秒数。
		/*if (!empty($port)) {
			curl_setopt($curl, CURLOPT_PORT, $port);//可选的用来指定连接端口,默认80端口可不写
		}*/
		curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
		curl_setopt($curl, CURLOPT_HTTPHEADER, $header_arr);//设置请求目标url头部信息
		if (!empty($data)) {
			//$data不为空,发送post请求
			curl_setopt($curl, CURLOPT_POST, 1);
			curl_setopt($curl, CURLOPT_POSTFIELDS, $data); //$data:数组
		}
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		$output = curl_exec($curl);//执行命令
		$error = curl_error($curl);//错误信息
		if ($error || $output == FALSE) {
			//报错信息
			return 'ERROR ' . curl_error($curl);
		}
		curl_close($curl);
		return $output;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值