修改 Remote 为 Module
This commit is contained in:
parent
3b80a5429e
commit
f2170c3506
@ -2,7 +2,7 @@
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Http\Controllers\Remote\ModuleController;
|
||||
use App\Http\Controllers\Modules\ModuleController;
|
||||
use App\Models\Module;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
@ -70,5 +70,7 @@ public function handle()
|
||||
$this->warn('计算模块收益完成。');
|
||||
$this->warn('完成时间: ' . now());
|
||||
$this->warn('比例: 1:' . $rate . ' (1 元 = ' . $rate . ' Drops)');
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@ -7,8 +7,8 @@
|
||||
use App\Jobs\ClearTasks;
|
||||
use App\Jobs\DeleteHost;
|
||||
use App\Jobs\HostCost;
|
||||
use App\Jobs\Remote\FetchModule;
|
||||
use App\Jobs\Remote\PushWorkOrder;
|
||||
use App\Jobs\Module\FetchModule;
|
||||
use App\Jobs\Module\PushWorkOrder;
|
||||
use Illuminate\Console\Scheduling\Schedule;
|
||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||
|
||||
|
@ -50,7 +50,7 @@ public function destroy(Host $host)
|
||||
}
|
||||
}
|
||||
|
||||
dispatch(new \App\Jobs\Remote\Host($host, 'delete'));
|
||||
dispatch(new \App\Jobs\Module\Host($host, 'delete'));
|
||||
} else {
|
||||
return $this->error('无权操作');
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ public function index(): JsonResponse
|
||||
|
||||
public function call(Request $request, Module $module): JsonResponse
|
||||
{
|
||||
return (new \App\Http\Controllers\Remote\ModuleController())->call($request, $module);
|
||||
return (new \App\Http\Controllers\Modules\ModuleController())->call($request, $module);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Remote;
|
||||
namespace App\Http\Controllers\Modules;
|
||||
|
||||
use App\Events\UserEvent;
|
||||
use App\Http\Controllers\Controller;
|
@ -1,11 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Remote\Host;
|
||||
namespace App\Http\Controllers\Modules\Host;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Host;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
// use Illuminate\Support\Facades\Log;
|
||||
@ -15,19 +17,22 @@ class HostController extends Controller
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return Response
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
//
|
||||
// Host::all();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
* @param Request $request
|
||||
*
|
||||
* @return Response|JsonResponse
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
@ -68,7 +73,8 @@ public function store(Request $request)
|
||||
* Display the specified resource.
|
||||
*
|
||||
* @param Host $host
|
||||
* @return \Illuminate\Http\Response
|
||||
*
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function show(Host $host)
|
||||
{
|
||||
@ -82,9 +88,10 @@ public function show(Host $host)
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param Host $host
|
||||
* @return \Illuminate\Http\Response
|
||||
* @param Request $request
|
||||
* @param Host $host
|
||||
*
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function update(Request $request, Host $host)
|
||||
{
|
||||
@ -124,7 +131,8 @@ public function update(Request $request, Host $host)
|
||||
* Remove the specified resource from storage.
|
||||
*
|
||||
* @param $host
|
||||
* @return \Illuminate\Http\Response
|
||||
*
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function destroy($host)
|
||||
{
|
@ -1,10 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Remote\Host;
|
||||
namespace App\Http\Controllers\Modules\Host;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Task;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class TaskController extends Controller
|
||||
{
|
||||
@ -14,7 +16,7 @@ class TaskController extends Controller
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return Response|null
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
@ -23,13 +25,15 @@ public function index(Request $request)
|
||||
|
||||
// return $this->getTasks();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
* @param Request $request
|
||||
*
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
||||
@ -48,10 +52,10 @@ public function store(Request $request)
|
||||
/**
|
||||
* Update the specified resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \App\Models\Task $task
|
||||
* @param Request $request
|
||||
* @param Task $task
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function update(Request $request, Task $task)
|
||||
{
|
@ -1,9 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Remote;
|
||||
namespace App\Http\Controllers\Modules;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Module;
|
||||
use Illuminate\Contracts\Auth\Authenticatable;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Str;
|
||||
@ -77,7 +78,7 @@ public function exportCall(Request $request, Module $module): \Illuminate\Http\R
|
||||
}
|
||||
|
||||
|
||||
public function calcModule(Module $module): array
|
||||
public function calcModule(Module|Authenticatable $module): array
|
||||
{
|
||||
|
||||
$default = [
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Remote;
|
||||
namespace App\Http\Controllers\Modules;
|
||||
|
||||
use App\Exceptions\User\BalanceNotEnoughException;
|
||||
use App\Http\Controllers\Controller;
|
@ -1,9 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Remote\WorkOrder;
|
||||
namespace App\Http\Controllers\Modules\WorkOrder;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\WorkOrder\Reply;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ReplyController extends Controller
|
||||
@ -11,7 +12,7 @@ class ReplyController extends Controller
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
@ -23,8 +24,8 @@ public function index(Request $request)
|
||||
/**
|
||||
* Store a newly created resource in storage.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
* @param Request $request
|
||||
* @return JsonResponse
|
||||
*/
|
||||
public function store(Request $request)
|
||||
{
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Remote\WorkOrder;
|
||||
namespace App\Http\Controllers\Modules\WorkOrder;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Remote\WorkOrderRequest;
|
@ -37,12 +37,12 @@ public function handle()
|
||||
//
|
||||
Host::with('module')->where('created_at', '<', now()->subHour())->chunk(100, function ($hosts) {
|
||||
foreach ($hosts as $host) {
|
||||
$http = Http::remote($host->module->api_token, $host->module->url);
|
||||
$http = Http::module($host->module->api_token, $host->module->url);
|
||||
$response = $http->get('hosts/' . $host->id);
|
||||
|
||||
if ($response->status() === 404) {
|
||||
Log::warning($host->module->name . ' ' . $host->name . ' ' . $host->id . ' 不存在,删除。');
|
||||
dispatch(new \App\Jobs\Remote\Host($host, 'delete'));
|
||||
dispatch(new \App\Jobs\Module\Host($host, 'delete'));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -36,14 +36,14 @@ public function handle()
|
||||
// 查找暂停时间超过3天以上的 host
|
||||
Host::where('status', 'suspended')->where('suspended_at', '<', now()->subDays(3))->chunk(100, function ($hosts) {
|
||||
foreach ($hosts as $host) {
|
||||
dispatch(new \App\Jobs\Remote\Host($host, 'delete'));
|
||||
dispatch(new \App\Jobs\Module\Host($host, 'delete'));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// 查找部署时间超过3天以上的 host
|
||||
Host::where('status', 'pending')->where('created_at', '<', now()->subDays(3))->chunk(100, function ($hosts) {
|
||||
foreach ($hosts as $host) {
|
||||
dispatch(new \App\Jobs\Remote\Host($host, 'delete'));
|
||||
dispatch(new \App\Jobs\Module\Host($host, 'delete'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Remote;
|
||||
namespace App\Jobs\Module;
|
||||
|
||||
use App\Events\ServerEvent;
|
||||
use App\Models\Module;
|
||||
@ -50,7 +50,7 @@ public function handle()
|
||||
|
||||
foreach ($modules as $module) {
|
||||
try {
|
||||
$http = Http::remote($module->api_token, $module->url);
|
||||
$http = Http::module($module->api_token, $module->url);
|
||||
// dd($module->url);
|
||||
$response = $http->get('remote');
|
||||
} catch (ConnectException $e) {
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Remote;
|
||||
namespace App\Jobs\Module;
|
||||
|
||||
use App\Models\Host as HostModel;
|
||||
use Illuminate\Bus\Queueable;
|
||||
@ -41,7 +41,7 @@ public function handle()
|
||||
$host = $this->host;
|
||||
$host->load(['module']);
|
||||
|
||||
$http = Http::remote($host->module->api_token, $host->module->url);
|
||||
$http = Http::module($host->module->api_token, $host->module->url);
|
||||
|
||||
switch ($this->type) {
|
||||
case 'patch':
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Remote;
|
||||
namespace App\Jobs\Module;
|
||||
|
||||
use App\Models\Host;
|
||||
use Illuminate\Bus\Queueable;
|
||||
@ -35,7 +35,7 @@ public function handle()
|
||||
//
|
||||
Host::whereIn('status', ['pending', 'error'])->with(['module', 'user'])->chunk(100, function ($hosts) {
|
||||
foreach ($hosts as $host) {
|
||||
$http = Http::remote($host->module->api_token, $host->module->url);
|
||||
$http = Http::module($host->module->api_token, $host->module->url);
|
||||
$host->status = 'running';
|
||||
|
||||
$response = $http->post('hosts', $host->toArray());
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Remote;
|
||||
namespace App\Jobs\Module;
|
||||
|
||||
use App\Models\WorkOrder\Reply;
|
||||
use App\Models\WorkOrder\WorkOrder;
|
||||
@ -50,7 +50,7 @@ public function handle()
|
||||
}
|
||||
}
|
||||
|
||||
$http = Http::remote($workOrder->module->api_token, $workOrder->module->url);
|
||||
$http = Http::module($workOrder->module->api_token, $workOrder->module->url);
|
||||
$workOrder->status = 'open';
|
||||
|
||||
$response = $http->post('work-orders', $workOrder->toArray());
|
||||
@ -70,7 +70,7 @@ public function handle()
|
||||
|
||||
Reply::where('is_pending', 1)->chunk(100, function ($replies) {
|
||||
foreach ($replies as $reply) {
|
||||
dispatch(new \App\Jobs\Remote\WorkOrder\Reply($reply));
|
||||
dispatch(new \App\Jobs\Module\WorkOrder\Reply($reply));
|
||||
}
|
||||
});
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Remote\WorkOrder;
|
||||
namespace App\Jobs\Module\WorkOrder;
|
||||
|
||||
use App\Events\UserEvent;
|
||||
use App\Models\WorkOrder\Reply as WorkOrderReply;
|
||||
@ -9,7 +9,6 @@
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Log;
|
||||
|
||||
// use Illuminate\Contracts\Queue\ShouldBeUnique;
|
||||
|
||||
@ -40,7 +39,7 @@ public function handle()
|
||||
$this->reply->load(['workOrder', 'user']);
|
||||
$this->reply->workOrder->load(['module']);
|
||||
|
||||
$http = Http::remote($this->reply->workOrder->module->api_token, $this->reply->workOrder->module->url);
|
||||
$http = Http::module($this->reply->workOrder->module->api_token, $this->reply->workOrder->module->url);
|
||||
|
||||
$reply = $this->reply->toArray();
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Remote\WorkOrder;
|
||||
namespace App\Jobs\Module\WorkOrder;
|
||||
|
||||
use App\Events\UserEvent;
|
||||
use App\Models\WorkOrder\WorkOrder as WorkOrderWorkOrder;
|
||||
@ -39,7 +39,7 @@ public function handle()
|
||||
{
|
||||
$this->workOrder->load(['module']);
|
||||
|
||||
$http = Http::remote($this->workOrder->module->api_token, $this->workOrder->module->url);
|
||||
$http = Http::module($this->workOrder->module->api_token, $this->workOrder->module->url);
|
||||
if ($this->type == 'put') {
|
||||
$response = $http->put('work-orders/' . $this->workOrder->id, $this->workOrder->toArray());
|
||||
} else {
|
@ -206,7 +206,7 @@ protected static function boot()
|
||||
|
||||
// when Updated
|
||||
static::updated(function ($model) {
|
||||
dispatch(new \App\Jobs\Remote\Host($model, 'patch'));
|
||||
dispatch(new \App\Jobs\Module\Host($model, 'patch'));
|
||||
|
||||
Cache::forget('user_hosts_' . $model->user_id);
|
||||
Cache::forget('user_tasks_' . $model->user_id);
|
||||
|
@ -35,7 +35,7 @@ class Module extends Authenticatable
|
||||
|
||||
public function remoteHost($host_id, $func, $requests)
|
||||
{
|
||||
$http = Http::remote($this->api_token, $this->url);
|
||||
$http = Http::module($this->api_token, $this->url);
|
||||
$response = $http->post("hosts/{$host_id}/functions/" . $func, $requests);
|
||||
|
||||
$json = $response->json();
|
||||
@ -46,7 +46,7 @@ public function remoteHost($host_id, $func, $requests)
|
||||
|
||||
public function remote($func, $requests)
|
||||
{
|
||||
$http = Http::remote($this->api_token, $this->url);
|
||||
$http = Http::module($this->api_token, $this->url);
|
||||
$response = $http->post('functions/' . $func, $requests);
|
||||
|
||||
$json = $response->json();
|
||||
@ -61,7 +61,7 @@ public function remoteRequest($method, $path, $requests)
|
||||
{
|
||||
$user = auth()->user();
|
||||
|
||||
$http = Http::remote($this->api_token, $this->url)
|
||||
$http = Http::module($this->api_token, $this->url)
|
||||
->accept('application/json');
|
||||
|
||||
// add Headers
|
||||
@ -94,7 +94,7 @@ public function moduleRequest($method, $path, $requests)
|
||||
{
|
||||
$module_id = auth('module')->id();
|
||||
|
||||
$http = Http::remote($this->api_token, $this->url)
|
||||
$http = Http::module($this->api_token, $this->url)
|
||||
->accept('application/json');
|
||||
|
||||
$http->withHeaders([
|
||||
@ -119,7 +119,7 @@ public function moduleRequest($method, $path, $requests)
|
||||
|
||||
public function remotePost($path = '', $data = [])
|
||||
{
|
||||
$http = Http::remote($this->api_token, $this->url);
|
||||
$http = Http::module($this->api_token, $this->url);
|
||||
$response = $http->post($path, $data);
|
||||
|
||||
$json = $response->json();
|
||||
@ -137,7 +137,7 @@ public function check($module_id = null)
|
||||
}
|
||||
|
||||
try {
|
||||
$http = Http::remote($module->api_token, $module->url);
|
||||
$http = Http::module($module->api_token, $module->url);
|
||||
// dd($module->url);
|
||||
$response = $http->get('remote');
|
||||
} catch (ConnectException $e) {
|
||||
|
@ -75,8 +75,8 @@ protected static function boot()
|
||||
$model->workOrder->save();
|
||||
}
|
||||
// dispatch
|
||||
dispatch(new \App\Jobs\Remote\WorkOrder\Reply($model));
|
||||
dispatch(new \App\Jobs\Remote\WorkOrder\WorkOrder($model->workOrder, 'put'));
|
||||
dispatch(new \App\Jobs\Module\WorkOrder\Reply($model));
|
||||
dispatch(new \App\Jobs\Module\WorkOrder\WorkOrder($model->workOrder, 'put'));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ protected static function boot()
|
||||
|
||||
// updated
|
||||
static::updated(function ($model) {
|
||||
dispatch(new \App\Jobs\Remote\WorkOrder\WorkOrder($model, 'put'));
|
||||
dispatch(new \App\Jobs\Module\WorkOrder\WorkOrder($model, 'put'));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -33,10 +33,10 @@ public function boot()
|
||||
|
||||
Sanctum::usePersonalAccessTokenModel(PersonalAccessToken::class);
|
||||
|
||||
Http::macro('remote', function ($api_token, $url) {
|
||||
Http::macro('module', function ($api_token, $url) {
|
||||
// 关闭证书验证
|
||||
return Http::withoutVerifying()->withHeaders([
|
||||
'X-Remote-Api-Token' => $api_token,
|
||||
'X-Module-Api-Token' => $api_token,
|
||||
'Content-Type' => 'application/json'
|
||||
])->withOptions([
|
||||
'version' => 2,
|
||||
|
@ -35,9 +35,9 @@ public function boot()
|
||||
->group(base_path('routes/api.php'));
|
||||
|
||||
Route::middleware(['api', 'auth:module'])
|
||||
->prefix('remote')
|
||||
->as('remote.')
|
||||
->group(base_path('routes/remote.php'));
|
||||
->prefix('modules')
|
||||
->as('modules.')
|
||||
->group(base_path('routes/modules.php'));
|
||||
|
||||
Route::middleware(['web'])
|
||||
->prefix('admin')
|
||||
|
@ -1,53 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
@extends('layouts.app')
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
</head>
|
||||
@section('title', '用户')
|
||||
|
||||
<body>
|
||||
{{-- display all errors --}}
|
||||
@if ($errors->any())
|
||||
<div style="color: red">
|
||||
<ul>
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (session('success'))
|
||||
<p style="color:green">{{ session('success') }}</p>
|
||||
@endif
|
||||
@if (session('error'))
|
||||
<p style="color:red">{{ session('error') }}</p>
|
||||
@endif
|
||||
|
||||
@if (session('token'))
|
||||
<p style="color:green">这是新的 Token,请妥善保管:{{ session('token') }}</p>
|
||||
{{-- <a href="http://localhost:3000/login?token={{ session('token') }}">前往</a> --}}
|
||||
@endif
|
||||
@section('content')
|
||||
|
||||
@guest
|
||||
<p>嗨,游客</p>
|
||||
<p>您需要先登录,才能使用 莱云 Access Token Manager.</p>
|
||||
<p>您需要先登录,才能继续使用 莱云。</p>
|
||||
|
||||
<a href="{{ route('login') }}">登录</a>
|
||||
<a href="{{ route('login') }}" class="btn btn-primary">登录</a>
|
||||
@endguest
|
||||
|
||||
|
||||
@auth
|
||||
|
||||
@if (session('token'))
|
||||
<p style="color:green">这是新的 Token,请妥善保管:{{ session('token') }}</p>
|
||||
{{-- <a href="http://localhost:3000/login?token={{ session('token') }}">前往</a> --}}
|
||||
@endif
|
||||
|
||||
|
||||
<p>嗨, {{ auth('web')->user()->name }}
|
||||
<p>在这里,你可以获取新的 Token 来对接其他应用程序。</p>
|
||||
|
||||
<form action="{{ route('newToken') }}" name="newToken" method="POST">
|
||||
@csrf
|
||||
<input type="text" name="token_name" placeholder="Token 名字" />
|
||||
<button>获取新的 Token</button>
|
||||
<button class="btn btn-primary" type="submit">获取新的 Token</button>
|
||||
</form>
|
||||
|
||||
<hr />
|
||||
@ -55,17 +34,16 @@
|
||||
<form action="{{ route('deleteAll') }}" method="post">
|
||||
@csrf
|
||||
@method('delete')
|
||||
<button>吊销所有 Token</button>
|
||||
<button class="btn btn-danger" type="submit">吊销所有 Token</button>
|
||||
</form>
|
||||
<p>*如果您的 Token 被泄漏,您应该立即吊销所有 Token</p>
|
||||
<p class="text-danger">*如果您的 Token 被泄漏,您应该立即吊销所有 Token</p>
|
||||
|
||||
<hr />
|
||||
<p>退出登录</p>
|
||||
<form action="{{ route('logout') }}" method="post">
|
||||
@csrf
|
||||
<button>退出登录</button>
|
||||
<button class="btn btn-danger" type="submit">退出登录</button>
|
||||
</form>
|
||||
@endauth
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
@endsection
|
||||
|
@ -8,7 +8,7 @@
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>@yield('title')</title>
|
||||
<title>@yield('title', '管理员')</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
@ -42,7 +42,7 @@
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ms-auto">
|
||||
<!-- Authentication Links -->
|
||||
@guest
|
||||
@if (!Auth::guard('admin')->check())
|
||||
@if (Route::has('admin.login'))
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('admin.login') }}">{{ __('Login') }}</a>
|
||||
@ -52,7 +52,7 @@
|
||||
<li class="nav-item dropdown">
|
||||
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button"
|
||||
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{{ Auth::guard('admin')->user()->email }}
|
||||
{{ Auth::guard('admin')->user()->email ?? '' }}
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
|
||||
@ -80,9 +80,7 @@ class="d-none">
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
@yield('content')
|
||||
</div>
|
||||
@yield('content')
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
|
92
resources/views/layouts/app.blade.php
Normal file
92
resources/views/layouts/app.blade.php
Normal file
@ -0,0 +1,92 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<!-- CSRF Token -->
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
|
||||
<title>@yield('title', '莱云')</title>
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="dns-prefetch" href="//fonts.gstatic.com">
|
||||
<link href="https://fonts.bunny.net/css?family=Nunito" rel="stylesheet">
|
||||
|
||||
<!-- Scripts -->
|
||||
@vite(['resources/sass/app.scss', 'resources/js/app.js'])
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app">
|
||||
<nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="{{ route('admin.index') }}">
|
||||
{{ config('app.display_name') }}
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse"
|
||||
data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
|
||||
aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
||||
<!-- Left Side Of Navbar -->
|
||||
<ul class="navbar-nav me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('index') }}">首页</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('index') }}">首页</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<!-- Right Side Of Navbar -->
|
||||
<ul class="navbar-nav ms-auto">
|
||||
<!-- Authentication Links -->
|
||||
@guest
|
||||
@if (Route::has('admin.login'))
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ route('admin.login') }}">{{ __('Login') }}</a>
|
||||
</li>
|
||||
@endif
|
||||
@else
|
||||
<li class="nav-item dropdown">
|
||||
<a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button"
|
||||
data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{{ Auth::user()->name }}
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
|
||||
<a class="dropdown-item" href="{{ route('logout') }}"
|
||||
onclick="event.preventDefault();
|
||||
document.getElementById('logout-form').submit();">
|
||||
{{ __('Logout') }}
|
||||
</a>
|
||||
|
||||
<form id="logout-form" action="{{ route('logout') }}" method="POST"
|
||||
class="d-none">
|
||||
@csrf
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
@endguest
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main class="py-4">
|
||||
<div class="container">
|
||||
<x-alert />
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
@yield('content')
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -23,7 +23,7 @@
|
||||
Route::get('hosts/usages', [HostController::class, 'usages']);
|
||||
Route::apiResource('hosts', HostController::class);
|
||||
|
||||
Route::apiResource('balances', BalanceController::class)->only(['index', 'store']);
|
||||
// Route::apiResource('balances', BalanceController::class)->only(['index', 'store']);
|
||||
Route::get('balances/transactions', [BalanceController::class, 'transactions']);
|
||||
Route::get('balances/drops', [BalanceController::class, 'drops']);
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\Remote\BroadcastController;
|
||||
use App\Http\Controllers\Remote\Host\HostController;
|
||||
use App\Http\Controllers\Remote\Host\TaskController;
|
||||
use App\Http\Controllers\Remote\ModuleController;
|
||||
use App\Http\Controllers\Remote\UserController;
|
||||
use App\Http\Controllers\Remote\WorkOrder\ReplyController;
|
||||
use App\Http\Controllers\Remote\WorkOrder\WorkOrderController;
|
||||
use App\Http\Controllers\Modules\BroadcastController;
|
||||
use App\Http\Controllers\Modules\Host\HostController;
|
||||
use App\Http\Controllers\Modules\Host\TaskController;
|
||||
use App\Http\Controllers\Modules\ModuleController;
|
||||
use App\Http\Controllers\Modules\UserController;
|
||||
use App\Http\Controllers\Modules\WorkOrder\ReplyController;
|
||||
use App\Http\Controllers\Modules\WorkOrder\WorkOrderController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('modules', [ModuleController::class, 'index']);
|
Loading…
Reference in New Issue
Block a user