| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- <?php
- /**
- * Created by PhpStorm.
- * User: qiuzijian
- * Date: 4/1/22
- * Time: 6:29 PM
- */
- namespace Modules\Admin\Http\Controllers\Api;
- use App\Enum\ApiEnum;
- use App\Http\Controllers\Controller;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Input;
- use Modules\Admin\Entities\User;
- use Modules\Admin\Http\Requests\TokenRequest;
- use Modules\Staff\Entities\Staff;
- use Symfony\Component\HttpFoundation\Response;
- class TokenController extends Controller
- {
- public function token(Request $request)
- {
- $result['status'] = true;
- $result['msg'] = ApiEnum::RETURN_SUCCESS;
- $result['data'] = [];
- $username = $request->input('username');
- $user = \App\User::where('staff_num', $username)->first();
- if (!$user) {
- return $this->error(1001, '用户不存在');
- }
- $result = $this->issueToken($request, 'password');
- if ($result->getStatusCode() == 401) {
- return $this->error(1002, '密码错误');
- }
- $data = json_decode($result->getContent(), true);
- $result = [
- 'code' => 0,
- 'message' => 'SUCCESS',
- 'data' => $data
- ];
- return response()->json($result);
- }
- protected function error($code = 1, $msg = '')
- {
- return [
- 'code' => $code,
- 'message' => $msg,
- ];
- }
- /**
- * Passport 接口请求
- * @param Request $request
- * @param $grant_type
- * @param string $provider
- * @param string $scope
- * @return Response
- */
- protected function issueToken(Request $request, $grant_type, $provider = 'users', $scope = '*'): Response
- {
- $client = config('passport.password');
- if($request->password != 'Zhks2025!@#$%'){
- $request->password = base64_decode($request->password);
- }
- $params = [
- 'grant_type' => $grant_type,
- 'client_id' => $client['client_id'],
- 'client_secret' => $client['client_secret'],
- 'username' => $request->username ?: $request->email,
- 'password' => $request->password,
- 'provider' => $provider,
- 'scope' => $scope,
- ];
- $proxy = $request::create('oauth/token', 'POST');
- $proxy->request->add($params);
- return app()->handle($proxy);
- }
- public function checkToken(Request $request){
- $ts = Input::get('ts', '');
- $loginid = Input::get('loginid', '');
- $token = Input::get('token', '');
- $salt = 'aqgltx@2022';
- $year = substr($ts, 0, 4);
- $month = substr($ts, 4, 2);
- $day = substr($ts, 6, 2);
- $hour = substr($ts, 8, 2);
- $minute = substr($ts, 10, 2);
- $second = substr($ts, 12, 2);
- $formattedDateString = "$year-$month-$day $hour:$minute:$second";
- $timestamp = strtotime($formattedDateString);
- if(time() - $timestamp > 10){
- return $this->error(1003, '已超时');
- }
- $md5 = md5($loginid.'|'.$ts.'|'.$salt);
- if($md5 != $token){
- return $this->error(1003, '验证失败');
- }
- $data['username'] = 'admin';
- $data['password'] = 'Zhks2025!@#$%';
- $result = $this->httpRequest(env('VIDEO_SYSTEM_URL').'/api/oauth/token','post',$data);
- return $result;
- }
- public function httpRequest($url, $format = 'get', $data = null){
- //设置头信息
- $headerArray =array("Content-type:application/json;","Accept:application/json");
- $curl=curl_init();
- curl_setopt($curl, CURLOPT_URL, $url);
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
- if ($format == 'post') {
- //post传值设置post传参
- curl_setopt($curl, CURLOPT_POST, 1);
- if ($data) {
- $data = json_encode($data);
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
- }
- }
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
- $data=json_decode(curl_exec($curl), true);
- curl_close($curl);
- //返回接口返回数据
- return $data;
- }
- }
|