love_php/app/Http/Middleware/AptchaVerifier.php

103 lines
2.9 KiB
PHP
Raw Permalink Normal View History

2026-04-02 09:20:51 +08:00
<?php
namespace App\Http\Middleware;
use App\Services\AptchaVerifier as Verifier ;
use Closure;
class AptchaVerifier
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
//判断版本号
$ios_version = $request->header('app-version', '1.0.0');
$and_version = $request->header('version-name', '1.0.0');
if($this->contrastVersion($ios_version, '1.3.9') || $this->contrastVersion($and_version, '1.3.14')){
//区分安卓跟iOS
if ($request->header('client-os') == "IOS") {
$captcha_id = env('IOS_CAPTCHA_ID');
}elseif($request->header('device') == "Android"){
$captcha_id = env('AND_CAPTCHA_ID');
}
$verifier = New Verifier($captcha_id, env('SECRET_ID'), env('SECRET_KEY'));
$result = $verifier->verify($request->validate, '');
if(empty($result)){
return $this->failure('验证不通过');
}
}
return $next($request);
}
public function success($msg, $data=[]){
$result = [
'code'=> 0,
'message'=> $msg,
'data'=> $data,
];
$response = Response()->json($result);
return $response;
}
//接口返回失败
public function failure($msg, $data=[], $jsonp=false){
$result = [
'code'=> 1,
'message'=> $msg,
'data'=> $data,
];
if($jsonp){
return Response()->jsonp('callback', $result);
}else{
return Response()->json($result);
}
}
//接口返回失败
public function fail($msg, $data=[], $jsonp=false){
$result = [
'code'=> 2,
'message'=> $msg,
'data'=> $data,
];
if($jsonp){
return Response()->jsonp('callback', $result);
}else{
return Response()->json($result);
}
}
//比较版本号
public function contrastVersion($version, $other_version){
$version = explode('.', $version);
$other_version = explode('.', $other_version);
if($version[0] > $other_version[0]){
return true;
}
if($version[0] < $other_version[0]){
return false;
}
if($version[0] == $other_version[0]){
if($version[1] > $other_version[1]){
return true;
}
if($version[1] < $other_version[1]){
return false;
}
if($version[1] == $other_version[1]){
if($version[2] > $other_version[2]){
return true;
}else{
return false;
}
}
}
}
}