diff --git a/app/api/BaseController.php b/app/api/BaseController.php index 640f924..bea59e9 100644 --- a/app/api/BaseController.php +++ b/app/api/BaseController.php @@ -108,7 +108,6 @@ abstract class BaseController return false; } $user = Db::table('fa_user')->where('id',$user['n_user_id'])->find(); - //$request->uid = $jwt_data['userid']; define('JWT_UID', $user['id']); // $response = $next($request); diff --git a/app/api/controller/Userinfo.php b/app/api/controller/Userinfo.php index 3200961..05eff70 100644 --- a/app/api/controller/Userinfo.php +++ b/app/api/controller/Userinfo.php @@ -93,14 +93,13 @@ class Userinfo extends BaseController */ public function Binding() { - $post = get_params(); if(!$post['idcard'] || !$post['area_id'] || !$post['street_id'] || !$post['village_id'] || !$post['name']){ $this->apiError('缺少参数'); } - $where['id'] = JWT_UID; - $post['user_id'] = JWT_UID; + $where['id'] = $this->request->uid; + $post['user_id'] = $this->request->uid; $user = Db::table('fa_user')->where($where)->field('id,nickname,group_id,mobile,avatar,username,createtime,score')->find(); // 已绑定 if ($user) { diff --git a/app/api/middleware/Auth.php b/app/api/middleware/Auth.php index bd80feb..6b55e8c 100644 --- a/app/api/middleware/Auth.php +++ b/app/api/middleware/Auth.php @@ -16,32 +16,9 @@ use think\Response; class Auth { - protected $cookieDomain; - - protected $header = [ - 'Access-Control-Allow-Credentials' => 'true', - 'Access-Control-Max-Age' => 1800, - 'Access-Control-Allow-Methods' => 'GET, POST, PATCH, PUT, DELETE, OPTIONS', - 'Access-Control-Allow-Headers' => 'Authorization, Content-Type, If-Match, If-Modified-Since, If-None-Match, If-Unmodified-Since, X-CSRF-TOKEN, X-Requested-With', - ]; - - public function __construct(Config $config) - { - $this->cookieDomain = $config->get('cookie.domain', ''); - } public function handle($request, \Closure $next, ? array $header = []) { - $header = !empty($header) ? array_merge($this->header, $header) : $this->header; - if (!isset($header['Access-Control-Allow-Origin'])) { - $origin = $request->header('origin'); - - if ($origin && ('' == $this->cookieDomain || strpos($origin, $this->cookieDomain))) { - $header['Access-Control-Allow-Origin'] = $origin; - } else { - $header['Access-Control-Allow-Origin'] = '*'; - } - } $token = Request::header('x-Token'); if ($token) { if (strpos($token, 'Bearer') === 0){ @@ -50,22 +27,16 @@ class Auth if (count(explode('.', $token)) != 3) { return json(['code'=>404,'msg'=>'非法请求']); } - $config = get_system_config('token'); - //var_dump($config);exit; try { JWT::$leeway = 60;//当前时间减去60,把时间留点余地 $decoded = JWT::decode($token, new Key('ae47e94a7dcd1fdfacb499b60e361a8d', 'HS256')); //HS256方式,这里要和签发的时候对应 - - //return (array)$decoded; -// $decoded_array = json_decode(json_encode($decoded),TRUE); -// $jwt_data = $decoded_array['data']; - - - //$request->uid = $jwt_data['userid']; -// define('JWT_UID', $jwt_data['userid']); - $response = $next($request); - return $response; - //return $next($request); + $user=Db::connect('shop')->name('nk_user')->where('user_id',$decoded->jti[0])->find(); + if ($user &&$user['n_user_id']!=0){ + $request->uid=$user['n_user_id']; + }else{ + $request->uid=$this->addUser($decoded->jti[0],$user); + } + return $next($request); } catch(\Firebase\JWT\SignatureInvalidException $e) { //签名不正确 return json(['code'=>403,'msg'=>'签名错误']); }catch(\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用 @@ -82,6 +53,55 @@ class Auth } else { return json(['code'=>404,'msg'=>'token不能为空']); } - return $next($request)->header($header);; + } + + public function addUser($uid,$nk_user){ + $user=Db::connect('shop')->name('user')->where('uid',$uid)->find(); + + $msg=Db::table('fa_szxc_information_usermsg')->where('phone',$user['account'])->find(); + Db::startTrans(); + try { + if ($msg){ + $users=Db::table('fa_user')->where('id',$msg['user_id'])->find(); + if (!$nk_user){ + $datas=[ + 'user_id'=>$user['uid'], + 'n_user_id'=>$msg['user_id'], + 'group_id'=>$users['group_id'] + ]; + Db::connect('shop')->name('nk_user')->insert($datas); + }else{ + Db::connect('shop')->name('nk_user')->where('id',$nk_user['id'])->update(['user_id'=>$user['uid'],'group_id'=>$users['group_id']]); + } + }else{ + $time=time(); + $user_data=[ + 'openid'=>'wx'.$time, + 'group_id'=>1, + 'username'=>'wx'.$time, + 'nickname'=>'微信用户'.$time, + 'avatar'=>'https://lihai001.oss-cn-chengdu.aliyuncs.com/uploads/20230104/32a639be4ee32349705e947fbbd1e114.png', + 'level'=>1, + 'prevtime'=>$time, + 'jointime'=>$time, + 'createtime'=>$time, + 'updatetime'=>$time, + 'status'=>'normal' + ]; + $n_user_id= Db::table('fa_user')->insertGetId($user_data); + $datas=[ + 'user_id'=>$user['uid'], + 'n_user_id'=>$n_user_id, + 'group_id'=>1 + ]; + Db::connect('shop')->name('nk_user')->insert($datas); + return $n_user_id; + } + Db::commit(); + } catch (\Exception $e) { + // 回滚事务 + Db::rollback(); + return json(['code'=>400,'msg'=>$e->getMessage()]); + } } } \ No newline at end of file diff --git a/public/static/admin/images/icon.png b/public/static/admin/images/icon.png index 9a516e4..f72ef5b 100644 Binary files a/public/static/admin/images/icon.png and b/public/static/admin/images/icon.png differ diff --git a/public/static/admin/images/login_logo.png b/public/static/admin/images/login_logo.png index d9b8f82..08c6f43 100644 Binary files a/public/static/admin/images/login_logo.png and b/public/static/admin/images/login_logo.png differ diff --git a/public/static/admin/images/logo.png b/public/static/admin/images/logo.png index 4f0f925..f72ef5b 100644 Binary files a/public/static/admin/images/logo.png and b/public/static/admin/images/logo.png differ diff --git a/public/static/admin/images/nonepic360x360.jpg b/public/static/admin/images/nonepic360x360.jpg index 1bad1ba..f72ef5b 100644 Binary files a/public/static/admin/images/nonepic360x360.jpg and b/public/static/admin/images/nonepic360x360.jpg differ diff --git a/public/static/admin/images/syslogo.png b/public/static/admin/images/syslogo.png index 881d1f2..bc0cb6a 100644 Binary files a/public/static/admin/images/syslogo.png and b/public/static/admin/images/syslogo.png differ