From 2c0713469112cf9219e5990ebd3ee017c429d722 Mon Sep 17 00:00:00 2001
From: guosheng <gs@bronet.cn>
Date: Tue, 19 Nov 2019 14:55:41 +0800
Subject: [PATCH] 授权登录

---
 .idea/workspace.xml                 | 139 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------
 application/api/controller/User.php |  27 +++++++++++++++++++++++++++
 application/common/library/Auth.php |  43 ++++++++++++++++++++++++++++---------------
 application/extra/verify.php        |  12 ++++++++++++
 4 files changed, 161 insertions(+), 60 deletions(-)

diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 095e85c..e2a2623 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -2,8 +2,9 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="e93f11c2-a7d9-4d35-8b1c-8dd18e7f5fef" name="Default" comment="">
-      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
       <change type="MODIFICATION" beforePath="$PROJECT_DIR$/application/api/controller/User.php" afterPath="$PROJECT_DIR$/application/api/controller/User.php" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/application/common/library/Auth.php" afterPath="$PROJECT_DIR$/application/common/library/Auth.php" />
+      <change type="MODIFICATION" beforePath="$PROJECT_DIR$/application/extra/verify.php" afterPath="$PROJECT_DIR$/application/extra/verify.php" />
     </list>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="TRACKING_ENABLED" value="true" />
@@ -17,17 +18,43 @@
       <file leaf-file-name="User.php" pinned="false" current-in-tab="true">
         <entry file="file://$PROJECT_DIR$/application/api/controller/User.php">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="137">
-              <caret line="54" column="65" lean-forward="true" selection-start-line="54" selection-start-column="65" selection-end-line="54" selection-end-column="65" />
+            <state relative-caret-position="325">
+              <caret line="69" column="52" lean-forward="true" selection-start-line="69" selection-start-column="52" selection-end-line="69" selection-end-column="52" />
               <folding>
                 <element signature="e#38#68#0#PHP" expanded="true" />
                 <element signature="e#391#463#0#PHP" expanded="false" />
                 <element signature="e#469#1207#0#PHP" expanded="false" />
+                <element signature="e#2881#3155#0#PHP" expanded="false" />
+                <element signature="e#3160#3384#0#PHP" expanded="false" />
+                <element signature="e#3390#3780#0#PHP" expanded="false" />
+                <element signature="e#3785#3994#0#PHP" expanded="false" />
               </folding>
             </state>
           </provider>
         </entry>
       </file>
+      <file leaf-file-name="Auth.php" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/application/common/library/Auth.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="100">
+              <caret line="214" column="47" lean-forward="true" selection-start-line="214" selection-start-column="47" selection-end-line="214" selection-end-column="47" />
+              <folding>
+                <element signature="e#38#64#0#PHP" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="Validate.php" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/thinkphp/library/think/Validate.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="378">
+              <caret line="112" column="20" lean-forward="false" selection-start-line="112" selection-start-column="20" selection-end-line="112" selection-end-column="20" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
     </leaf>
   </component>
   <component name="FindInProjectRecents">
@@ -75,8 +102,9 @@
         <option value="$PROJECT_DIR$/.gitlab-ci.yml" />
         <option value="$PROJECT_DIR$/.gitignore" />
         <option value="$PROJECT_DIR$/public/.gitignore" />
-        <option value="$PROJECT_DIR$/application/extra/verify.php" />
         <option value="$PROJECT_DIR$/application/api/controller/User.php" />
+        <option value="$PROJECT_DIR$/application/extra/verify.php" />
+        <option value="$PROJECT_DIR$/application/common/library/Auth.php" />
       </list>
     </option>
   </component>
@@ -94,11 +122,11 @@
     <sorting>DEFINITION_ORDER</sorting>
   </component>
   <component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
-  <component name="ProjectFrameBounds">
-    <option name="x" value="200" />
-    <option name="y" value="8" />
-    <option name="width" value="1940" />
-    <option name="height" value="1074" />
+  <component name="ProjectFrameBounds" extendedState="1">
+    <option name="x" value="143" />
+    <option name="y" value="78" />
+    <option name="width" value="1589" />
+    <option name="height" value="934" />
   </component>
   <component name="ProjectView">
     <navigator currentView="ProjectPane" proportions="" version="1">
