@ -3,27 +3,45 @@
namespace App\Http\Controllers\API\CAS;
use App\Http\Controllers\Controller;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Schema;
use JWT;
class CasLoginController extends Controller
{
public static $request;
public static $CasUrl='http://192.168.80.53:8085/cas/serviceValidate';
public function login(Request $request){
$ticket = $request->query('ticket');
$url=env('APP_URL').'/casLogin';
$response = Http::get(self::$CasUrl, [
'service' => $url,
$data = [
'ticket' => $ticket,
]);
'service' => $url,
];
self::RequestLog(self::$CasUrl , $data, "cas认证", 'CAS接口');
$response = Http::get(self::$CasUrl,$data);
if (!$response->successful()) {
self::$request->response_data = "请求Roc接口失败";
self::$request->save();
return \Yz::JsonError("请求CAS失败");
}
// 处理成功的响应
$res_string = $response->body();
// dd($res_string);
$str_len = mb_strlen($res_string, 'utf-8');
$str_size = $str_len / 1024;
$save_res = $res_string;
if ($str_size > 10) $save_res = '{"data":"Row size too large"}';
self::$request->response_data = $save_res;
self::$request->save();
$xml = simplexml_load_string($response->body());
// 注册命名空间
$namespaces = $xml->getNamespaces(true);
@ -64,5 +82,42 @@ class CasLoginController extends Controller
}
public static function RequestLog($url, $post_data, $mark, $code = 0)
{
self::CheckTableName();
foreach ($post_data as $key => $post_datum) {
$str_len = mb_strlen(json_encode($post_datum, JSON_UNESCAPED_UNICODE), 'utf-8');
$str_size = $str_len / 1024;
if ($str_size > 10) {
$post_data["$key"] = 'Row size too large';
}
}
$post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE);
self::$request->code = $code;
self::$request->mark = $mark;
self::$request->post_data = $post_data == '[]' ? '{}' : $post_data;
self::$request->request_url = $url;
self::$request->save();
}
public static function CheckTableName()
{
$table_name = 'zz_peis_log_' . date('ym');
$table_count = DB::select('select count(1) as c from information_schema.TABLES where table_schema = ? and table_name = ?', [env('DB_DATABASE'), $table_name])[0];
if ($table_count->c === 0) {
Schema::create($table_name, function (Blueprint $table) {
$table->id();
$table->string('code', 50)->index();
$table->string('mark', 50)->index();
$table->text('post_data');
$table->text('response_data')->nullable();
$table->string('request_url', 2000);
$table->timestamps();
});
}
self::$request = new \App\Models\PEISLog();
self::$request->setTable($table_name);
}
}