cqp 1 giorno fa
parent
commit
83b2bae69b

+ 11 - 0
app/Http/Controllers/Api/LoginController.php

@@ -27,4 +27,15 @@ class LoginController extends BaseController
             return $this->json_return(201, $data);
         }
     }
+
+    public function shareLogin(Request $request){
+        $service = new LoginService();
+        list($status,$data) = $service->cLogin($request->all());
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201, $data);
+        }
+    }
 }

+ 18 - 0
app/Service/ItemService.php

@@ -3475,6 +3475,10 @@ class ItemService extends Service
      */
     public function progressOutsideRule(&$data, $user)
     {
+        if(empty($data['share_token'])) return [false, '分享链接不能为空'];
+        list($status, $msg) = $this->shareCheck($data['share_token'], $user['id']);
+        if(! $status) return [false, $msg];
+
         // 1. 基础校验
         if (empty($data['id'])) return [false, '任务ID不能为空'];
 
@@ -3582,4 +3586,18 @@ class ItemService extends Service
 
         return [true, ''];
     }
+
+    public function shareCheck($share_token = "", $employee = 0){
+        $employee_id = ItemNodeMissionShare::from('item_node_mission_share as a')
+            ->join('item_node_mission_details as b', 'b.item_node_mission_id','a.item_node_mission_id')
+            ->where('a.del_time',0)
+            ->where('b.del_time',0)
+            ->where('b.type',ItemNodeMissionDetails::type_one)
+            ->where('a.share_token', $share_token)
+            ->pluck('b.data_id')
+            ->toArray();
+        if(empty($employee_id) || ! in_array($employee, $employee_id)) return [false, '账号无该链接编辑权限'];
+
+        return [true, ''];
+    }
 }

+ 32 - 0
app/Service/LoginService.php

@@ -6,6 +6,8 @@ use App\Model\Depart;
 use App\Model\Employee;
 use App\Model\EmployeeDepartPermission;
 use App\Model\EmployeeRole;
+use App\Model\ItemNodeMissionDetails;
+use App\Model\ItemNodeMissionShare;
 use App\Model\Role;
 use App\Model\RoleMenu;
 use App\Model\RoleMenuButton;
@@ -71,6 +73,36 @@ class LoginService extends Service
         ]];
     }
 
+    public function shareLogin($data){
+        if(empty($data['account'])) return [false, '账号不能为空'];
+        if(empty($data['password'])) return [false, '密码不能为空'];
+        if(empty($data['share_token'])) return [false, '分享链接不能为空'];
+
+        $account = $data['account'];
+        $password = $data['password'];
+        $employee = Employee::where('del_time',0)
+            ->where('account', $account)
+            ->first();
+        if(empty($employee)) return [false,'账号不存在或已被删除'];
+        $employee = $employee->toArray();
+
+        if(! Hash::check($password, $employee['password'])) return [false,'密码错误'];
+        if($employee['is_admin'] != Employee::IS_ADMIN_ZERO) return [false, '账号限制登录'];
+
+        list($status, $msg) = (new ItemService())->shareCheck($data['share_token'], $employee['id']);
+        if(! $status) return [false, $msg];
+
+        //生成token
+        list($status, $jwtToken) = TokenService::getToken($employee);
+        if(! $status) return [false, $jwtToken];
+
+        return [true, [
+            'token' => $jwtToken,
+            'employee_id' => $employee['id'],
+            'title' => $employee['title'],
+        ]];
+    }
+
     private function getPersonRoleForSysMenuList($employee_id) {
         $sysMenu = SysMenu::where('del_time',0)
             ->where('type', SysMenu::type_zero)

+ 2 - 0
routes/api.php

@@ -22,6 +22,8 @@ Route::any('getExport/{file_name}','Api\ExportFileController@getExport');
 
 //分享外部链接
 Route::any('shareOutSideHTML', 'Api\ItemController@shareOutSideHTML');
+//外部链接登录
+Route::any('shareLogin', 'Api\LoginController@shareLogin');
 
 Route::group(['middleware'=> ['checkLogin']],function ($route){
     //文件上传统一方法