@@ -133,6 +161,19 @@
               <item name="areial" type="b2602c69:ProjectViewProjectNode" />
               <item name="areial" type="2a2b976b:PhpTreeStructureProvider$1" />
               <item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="admin" type="2a2b976b:PhpTreeStructureProvider$1" />
+            </path>
+            <path>
+              <item name="areial" type="b2602c69:ProjectViewProjectNode" />
+              <item name="areial" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="admin" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="model" type="2a2b976b:PhpTreeStructureProvider$1" />
+            </path>
+            <path>
+              <item name="areial" type="b2602c69:ProjectViewProjectNode" />
+              <item name="areial" type="2a2b976b:PhpTreeStructureProvider$1" />
+              <item name="application" type="2a2b976b:PhpTreeStructureProvider$1" />
               <item name="extra" type="2a2b976b:PhpTreeStructureProvider$1" />
             </path>
             <path>
@@ -183,7 +224,7 @@
       <workItem from="1574062081278" duration="18239000" />
       <workItem from="1574122453532" duration="15780000" />
       <workItem from="1574141466352" duration="745000" />
-      <workItem from="1574143209694" duration="1978000" />
+      <workItem from="1574143209694" duration="3312000" />
     </task>
     <task id="LOCAL-00001" summary="调试">
       <created>1574145133364</created>
@@ -196,13 +237,13 @@
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="46671000" />
+    <option name="totallyTimeSpent" value="48005000" />
   </component>
   <component name="ToolWindowManager">
-    <frame x="200" y="8" width="1940" height="1074" extended-state="0" />
+    <frame x="143" y="78" width="1589" height="934" extended-state="1" />
     <editor active="true" />
     <layout>
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.14893617" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.18312623" sideWeight="0.5" order="1" side_tool="false" content_ui="combo" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="true" content_ui="tabs" />
       <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
@@ -257,20 +298,6 @@
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/application/admin/view/wonderful/add.html">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="925">
-          <caret line="37" column="81" lean-forward="true" selection-start-line="37" selection-start-column="81" selection-end-line="37" selection-end-column="81" />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/application/admin/view/wonderful/edit.html">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="125">
-          <caret line="5" column="156" lean-forward="false" selection-start-line="5" selection-start-column="156" selection-end-line="5" selection-end-column="156" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/application/admin/view/video/index.html">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="250">
@@ -549,14 +576,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/application/common/library/Auth.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="303">
-          <caret line="195" column="20" lean-forward="false" selection-start-line="195" selection-start-column="20" selection-end-line="195" selection-end-column="20" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/application/common/controller/Api.php">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="303">
@@ -573,14 +592,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/application/extra/verify.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="100">
-          <caret line="4" column="55" lean-forward="true" selection-start-line="4" selection-start-column="55" selection-end-line="4" selection-end-column="55" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/.gitignore">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="25">
@@ -605,14 +616,52 @@
         </state>
       </provider>
     </entry>
+    <entry file="file://$PROJECT_DIR$/thinkphp/library/think/Validate.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="378">
+          <caret line="112" column="20" lean-forward="false" selection-start-line="112" selection-start-column="20" selection-end-line="112" selection-end-column="20" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/application/admin/model/User.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-300">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/application/extra/verify.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="300">
+          <caret line="12" column="11" lean-forward="true" selection-start-line="12" selection-start-column="11" selection-end-line="12" selection-end-column="11" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/application/common/library/Auth.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="100">
+          <caret line="214" column="47" lean-forward="true" selection-start-line="214" selection-start-column="47" selection-end-line="214" selection-end-column="47" />
+          <folding>
+            <element signature="e#38#64#0#PHP" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
     <entry file="file://$PROJECT_DIR$/application/api/controller/User.php">
       <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="137">
-          <caret line="54" column="65" lean-forward="true" selection-start-line="54" selection-start-column="65" selection-end-line="54" selection-end-column="65" />
+        <state relative-caret-position="325">
+          <caret line="69" column="52" lean-forward="true" selection-start-line="69" selection-start-column="52" selection-end-line="69" selection-end-column="52" />
           <folding>
             <element signature="e#38#68#0#PHP" expanded="true" />
             <element signature="e#391#463#0#PHP" expanded="false" />
             <element signature="e#469#1207#0#PHP" expanded="false" />
