From d26ebd970617d40c6a211ce31946d602961ba91a Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 15 Jul 2023 21:44:44 +0800 Subject: [PATCH] =?UTF-8?q?Modify:=20=E6=B7=BB=E5=8A=A0=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E8=A1=A8=E4=BB=A5=E5=8F=8A=E6=8E=A7=E5=88=B6=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化访问控制,处理函数调用方案,允许对于颜色的获取,添加对审核的内容 修改: - api.php - web.php - Link.php(Function) - Link.php(Console) Signed-off-by: XiaoLFeng --- app/Http/Controllers/Console/Link.php | 164 ++++++++++++++++++++++--- app/Http/Controllers/Function/Link.php | 1 + routes/api.php | 1 + routes/web.php | 8 +- 4 files changed, 148 insertions(+), 26 deletions(-) diff --git a/app/Http/Controllers/Console/Link.php b/app/Http/Controllers/Console/Link.php index cb76bfe..c2e08fb 100644 --- a/app/Http/Controllers/Console/Link.php +++ b/app/Http/Controllers/Console/Link.php @@ -15,8 +15,10 @@ use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Mail\Message; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Validator; @@ -30,27 +32,22 @@ public function __construct() $this->data = $data->data; } - public function ViewEdit(Request $request, $userId): Application|Factory|View|RedirectResponse + protected function viewEdit($userId): Application|Factory|View|RedirectResponse { - // 查找友链 - $resultBlog = DB::table('blog_link') - ->find($userId); - $this->data['blog'] = [ - $resultBlog, - ]; - $this->data['blogSort'] = DB::table('blog_sort') - ->orderBy('sort') - ->get() - ->toArray(); - $blogColor = DB::table('blog_color') - ->orderBy('id') - ->get() - ->toArray(); - for ($i = 0; !empty($blogColor[$i]->id); $i++) { - $blogColor[$i]->colorDarkType = str_replace('dark:', '', $blogColor[$i]->colorDarkType); - } - $this->data['blogColor'] = $blogColor; + $this->setDataForViewEditAndCheckAdmin($userId); // 没有查询到执行删除 + $this->data['subDescriptionForLine'] = '友链修改'; + if ($this->data['blog'][0] == null) return Response::redirectTo(route('console.friends-link.list')); + return view('console.friends-link.edit', $this->data); + } + + protected function viewCheckAdmin($userId): View|Factory|Application|RedirectResponse + { + $this->setDataForViewEditAndCheckAdmin($userId); + // 用户期望位置替换显示 + $this->data['blog'][0]->blogLocation = $this->data['blog'][0]->blogUserLocation; + // 没有查询到执行删除 + $this->data['subDescriptionForLine'] = '友链审核'; if ($this->data['blog'][0] == null) return Response::redirectTo(route('console.friends-link.list')); return view('console.friends-link.edit', $this->data); } @@ -109,9 +106,18 @@ protected function ViewCheck(Request $request): Factory|View|Application { // 检查是否存在含有未在本站分配位置 $this->data['blog'] = DB::table('blog_link') - ->whereIn('blog_link.blogLocation',[0]) + ->whereIn('blog_link.blogLocation', [0]) ->get() ->toArray(); + $blogColor = DB::table('blog_color') + ->orderBy('id') + ->get() + ->toArray(); + for ($i = 0; !empty($blogColor[$i]->id); $i++) { + $blogColor[$i]->colorLightType = str_replace('border-', 'ring-', $blogColor[$i]->colorLightType); + $blogColor[$i]->colorDarkType = str_replace('border-', 'ring-', $blogColor[$i]->colorDarkType); + } + $this->data['blogColor'] = $blogColor; return view('console.friends-link.check', $this->data); } @@ -222,4 +228,122 @@ public function apiConsoleEdit(Request $request): JsonResponse } return Response::json($returnData, $returnData['code']); } + + public function apiConsoleCheck(Request $request): JsonResponse + { + // 检查用户是否登录 + if (Auth::check()) { + if (Auth::user()->admin) { + // 处理获取数据 + $dataCheck = Validator::make($request->all(), [ + 'userId' => 'required|int', + 'userEmail' => 'required|email', + 'userServerHost' => 'required|string', + 'userBlog' => 'required|string', + 'userUrl' => 'required|regex:#[a-zA-z]+://[^\s]*#', + 'userDescription' => 'required|string', + 'userIcon' => 'required|regex:#[a-zA-z]+://[^\s]*#', + 'checkRssJudge' => 'boolean', + 'userRss' => 'string|regex:#[a-zA-z]+://[^\s]*#', + 'userSelColor' => 'required|int', + 'userLocation' => 'required|string', + ]); + if ($dataCheck->fails()) { + $errorType = array_keys($dataCheck->failed()); + $i = 0; + foreach ($dataCheck->failed() as $valueData) { + $errorInfo[$errorType[$i]] = array_keys($valueData); + if ($i == 0) { + $errorSingle = [ + 'info' => $errorType[$i], + 'need' => $errorInfo[$errorType[$i]], + ]; + } + $i++; + } + $returnData = [ + 'output' => 'DataFormatError', + 'code' => 403, + 'data' => [ + 'message' => '输入内容有错误', + 'errorSingle' => $errorSingle, + 'error' => $errorInfo, + ], + ]; + } else { + // 更新数据库 + DB::table('blog_link') + ->where([['id', '=', $request->userId]]) + ->update([ + 'blogOwnEmail' => $request->userEmail, + 'blogServerHost' => $request->userServerHost, + 'blogName' => $request->userBlog, + 'blogUrl' => $request->userUrl, + 'blogDescription' => $request->userDescription, + 'blogIcon' => $request->userIcon, + 'blogRssJudge' => $request->checkRssJudge, + 'blogRSS' => $request->userRss, + 'blogSetColor' => $request->userSelColor, + 'blogLocation' => $request->userLocation, + 'updated_at' => date('Y-m-d H:i:s') + ]); + Mail::send('mail.link-console-verify', $request->all(), function (Message $mail) { + global $request; + $mail->from(env('MAIL_USERNAME'), env('APP_NAME')); + $mail->to($request->userEmail); + $mail->subject(env('APP_NAME') . '-友链审核通过通知'); + }); + $returnData = [ + 'output' => 'Success', + 'code' => 200, + 'data' => [ + 'message' => '数据成功更新', + ], + ]; + } + } else { + $returnData = [ + 'output' => 'NoPermission', + 'code' => 403, + 'data' => [ + 'message' => '没有权限', + ], + ]; + } + } else { + $returnData = [ + 'output' => 'PleaseLogin', + 'code' => 403, + 'data' => [ + 'message' => '请登录', + ], + ]; + } + return Response::json($returnData, $returnData['code']); + } + + /** + * @param $userId + * @return void + */ + private function setDataForViewEditAndCheckAdmin($userId): void + { + $resultBlog = DB::table('blog_link') + ->find($userId); + $this->data['blog'] = [ + $resultBlog, + ]; + $this->data['blogSort'] = DB::table('blog_sort') + ->orderBy('sort') + ->get() + ->toArray(); + $blogColor = DB::table('blog_color') + ->orderBy('id') + ->get() + ->toArray(); + for ($i = 0; !empty($blogColor[$i]->id); $i++) { + $blogColor[$i]->colorDarkType = str_replace('dark:', '', $blogColor[$i]->colorDarkType); + } + $this->data['blogColor'] = $blogColor; + } } diff --git a/app/Http/Controllers/Function/Link.php b/app/Http/Controllers/Function/Link.php index 11097ff..13d26d3 100644 --- a/app/Http/Controllers/Function/Link.php +++ b/app/Http/Controllers/Function/Link.php @@ -113,6 +113,7 @@ public function apiCustomAdd(HttpRequest $request): JsonResponse 'blogSetColor' => $request->userSelColor, 'blogRemark' => $request->userRemark, 'blogServerHost' => $request->userServerHost, + 'created_at' => date('Y-m-d H:i:s'), ]); if ($insertData) { // 邮件发送系统 diff --git a/routes/api.php b/routes/api.php index 6437bc0..85bc9c9 100644 --- a/routes/api.php +++ b/routes/api.php @@ -43,6 +43,7 @@ Route::prefix('console')->group(function () { Route::post('add', [ConsoleLink::class, 'apiConsoleAdd'])->name('api.link.console.add'); Route::post('edit', [ConsoleLink::class, 'apiConsoleEdit'])->name('api.link.console.edit'); + Route::post('check', [ConsoleLink::class, 'apiConsoleCheck'])->name('api.link.console.check'); }); Route::prefix('custom')->group(function () { Route::post('add', [Link::class, 'apiCustomAdd'])->name('api.link.custom.add'); diff --git a/routes/web.php b/routes/web.php index 46c0817..4ad333f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -9,7 +9,6 @@ use App\Http\Controllers\Console\Link as ConsoleLink; use App\Http\Controllers\Function\Link as UserLink; use App\Http\Controllers\Index; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Route; @@ -59,11 +58,8 @@ Route::redirect('list', 'list/1'); Route::get('list', [ConsoleLink::class, 'ViewList'])->name('console.friends-link.list'); Route::get('check', [ConsoleLink::class, 'ViewCheck'])->name('console.friends-link.check'); - Route::get('edit/{userId}', function ($userId) { - $ConsoleLink = new ConsoleLink(); - $request = new Request(); - return $ConsoleLink->ViewEdit($request, $userId); - })->name('console.friends-link.edit'); + Route::get('edit/{userId}', [ConsoleLink::class, 'viewEdit'])->name('console.friends-link.edit'); + Route::get('check/{userId}', [ConsoleLink::class, 'viewCheckAdmin'])->name('console.friends-link.check-admin'); Route::get('add', [ConsoleLink::class, 'ViewAdd'])->name('console.friends-link.add'); Route::get('sort', [ConsoleLink::class, 'ViewSort'])->name('console.friends-link.sort'); Route::get('color', [ConsoleLink::class, 'ViewColor'])->name('console.friends-link.color');