作者 赵彬吉

update

@@ -15,6 +15,7 @@ use App\Models\User\ProjectMenu as ProjectMenuModel; @@ -15,6 +15,7 @@ use App\Models\User\ProjectMenu as ProjectMenuModel;
15 use App\Models\User\ProjectRole as ProjectRoleModel; 15 use App\Models\User\ProjectRole as ProjectRoleModel;
16 use App\Models\User\User; 16 use App\Models\User\User;
17 use App\Models\User\User as UserModel; 17 use App\Models\User\User as UserModel;
  18 +use App\Utils\EncryptUtils;
18 use Carbon\Carbon; 19 use Carbon\Carbon;
19 use Illuminate\Http\Request; 20 use Illuminate\Http\Request;
20 use Illuminate\Support\Facades\Cache; 21 use Illuminate\Support\Facades\Cache;
@@ -46,15 +47,19 @@ class ComController extends BaseController @@ -46,15 +47,19 @@ class ComController extends BaseController
46 } 47 }
47 48
48 /** 49 /**
49 - * 自动登录 50 + * 根据CODE自动登录
50 * @author zbj 51 * @author zbj
51 * @date 2023/7/25 52 * @date 2023/7/25
52 */ 53 */
53 - public function autologin() 54 + public function autologin(UserLoginLogic $logic, EncryptUtils $encrypt)
54 { 55 {
55 - $userLogic = new UserLoginLogic();  
56 - $url = $userLogic->autologin();  
57 - return redirect($url); 56 + $data = $encrypt->authcode($this->param['code'], 'DECODE', 'autologin');
  57 + $data = json_decode($data, true);
  58 + if(empty($data['project_id'])){
  59 + $this->response('无效Code',Code::USER_ERROR);
  60 + }
  61 + $res = $logic->autologin($data['project_id']);
  62 + $this->response('请求成功',Code::SUCCESS, $res);
58 } 63 }
59 64
60 /** 65 /**
@@ -19,6 +19,7 @@ use App\Models\Project\DeployOptimize; @@ -19,6 +19,7 @@ use App\Models\Project\DeployOptimize;
19 use App\Models\Project\Payment; 19 use App\Models\Project\Payment;
20 use App\Models\Project\Project; 20 use App\Models\Project\Project;
21 use App\Models\Task\Task; 21 use App\Models\Task\Task;
  22 +use App\Utils\EncryptUtils;
22 use Illuminate\Support\Facades\Cache; 23 use Illuminate\Support\Facades\Cache;
23 use Illuminate\Support\Facades\DB; 24 use Illuminate\Support\Facades\DB;
24 25
@@ -61,7 +62,7 @@ class ProjectLogic extends BaseLogic @@ -61,7 +62,7 @@ class ProjectLogic extends BaseLogic
61 'test_domain' => $item['deploy_build']['test_domain'] ?? 0, 62 'test_domain' => $item['deploy_build']['test_domain'] ?? 0,
62 'domain' => $item['deploy_optimize']['domain'] ?? 0, 63 'domain' => $item['deploy_optimize']['domain'] ?? 0,
63 'created_at' => date('Y年m月d日', strtotime($item['created_at'])), 64 'created_at' => date('Y年m月d日', strtotime($item['created_at'])),
64 - 'autologin_url' => env('APP_URL') . '/autologin?project_id=' . $item['id'], 65 + 'autologin_url' => $this->getAutoLoginUrl($item['id']),
65 'product_num' => Product::getNumByProjectId($item['id']), 66 'product_num' => Product::getNumByProjectId($item['id']),
66 'keyword_num' => $item['deploy_build']['keyword_num'] ?? 0, 67 'keyword_num' => $item['deploy_build']['keyword_num'] ?? 0,
67 'article_num' => Blog::getNumByProjectId($item['id']) + News::getNumByProjectId($item['id']), 68 'article_num' => Blog::getNumByProjectId($item['id']) + News::getNumByProjectId($item['id']),
@@ -72,6 +73,13 @@ class ProjectLogic extends BaseLogic @@ -72,6 +73,13 @@ class ProjectLogic extends BaseLogic
72 return $list; 73 return $list;
73 } 74 }
74 75
  76 + public function getAutoLoginUrl($project_id){
  77 + $encrypt = new EncryptUtils();
  78 + $code = $encrypt->authcode(json_encode(['project_id' => $project_id]), 'ENCODE', 'autologin', 3600);
  79 + $param = http_build_query(['code' => $code]);
  80 + return env('B_URL') . '/autologin?' . $param;
  81 + }
  82 +
75 public function getInfo($id) 83 public function getInfo($id)
76 { 84 {
77 parent::setWith(['payment', 'deploy_build', 'deploy_optimize']); //删除缓存要添加带with的cache_key 85 parent::setWith(['payment', 'deploy_build', 'deploy_optimize']); //删除缓存要添加带with的cache_key
@@ -63,33 +63,24 @@ class UserLoginLogic @@ -63,33 +63,24 @@ class UserLoginLogic
63 * @author zbj 63 * @author zbj
64 * @date 2023/7/25 64 * @date 2023/7/25
65 */ 65 */
66 - public function autologin() 66 + public function autologin($project_id)
67 { 67 {
68 - $current_url = url()->current();  
69 - $refer_url = url()->previous();  
70 - if ($current_url == $refer_url) {  
71 - Common::set_user_login(['user_id'=>0, 'ip'=>request()->ip(), 'project_id' => $this->param['project_id'] ?? 0,'remark' => ' - -|' . $refer_url]);  
72 - echo ' - -';  
73 - exit;  
74 - }  
75 - if (strpos($refer_url, 'www.quanqiusou.cn') === false && strpos($refer_url, 'crm.globalso.com') === false && strpos($refer_url, 'crm.globalso.com') === false) {  
76 - Common::set_user_login(['user_id'=>0, 'ip'=>request()->ip(), 'project_id' => $this->param['project_id'] ?? 0,'remark' => ' 来源错误|' . $refer_url]);  
77 - echo '来源错误';  
78 - exit;  
79 - }  
80 - if (!$this->param['project_id']) {  
81 - Common::set_user_login(['user_id'=>0, 'ip'=>request()->ip(), 'project_id' => $this->param['project_id'] ?? 0,'remark' => ' 没有传入链接|' . $refer_url]);  
82 - echo '没有连接';  
83 - exit;  
84 - }  
85 - $has_user = User::where('project_id', $this->param['project_id'])->orderBy('id', 'asc')->first(); 68 + $has_user = User::where('project_id', $project_id)->orderBy('id', 'asc')->select(['id','mobile','role_id','token','name','project_id'])->first();
86 if (empty($has_user->id)) { 69 if (empty($has_user->id)) {
87 - Common::set_user_login(['user_id'=>0, 'ip'=>request()->ip(), 'project_id' => $this->param['project_id'] ?? 0,'remark' => ' 该项目未找到注册账号|' . $refer_url]);  
88 - echo '该项目未找到注册账号';  
89 - exit; 70 + Common::set_user_login(['user_id'=>0, 'ip'=>request()->ip(), 'project_id' => $this->param['project_id'] ?? 0,'remark' => '该项目未找到注册账号']);
  71 + $this->fail('该项目未找到注册账号');
90 } 72 }
  73 + $info = $this->verifyRole($has_user->toArray());
91 74
92 - return redirect('admin'); 75 + if(!Cache::get($info['token'])){
  76 + //生成新token
  77 + $token = md5(uniqid().$info['id']);
  78 + //存储缓存
  79 + $info['token'] = $token;
  80 + Cache::add($token,$info);
  81 + }
  82 + Common::set_user_login(['user_id'=>$info['id'],'ip'=>request()->ip(),'project_id'=>$info['project_id'], 'remark' => '自动登录']);
  83 + return $info;
93 } 84 }
94 85
95 /** 86 /**
@@ -338,4 +338,5 @@ Route::group([], function () { @@ -338,4 +338,5 @@ Route::group([], function () {
338 Route::any('/stringTranslation', [\App\Http\Controllers\Bside\ComController::class, 'stringTranslation'])->name('com_stringTranslation'); 338 Route::any('/stringTranslation', [\App\Http\Controllers\Bside\ComController::class, 'stringTranslation'])->name('com_stringTranslation');
339 Route::any('/sendLoginSms', [\App\Http\Controllers\Bside\ComController::class, 'sendLoginSms'])->name('sendLoginSms'); 339 Route::any('/sendLoginSms', [\App\Http\Controllers\Bside\ComController::class, 'sendLoginSms'])->name('sendLoginSms');
340 Route::get('/file/download', [\App\Http\Controllers\Bside\FileController::class, 'download'])->name('file_download'); 340 Route::get('/file/download', [\App\Http\Controllers\Bside\FileController::class, 'download'])->name('file_download');
  341 + Route::any('/autologin', [\App\Http\Controllers\Bside\ComController::class, 'autologin'])->name('autologin');
341 }); 342 });