+            <element signature="e#2881#3155#0#PHP" expanded="false" />
+            <element signature="e#3160#3384#0#PHP" expanded="false" />
+            <element signature="e#3390#3780#0#PHP" expanded="false" />
+            <element signature="e#3785#3994#0#PHP" expanded="false" />
           </folding>
         </state>
       </provider>
diff --git a/application/api/controller/User.php b/application/api/controller/User.php
index d1afbd0..8720118 100644
--- a/application/api/controller/User.php
+++ b/application/api/controller/User.php
@@ -108,4 +108,31 @@ class User extends Api
         $this->success('SUCCESS',$data);
     }
 
+    /**
+     * @ApiTitle    (地区分类)
+     * @ApiSummary  (地区分类)
+     * @ApiMethod   (GET)
+     * @ApiRoute    (/api/user/type)
+     * @ApiHeaders  (name=token, type=string, required=true, description="请求的Token")
+     *
+     * @ApiReturn({
+    "code": 1,
+    "msg": "成功",
+    "time": "1571492001",
+    "data": {
+    "id": 4,//分类id
+    "area_name": //分类名称
+    "thumbnail": //图片
+    }
+    })
+     */
+    public function type()
+    {
+        $data = Db::name('type')
+            ->field('id,area_name,thumbnail')
+            ->order('id desc')
+            ->select();
+        $this->success('SUCCESS',$data);
+    }
+
 }
diff --git a/application/common/library/Auth.php b/application/common/library/Auth.php
index 102199d..8a1b441 100644
--- a/application/common/library/Auth.php
+++ b/application/common/library/Auth.php
@@ -193,23 +193,36 @@ class Auth
      * @param string $password 密码
      * @return boolean
      */
-    public function login($account, $password)
+    public function login($result)
     {
-        $field = Validate::is($account, 'email') ? 'email' : (Validate::regex($account, '/^1\d{10}$/') ? 'mobile' : 'username');
-        $user = User::get([$field => $account]);
-        if (!$user) {
-            $this->setError('Account is incorrect');
-            return false;
-        }
-
-        if ($user->status != 'normal') {
-            $this->setError('Account is locked');
-            return false;
-        }
-        if ($user->password != $this->getEncryptPassword($password, $user->salt)) {
-            $this->setError('Password is incorrect');
-            return false;
+//        $field = Validate::is($account, 'email') ? 'email' : (Validate::regex($account, '/^1\d{10}$/') ? 'mobile' : 'username');
+//        $user = User::get([$field => $account]);
+//        if (!$user) {
+//            $this->setError('Account is incorrect');
+//            return false;
+//        }
+//
+//        if ($user->status != 'normal') {
+//            $this->setError('Account is locked');
+//            return false;
+//        }
+//        if ($user->password != $this->getEncryptPassword($password, $user->salt)) {
+//            $this->setError('Password is incorrect');
+//            return false;
+//        }
+
+        $userModel = new \app\admin\model\User();
+        $where = ['openid'=>$result['openid']];
+        $ret = $userModel->where($where)->find();
+        if ($ret) {
+            unset($result['nickname']);
+            $userModel->where($where)->update($result);
+        } else {
+            $result['jointime'] = time();
+            $result['joinip'] = request()->ip();
+            $userModel->create($result);
         }
+        $user = User::get($where);
 
         //直接登录会员
         $this->direct($user->id);
diff --git a/application/extra/verify.php b/application/extra/verify.php
index 0d02d54..9bc4f10 100644
--- a/application/extra/verify.php
+++ b/application/extra/verify.php
@@ -4,4 +4,16 @@ return [
         'app_id' => 'wx1f51f42105b63343',
         'secret' => 'e7f2d59e21fff6f503744c584d2d6f26',
     ],
+    'user' => [
+        'rule' => [
+            'code'       => 'require',
+            'nickname'   => 'require',
+            'avatar'     => 'require',
+        ],
+        'msg' => [
+            'name.require'     => '昵称不能为空',
+            'code.require'     => 'code码不能为空',
+            'avatar'           => '头像不能为空',
+        ]
+    ],
 ];
\ No newline at end of file
--
libgit2 0.24.0