Compare commits

...

2 Commits

Author SHA1 Message Date
d26ebd9706 Modify: 添加路由表以及控制器
优化访问控制,处理函数调用方案,允许对于颜色的获取,添加对审核的内容

修改:
- api.php
- web.php
- Link.php(Function)
- Link.php(Console)

Signed-off-by: XiaoLFeng <gm@x-lf.cn>
2023-07-15 21:44:44 +08:00
63f13aec73 Modify: 优化访问,前端逻辑
添加了分割线以及标题栏,加入邮件发送模板有关友链验证通过

添加:
- link-console-verify.blade.php
修改:
- check.blade.php
- edit.blade.php
- list.blade.php

Signed-off-by: XiaoLFeng <gm@x-lf.cn>
2023-07-15 21:41:51 +08:00
8 changed files with 303 additions and 70 deletions

View File

@ -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;
}
}

View File

@ -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) {
// 邮件发送系统

View File

@ -35,32 +35,38 @@ class="inline-flex items-center p-2 mt-2 ml-3 text-sm text-gray-500 rounded-lg s
<div class="px-10 py-5">
@if(!empty($blog))
<ul class="divide-y divide-gray-200 dark:divide-gray-700">
@foreach($blog as $blogValue)
<li class="py-3 sm:py-4">
<div class="flex items-center space-x-4">
<div class="flex-shrink-0">
<img id="Lazy" class="w-10 h-10 rounded-full" src="{{ asset('images/avatar.png') }}" data-src="{{ $blogValue->blogIcon }}" alt="Neil image">
</div>
<div class="flex-1 min-w-0">
<p class="text-sm font-bold text-gray-900 truncate dark:text-white">
{{ $blogValue->blogName }}
</p>
<p class="text-sm text-gray-400 truncate dark:text-gray-300">
<a href="{{ $blogValue->blogUrl }}" target="_blank">{{ $blogValue->blogUrl }}</a>
</p>
</div>
<a href="?" type="button" class="inline-flex items-center text-base font-semibold text-gray-900 dark:text-white">
<a href="{{ route('console.friends-link.edit',$blogValue->id) }}" type="button" class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-3 py-2 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">
<i class="bi bi-pencil"></i>
<span class="ps-1">编辑</span>
@foreach($blog as $blogValue)
<li class="py-3 sm:py-4">
<div class="flex items-center space-x-4">
<div class="flex-shrink-0">
<img id="Lazy"
class="w-10 h-10 p-1 rounded-full ring-2 {{ $blogColor[$blogValue->blogSetColor-1]->colorLightType }}
{{ $blogColor[$blogValue->blogSetColor-1]->colorDarkType }} sm:me-4"
src="{{ asset('images/avatar.png') }}" data-src="{{ $blogValue->blogIcon }}"
alt="Bordered avatar">
</div>
<div class="flex-1 min-w-0">
<p class="text-sm font-bold text-gray-900 truncate dark:text-white">
{{ $blogValue->blogName }}
</p>
<p class="text-sm text-gray-400 truncate dark:text-gray-300">
<a href="{{ $blogValue->blogUrl }}" target="_blank">{{ $blogValue->blogUrl }}</a>
</p>
</div>
<a href="?" type="button" class="inline-flex items-center text-base font-semibold text-gray-900 dark:text-white">
<a href="{{ route('console.friends-link.check-admin',$blogValue->id) }}" type="button"
class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-3 py-2 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">
<i class="bi bi-pencil"></i>
<span class="ps-1">编辑</span>
</a>
</a>
</a>
</div>
</li>
@endforeach
</div>
</li>
@endforeach
</ul>
@else
<h1 class="text-center mb-4 text-4xl font-extrabold leading-none tracking-tight text-gray-900 md:text-5xl lg:text-6xl dark:text-white mt-5">暂无待审核用户</h1>
<h1 class="text-center mb-4 text-4xl font-extrabold leading-none tracking-tight text-gray-900 md:text-5xl lg:text-6xl dark:text-white mt-5">
暂无待审核用户</h1>
<p class="mb-6 text-lg font-normal text-gray-500 lg:text-xl sm:px-16 xl:px-48 dark:text-gray-400 text-center">去去其他地方逛逛吧</p>
@endif
</div>
@ -85,17 +91,18 @@ class="inline-flex items-center p-2 mt-2 ml-3 text-sm text-gray-500 rounded-lg s
</body>
<script src="{{ asset('js/app.js') }}"></script>
<script src="{{ asset('js/jquery.js') }}"></script>
<script async src="{{ asset('js/lazyload.js') }}"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function () {
const lazyLoadInstance = new LazyLoad({
elements_selector: '#Lazy', // 指定要延迟加载的元素选择器
loaded: function (element) {
element.classList.add('fade');
},
callback_error: function (element) {
element.src = '{{ asset('images/avatar.png') }}'; // 图像加载失败时替换为占位图像
}
document.addEventListener('DOMContentLoaded', function () {
const lazyLoadInstance = new LazyLoad({
elements_selector: '#Lazy', // 指定要延迟加载的元素选择器
loaded: function (element) {
element.classList.add('fade');
},
callback_error: function (element) {
element.src = '{{ asset('images/avatar.png') }}'; // 图像加载失败时替换为占位图像
}
});
});
});
</script>
</html>

View File

@ -28,7 +28,7 @@ class="inline-flex items-center p-2 mt-2 ml-3 text-sm text-gray-500 rounded-lg s
<div class="p-4 border-gray-200 border-dashed rounded-lg dark:border-gray-700">
@include('console.modules.personal')
<div class="grid grid-cols-1 gap-4 mb-4">
<div class="text-2xl text-gray-400 dark:text-gray-500"><i class="bi bi-link-45deg"></i> 友链修改</div>
<div class="text-2xl text-gray-400 dark:text-gray-500"><i class="bi bi-link-45deg"></i> {{ $subDescriptionForLine }}</div>
</div>
<div class="grid grid-cols-10 gap-4 mb-4">
<div class="col-span-10 lg:hidden gird grid-cols-1">
@ -194,7 +194,7 @@ class="bg-gray-100 border border-gray-300 text-gray-900 text-sm rounded-lg focus
</div>
</div>
<hr class="w-48 h-1 mx-auto my-4 bg-gray-100 border-0 rounded md:my-6 dark:bg-gray-700">
<div class="grid gap-6 mb-6 md:grid-cols-2">
<div class="grid gap-6 md:grid-cols-2">
<div>
<label for="userLocation" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">所属板块 <span
class="text-red-700">*</span></label>
@ -248,6 +248,19 @@ class="bg-gray-100 border border-gray-300 text-gray-900 text-sm rounded-lg focus
<input name="userId" id="userId" value="{{ $blog[0]->id }}" hidden="hidden"/>
</label>
</div>
<div class="mb-6">
<label for="userRemark" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">留言备注</label>
<div class="relative">
<div class="absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none">
<i class="bi bi-chat-left-text"></i>
</div>
<input type="text" name="userRemark" id="userRemark" value="{{ $blog[0]->blogRemark }}" placeholder="多多关照哦~" class="bg-gray-100
border
border-gray-300
text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full pl-10 p-2.5 dark:bg-gray-700
dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" disabled>
</div>
</div>
</form>
</div>
</div>
@ -258,12 +271,20 @@ class="bg-gray-100 border border-gray-300 text-gray-900 text-sm rounded-lg focus
focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-green-600 dark:hover:bg-green-700
dark:focus:ring-blue-800">
<i class="bi bi-send"></i>
<span class="ps-1">提交修改</span>
<span class="ps-1">@if($subDescriptionForLine == '友链修改')
提交修改
@else
审核通过
@endif</span>
</button>
<button type="submit" class="m-2 text-white bg-red-500 hover:bg-red-600 focus:ring-4 focus:outline-none focus:ring-blue-300
font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-blue-800">
<i class="bi bi-trash3"></i>
<span class="ps-1">删除友链</span>
<span class="ps-1">@if($subDescriptionForLine == '友链修改')
删除友链
@else
审核拒绝
@endif</span>
</button>
</div>
</div>
@ -397,11 +418,11 @@ function ajax() {
async: true,
method: "POST",
data: $('#FormData').serialize(),
url: '{{ route('api.link.console.edit') }}',
url: '@if($subDescriptionForLine == '友链修改') {{ route('api.link.console.edit') }} @else {{ route('api.link.console.check') }} @endif',
dataType: "json",
success: function (returnData) {
if (returnData.output === "Success") {
Toast.toggle('友链修改成功', '<i class="bi bi-check-circle text-green-500"></i>');
Toast.toggle('操作成功', '<i class="bi bi-check-circle text-green-500"></i>');
setTimeout(function () {
location.href = '{{ route('console.friends-link.list') }}';
}, 3000);

View File

@ -163,14 +163,28 @@ class="w-10 h-10 p-1 rounded-full ring-2 {{ $blogColor[$blogValue->blogSetColor-
<div class="absolute inset-y-0 left-0 flex items-center pl-3 pointer-events-none">
<i class="bi bi-search"></i>
</div>
<input type="search" id="search" name="search" class="block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" placeholder="查找" required>
<a id="Submit" href="" type="submit" class="text-white absolute right-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">查找</a>
<input type="search" id="search" name="search"
class="block w-full p-4 pl-10 text-sm text-gray-900 border border-gray-300 rounded bg-gray-50 focus:ring-blue-500 focus:border-blue-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
placeholder="查找" required>
<a id="Submit" href="" type="submit"
class="text-white absolute right-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">查找</a>
</div>
</div>
<div class="items-center justify-center rounded bg-gray-50 dark:bg-gray-800 shadow grid grid-cols-1 mb-4">
<a href="{{ route('console.friends-link.check') }}" type="submit" class="text-white bg-green-500 hover:bg-green-600 focus:ring-4
focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-green-600
dark:hover:bg-green-700 dark:focus:ring-blue-800">
<i class="bi bi-pass"></i>
<span class="ps-1">友链审核</span>
</a>
</div>
<div class="items-center justify-center rounded bg-gray-50 dark:bg-gray-800 shadow grid grid-cols-1">
<p class="text-2xl text-center text-gray-400 dark:text-gray-500 pt-3"><i class="bi bi-person-check"></i> 当前友链 <b class="text-black dark:text-white">{{ $blogFriendsTotal }}</b> </p>
<p class="text-2xl text-center text-gray-400 dark:text-gray-500 py-1"><i class="bi bi-person-hearts"></i> 超级友链 <b class="text-black dark:text-white">{{ $blogFriendsBest }}</b> </p>
<p class="text-2xl text-center text-gray-400 dark:text-gray-500 pb-3"><i class="bi bi-person-check-fill"></i> 待审友链 <b class="text-black dark:text-white">{{ $blogFriendsCheck }}</b> </p>
<p class="text-2xl text-center text-gray-400 dark:text-gray-500 pt-3"><i class="bi bi-person-check"></i> 当前友链 <b
class="text-black dark:text-white">{{ $blogFriendsTotal }}</b> </p>
<p class="text-2xl text-center text-gray-400 dark:text-gray-500 py-1"><i class="bi bi-person-hearts"></i> 超级友链 <b
class="text-black dark:text-white">{{ $blogFriendsBest }}</b> </p>
<p class="text-2xl text-center text-gray-400 dark:text-gray-500 pb-3"><i class="bi bi-person-check-fill"></i> 待审友链 <b
class="text-black dark:text-white">{{ $blogFriendsCheck }}</b> </p>
</div>
</div>
</div>

View File

@ -0,0 +1,69 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Mail</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
</head>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600"
style="border-collapse: collapse;border: 1px solid #cccccc;box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175)">
<tr>
<td align="center" bgcolor="#70bbd9" style="padding: 30px 0 30px 0; font-size: 30px;"><b>{{ env('APP_NAME') }}</b></td>
</tr>
<tr>
<td>
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding: 30px 30px 30px 30px;">
<tr>
<td style="padding: 10px 0px 30px 0px;color: #08212b; font-family: Arial, sans-serif; font-size: 10px;">
时间: <b>{{ date('Y-m-d H:i:s') }}</b>
</td>
</tr>
<tr>
<td style="padding: 0px 0px 10px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 24px;">
Dear. <a style="text-decoration: none;color: #198754;" href="mailto:{{ $userEmail }}">{{ $userEmail }}</a>
</td>
</tr>
<tr>
<td style="padding: 0px 5px 5px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 16px;">
您好 <a style="text-decoration: none;color: #198754;" href="{{ $userUrl }}"><b>{{ $userBlog }}</b></a>
的站长:<b>{{ $userEmail }}</b><br/>
您在本博客(<a style="text-decoration: none;color: #198754;" href="{{ env('APP_BLOG') }}">{{ env('APP_NAME') }}</a>)申请的友链已审核通过!<br/>
<hr/>
欢迎一直交流哦~
<hr/>
请在确认一次您的信息是否正确:<br/>
<ul>
<li>博主邮箱:{{ $userEmail }}</li>
<li>贵站名字:{{ $userBlog }}</li>
<li>贵站地址:{{ $userUrl }}</li>
<li>图片地址:{{ $userIcon }}</li>
<li>贵站介绍:{{ $userDescription }}</li>
@if(!empty($userRemark))
<li>备注内容:{{ $userRemark }}</li>
@endif
@if(!empty($checkRssJudge))
<li>RSS地址{{ $userRSS }}</li>
@endif
</ul>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td bgcolor="#f0f0f0" style="padding: 30px 20px 30px 20px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td style="font-family: Arial, sans-serif; font-size: 14px;">
<font style="color: grey;">&copy; 2022 - {{ date('Y') }}. {{ env('APP_NAME') }} All Rights Reserved.</font><br/>
<font style="color: grey;">本邮件为自动发出,请勿直接回复</font>
</td>
</tr>
</table>
</td>
</tr>
</table>
<tr>
<td style="padding: 30px 0 20px 0;"></td>
</tr>
</html>

View File

@ -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');

View File

@ -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');