正在显示
4 个修改的文件
包含
34 行增加
和
29 行删除
| @@ -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 | }); |
-
请 注册 或 登录 后发表评论