diff --git a/app/Http/Controllers/DataBase.php b/app/Http/Controllers/DataBase.php new file mode 100644 index 0000000..fc73829 --- /dev/null +++ b/app/Http/Controllers/DataBase.php @@ -0,0 +1,40 @@ +orderBy('id') + ->get() + ->toArray(); + foreach ($result as $value) { + $value->blog_rss_judge ? $value->blog_rss_judge = 1 : $value->blog_rss_judge = 0; + DB::table('blog_link') + ->insert([ + 'blogName' => $value->blog_name, + 'blogUrl' => $value->blog_url, + 'blogDescription' => $value->blog_introduce, + 'blogOwnEmail' => $value->blog_owner_email, + 'blogIcon' => $value->blog_icon, + 'blogRssJudge' => $value->blog_rss_judge, + 'blogRSS' => $value->blog_rss, + 'blogServerHost' => $value->blog_serverhost, + 'blogLocation' => $value->blog_location, + 'blogSetColor' => $value->blog_sel_color, + 'created_at' => date('Y-m-d H:i:s'), + ]); + } + } +} diff --git a/app/Http/Controllers/Function/Link.php b/app/Http/Controllers/Function/Link.php index f60de43..43b2e06 100644 --- a/app/Http/Controllers/Function/Link.php +++ b/app/Http/Controllers/Function/Link.php @@ -40,10 +40,12 @@ public function __construct() */ public function apiCustomAdd(HttpRequest $request): JsonResponse { - /** @var array $returnData Json的 return 返回值 */ - /** @var Validator $dataCheck 数据判断 */ - /** @var array $errorInfo 错误信息 */ - /** @var array $errorSingle 输出单个错误信息 */ + /** + * @var array $returnData Json的 return 返回值 + * @var Validator $dataCheck 数据判断 + * @var array $errorInfo 错误信息 + * @var array $errorSingle 输出单个错误信息 + */ // 检查数据 $dataCheck = Validator::make($request->all(), [ 'userEmail' => 'required|email', @@ -110,6 +112,7 @@ public function apiCustomAdd(HttpRequest $request): JsonResponse 'blogUserLocation' => $request->userLocation, 'blogSetColor' => $request->userSelColor, 'blogRemark' => $request->userRemark, + 'blogServerHost' => $request->userServerHost, ]); if ($insertData) { // 邮件发送系统 @@ -435,8 +438,10 @@ private function apiCustomBlogCheckSendEmail(): void */ public function apiCustomBlogVerify(HttpRequest $request): JsonResponse { - /** @var array $returnData Json的 return 返回值 */ - /** @var mixed $cookie 保存Cookie数据 */ + /** + * @var array $returnData Json的 return 返回值 + * @var mixed $cookie 保存Cookie数据 + */ //数据验证 $dataCheck = Validator::make($request->all(), [ 'id' => 'required|int', @@ -445,7 +450,6 @@ public function apiCustomBlogVerify(HttpRequest $request): JsonResponse ]); // 验证数据是否合法 if (!$dataCheck->fails()) { - $cookie = cookie('friend_edit', '', -1, '/'); // 检查内容是否存在 $resultBlog = DB::table('blog_link') ->select('id', 'blogOwnEmail') @@ -479,6 +483,8 @@ public function apiCustomBlogVerify(HttpRequest $request): JsonResponse 'id' => $resultBlog->id ], ]; + return Response::json($returnData, $returnData['code']) + ->cookie($cookie); } else { // 验证码验证失败 $returnData = [ @@ -539,8 +545,197 @@ public function apiCustomBlogVerify(HttpRequest $request): JsonResponse ], ]; } - return Response::json($returnData, $returnData['code']) - ->cookie($cookie); + return Response::json($returnData, $returnData['code']); + } + + /** + * 修改友链API + * + * @param HttpRequest $request 获取HTTP中 Request 数据 + * @return JsonResponse 返回JSON数据 + */ + public function apiCustomEdit(HttpRequest $request, string $friendId): JsonResponse + { + /** + * @var array $returnData Json的 return 返回值 + * @var Validator $dataCheck 数据判断 + * @var array $errorInfo 错误信息 + * @var array $errorSingle 输出单个错误信息 + */ + // 验证Cookie是否有效 + if ($request->hasCookie('friend_edit')) { + // 检查Cookie解析是否为此博客 + if (password_verify($friendId, $request->cookie('friend_edit'))) { + // 获取数据库 + $resultBlog = DB::table('blog_link') + ->find($friendId); + if (!empty($resultBlog->id)) { + // 检查数据 + $dataCheck = Validator::make($request->all(), [ + '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', + 'userRemark' => '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 { + // 检查数据 + if (empty($request->checkRssJudge)) { + $request->checkRssJudge = 0; + } + // 数据载入数组 + $this->data['oldBlog'] = (object)[ + 'blogOwnEmail' => $resultBlog->blogOwnEmail, + 'blogUrl' => $resultBlog->blogUrl, + 'blogName' => $resultBlog->blogName, + 'blogDescription' => $resultBlog->blogDescription, + 'blogIcon' => $resultBlog->blogIcon, + 'blogRssJudge' => $resultBlog->blogRssJudge, + 'blogRSS' => $resultBlog->blogRSS, + 'blogSetColor' => $resultBlog->blogSetColor, + 'blogRemark' => $resultBlog->blogRemark, + 'blogServerHost' => $resultBlog->blogServerHost, + ]; + $this->data['blog'] = (object)[ + 'blogOwnEmail' => $request->userEmail, + 'blogUrl' => $request->userUrl, + 'blogName' => $request->userBlog, + 'blogDescription' => $request->userDescription, + 'blogIcon' => $request->userIcon, + 'blogRssJudge' => $request->checkRssJudge, + 'blogRSS' => $request->userRss, + 'blogSetColor' => $request->userSelColor, + 'blogRemark' => $request->userRemark, + 'blogServerHost' => $request->userServerHost, + ]; + + // 修改数据 + $updateData = DB::table('blog_link') + ->where('id', $resultBlog->id) + ->update([ + 'blogOwnEmail' => $request->userEmail, + 'blogUrl' => $request->userUrl, + 'blogName' => $request->userBlog, + 'blogDescription' => $request->userDescription, + 'blogIcon' => $request->userIcon, + 'blogRssJudge' => $request->checkRssJudge, + 'blogRSS' => $request->userRss, + 'blogSetColor' => $request->userSelColor, + 'blogRemark' => $request->userRemark, + 'blogServerHost' => $request->userServerHost, + 'updated_at' => date('Y-m-d H:i:s'), + ]); + + if ($updateData) { + // 邮件发送系统 + // 新用户 + if ($this->data['oldBlog']->blogOwnEmail != $this->data['blog']->blogOwnEmail) { + $this->data['sendEmail'] = [ + 'userEmail' => $this->data['blog']->blogOwnEmail, + 'userBlog' => $this->data['blog']->blogName, + 'userUrl' => $this->data['blog']->blogUrl, + ]; + Mail::send('mail.link-custom-edit', $this->data, function (Message $mail) { + $mail->from(env('MAIL_USERNAME'), env('APP_NAME')); + $mail->to($this->data['sendEmail']['userEmail']); + $mail->subject(env('APP_NAME') . '-友链自主修改通知'); + }); + } + $this->data['sendEmail'] = [ + 'userEmail' => $this->data['oldBlog']->blogOwnEmail, + 'userBlog' => $this->data['oldBlog']->blogName, + 'userUrl' => $this->data['oldBlog']->blogUrl, + ]; + // 用户 + Mail::send('mail.link-custom-edit', $this->data, function (Message $mail) { + $mail->from(env('MAIL_USERNAME'), env('APP_NAME')); + $mail->to($this->data['sendEmail']['userEmail']); + $mail->subject(env('APP_NAME') . '-友链自主修改通知'); + }); + // 站长 + Mail::send('mail.link-custom-edit-admin', $this->data, function (Message $mail) { + $mail->from(env('MAIL_USERNAME'), env('APP_NAME')); + $mail->to($this->data['sqlEmail']); + $mail->subject(env('APP_NAME') . '-友链自主修改通知'); + }); + + // 消息成功通知 + $returnData = [ + 'output' => 'Success', + 'code' => 200, + 'data' => [ + 'message' => '您已成功修改', + ], + ]; + $cookie = cookie('friend_edit', '', -1, '/'); + return Response::json($returnData, $returnData['code']) + ->cookie($cookie); + } else { + $returnData = [ + 'output' => 'UpdateFail', + 'code' => 403, + 'data' => [ + 'message' => '更新失败请联系管理员', + ], + ]; + } + } + } else { + $returnData = [ + 'output' => 'NoBlog', + 'code' => 403, + 'data' => [ + 'message' => '没有对应博客', + ], + ]; + } + } else { + $returnData = [ + 'output' => 'Mismatch', + 'code' => 403, + 'data' => [ + 'message' => '不匹配', + ], + ]; + } + } else { + $returnData = [ + 'output' => 'InvalidValidation', + 'code' => 403, + 'data' => [ + 'message' => '无效验证', + ], + ]; + } + + return Response::json($returnData, $returnData['code']); } protected function viewEditFriend(HttpRequest $request, $friendId): Application|Factory|View|RedirectResponse @@ -586,14 +781,14 @@ protected function viewEditFriend(HttpRequest $request, $friendId): Application| } } - protected function viewLink(HttpRequest $request): Factory|View|Application + protected function viewLink(): Factory|View|Application { $this->data['webSubTitle'] = '友链'; - $this->GetFriendsLink($this->data); + $this->getFriendsLink($this->data); return view('function.link', $this->data); } - private function GetFriendsLink(array &$data): void + private function getFriendsLink(array &$data): void { $data['blogLink'] = DB::table('blog_link')->whereNotIn('blog_link.blogLocation', [0])->get()->toArray(); $data['blogSort'] = DB::table('blog_sort')->orderBy('blog_sort.sort')->get()->toArray(); @@ -629,23 +824,29 @@ protected function viewSearchFriend($friendId): Factory|View|Application|Redirec ->select('id', 'blogOwnEmail', 'blogName') ->find($friendId); if (!empty($resultBlog->id)) { - // 处理加密邮箱 - $strlenEmail = strlen($resultBlog->blogOwnEmail); - ($strlenEmail > 4) ? $j = 1 : $j = 0; - for ($i = 0; $i < $strlenEmail; $i++) { - if ($resultBlog->blogOwnEmail[$i] != '@') { - if ($i > $j && $i < $strlenEmail - ($j + 1)) { - $dataEmail[$i] = '*'; + if (!empty($resultBlog->blogOwnEmail)) { + // 处理加密邮箱 + $strlenEmail = strlen($resultBlog->blogOwnEmail); + ($strlenEmail > 4) ? $j = 1 : $j = 0; + for ($i = 0; $i < $strlenEmail; $i++) { + if ($resultBlog->blogOwnEmail[$i] != '@') { + if ($i > $j && $i < $strlenEmail - ($j + 1)) { + $dataEmail[$i] = '*'; + } else { + $dataEmail[$i] = $resultBlog->blogOwnEmail[$i]; + } } else { $dataEmail[$i] = $resultBlog->blogOwnEmail[$i]; } - } else { - $dataEmail[$i] = $resultBlog->blogOwnEmail[$i]; } + $resultBlog->blogOwnEmail = implode($dataEmail); + $this->data['blog'] = $resultBlog; + return view('function.edit-check', $this->data); + } else { + $resultBlog->blogOwnEmail = null; + $this->data['blog'] = $resultBlog; + return view('function.edit-unemail', $this->data); } - $resultBlog->blogOwnEmail = implode($dataEmail); - $this->data['blog'] = $resultBlog; - return view('function.edit-check', $this->data); } else { return Response::redirectTo(route('function.edit-search')); } diff --git a/app/Http/Controllers/Index.php b/app/Http/Controllers/Index.php index b4b18fe..8141898 100644 --- a/app/Http/Controllers/Index.php +++ b/app/Http/Controllers/Index.php @@ -30,6 +30,7 @@ public function __construct() 'webFooter' => DB::table('info')->find(8)->data, 'webKeyword' => empty($tempStorage = DB::table('info')->find(6)->data) ? '筱锋,凌中的锋雨,xiao_lfeng' : $tempStorage, 'sqlAuthor' => empty($tempStorage = DB::table('info')->find(12)->data) ? '筱锋xiao_lfeng' : $tempStorage, + 'sqlEmail' => empty($tempStorage = DB::table('info')->find(17)->data) ? 'gm@x-lf.cn' : $tempStorage, 'sqlCopyRightYear' => DB::table('info')->find(13)->data, 'sqlIcp' => DB::table('info')->find(10)->data, 'sqlGongan' => DB::table('info')->find(11)->data, diff --git a/database/migrations/2023_06_13_060913_update_info_table.php b/database/migrations/2023_06_13_060913_update_info_table.php index 54713f1..155faf3 100644 --- a/database/migrations/2023_06_13_060913_update_info_table.php +++ b/database/migrations/2023_06_13_060913_update_info_table.php @@ -35,6 +35,9 @@ public function up() DB::table('info')->insert(['value' => 'author', 'created_at' => date('Y-m-d H:i:s')]); DB::table('info')->insert(['value' => 'copyRightYear', 'created_at' => date('Y-m-d H:i:s')]); DB::table('info')->insert(['value' => 'blog', 'created_at' => date('Y-m-d H:i:s')]); + DB::table('info')->insert(['value' => 'applicationRule', 'created_at' => date('Y-m-d H:i:s')]); + DB::table('info')->insert(['value' => 'applicationInfo', 'created_at' => date('Y-m-d H:i:s')]); + DB::table('info')->insert(['value' => 'email', 'created_at' => date('Y-m-d H:i:s')]); }); } diff --git a/resources/views/function/edit-check.blade.php b/resources/views/function/edit-check.blade.php index a1ee5b5..c6d17db 100644 --- a/resources/views/function/edit-check.blade.php +++ b/resources/views/function/edit-check.blade.php @@ -21,58 +21,14 @@ class="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translat style="clip-path: polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)">