From 09b3c1e9243c8e5454912c5527ae83b035aeb243 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 15 Jul 2023 17:29:47 +0800 Subject: [PATCH] =?UTF-8?q?Modify:=20=E7=AE=A1=E7=90=86=E5=91=98=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=8F=8B=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 管理员修改友链操作,强制修改 Signed-off-by: XiaoLFeng --- app/Http/Controllers/Console/Link.php | 95 ++++++++++++++++++- .../views/console/friends-link/edit.blade.php | 93 ++++++++++++++++-- routes/api.php | 4 +- 3 files changed, 180 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/Console/Link.php b/app/Http/Controllers/Console/Link.php index 130fb5a..cb76bfe 100644 --- a/app/Http/Controllers/Console/Link.php +++ b/app/Http/Controllers/Console/Link.php @@ -12,10 +12,13 @@ use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\View; +use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Response; +use Illuminate\Support\Facades\Validator; class Link extends Controller { @@ -124,11 +127,99 @@ protected function ViewSort(): Factory|View|Application protected function ViewColor(): Factory|View|Application { - return view('console.friends-link.color',$this->data); + return view('console.friends-link.color', $this->data); } - protected function apiConsoleAdd() { + public function apiConsoleAdd() + { // 检查数据 } + + public function apiConsoleEdit(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') + ]); + $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']); + } } diff --git a/resources/views/console/friends-link/edit.blade.php b/resources/views/console/friends-link/edit.blade.php index d56572d..7250fdd 100644 --- a/resources/views/console/friends-link/edit.blade.php +++ b/resources/views/console/friends-link/edit.blade.php @@ -44,8 +44,9 @@ class="text-black dark:text-white"> 条

- @@ -59,7 +60,7 @@ class="text-black dark:text-white"> 条

-
+
@@ -165,7 +166,8 @@ class="bg-gray-100 border border-gray-300 text-gray-900 text-sm rounded-lg focus
+ @if($blog[0]->blogRssJudge == 0)disabled @endif>
@@ -196,7 +198,7 @@ class="bg-gray-100 border border-gray-300 text-gray-900 text-sm rounded-lg focus
- @if(empty($blogColor[0])) @@ -242,6 +244,9 @@ class="bg-gray-100 border border-gray-300 text-gray-900 text-sm rounded-lg focus @endif
+
@@ -249,8 +254,9 @@ class="bg-gray-100 border border-gray-300 text-gray-900 text-sm rounded-lg focus
- @@ -307,6 +313,15 @@ class="w-16 h-16 p-1 rounded-full ring-2 ring-gray-300 dark:ring-gray-500 me-2 s
+ + @@ -348,5 +363,65 @@ class="w-16 h-16 p-1 rounded-full ring-2 ring-gray-300 dark:ring-gray-500 me-2 s $('#colorLight').addClass(colorLight); $('#colorDark').addClass(colorDark); }); + + class Toast { + static toggle(data, icon) { + this.set(data, icon); + $('#toast').fadeIn(300); + setTimeout(function () { + $('#toast').fadeOut(300); + }, 3000); + } + + static set(data, icon) { + $('#toast-icon').html(icon); + $('#toast-info').text(data); + } + } + + class Enum { + static userEmail = '用户邮箱'; + static userServerHost = '服务商'; + static userBlog = '博客名字'; + static userUrl = '博客地址'; + static userDescription = '博客描述'; + static userIcon = '图片地址'; + static checkRssJudge = 'RSS选项'; + static userRss = 'RSS地址'; + static userLocation = '所属位置'; + static userSelColor = '选择颜色'; + } + + function ajax() { + $.ajax({ + async: true, + method: "POST", + data: $('#FormData').serialize(), + url: '{{ route('api.link.console.edit') }}', + dataType: "json", + success: function (returnData) { + if (returnData.output === "Success") { + Toast.toggle('友链修改成功', ''); + setTimeout(function () { + location.href = '{{ route('console.friends-link.list') }}'; + }, 3000); + } else { + Toast('未知错误', ''); + } + }, + error: function (returnData) { + Toast.set('其他错误', ''); + if (returnData.responseJSON.output === 'DataFormatError') { + for (let key in Enum) { + if (returnData.responseJSON.data.errorSingle.info === key) { + Toast.toggle(Enum[key] + '错误,注意格式', ''); + } + } + } else { + Toast.toggle('未知错误', ''); + } + } + }); + } diff --git a/routes/api.php b/routes/api.php index dc6accf..6437bc0 100644 --- a/routes/api.php +++ b/routes/api.php @@ -6,6 +6,7 @@ */ use App\Http\Controllers\Authme; +use App\Http\Controllers\Console\Link as ConsoleLink; use App\Http\Controllers\Function\Link; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -40,7 +41,8 @@ // 友链类 Route::prefix('link')->group(function () { 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::prefix('custom')->group(function () { Route::post('add', [Link::class, 'apiCustomAdd'])->name('api.link.custom.add');