任敬轩 3 роки тому
батько
коміт
c006b595de
3 змінених файлів з 118 додано та 0 видалено
  1. 83 0
      Modules/Admin/Http/Controllers/Api/TokenController.php
  2. 20 0
      config/passport.php
  3. 15 0
      nohup.out

+ 83 - 0
Modules/Admin/Http/Controllers/Api/TokenController.php

@@ -0,0 +1,83 @@
+<?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 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');
+        $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);
+    }
+}

+ 20 - 0
config/passport.php

@@ -0,0 +1,20 @@
+<?php
+/**
+ * Created by PhpStorm.
+ * User: qiuzijian
+ * Date: 4/1/22
+ * Time: 6:48 PM
+ */
+/**
+ * 配置密码获取token基本参数
+ */
+return [
+    /**
+     * 密码授权令牌
+     */
+    'password' => [
+        'grant_type'    => env('OAUTH_GRANT_TYPE'),
+        'client_id'     => env('OAUTH_CLIENT_ID'),
+        'client_secret' => env('OAUTH_CLIENT_SECRET'),
+    ]
+];

Різницю між файлами не показано, бо вона завелика
+ 15 - 0
nohup.out