增加 访问密钥

This commit is contained in:
iVampireSP.com 2023-06-15 18:34:16 +08:00
parent 589a101a95
commit e028622cbd
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
3 changed files with 70 additions and 16 deletions

View File

@ -7,8 +7,25 @@
class UserController extends Controller class UserController extends Controller
{ {
public function __invoke(Request $request) public function user(Request $request)
{ {
return $this->success(auth('sanctum')->user()); return $this->success($request->user('sanctum'));
}
public function create(Request $request)
{
$name = date('Y-m-d H:i:s');
$token = $request->user()->createToken($name);
return $this->success([
'token' => $token->plainTextToken,
]);
}
public function deleteAll(Request $request)
{
$request->user()->tokens()->delete();
return $this->success();
} }
} }

View File

@ -1,36 +1,69 @@
<template> <template>
<div> <div>
<h3>欢迎</h3> <h3>欢迎</h3>
</div> </div>
<div class="mt-3"> <div class="mt-3">
<p>用户名: {{ user.name }}</p> <p>用户名: {{ user.name }}</p>
<p>剩余流量: {{ user.traffic }}GB</p> <p>剩余流量: {{ user.traffic }} GB</p>
</div> </div>
<div class="mt-3" v-if="!user.realnamed"> <div class="mt-3" v-if="!user.realnamed">
<p>注意您没有完成实名认证请点击下方按钮完成实名认证否则您只能使用中国大陆以外的隧道</p> <h3>实名认证</h3>
<a class="btn btn-primary" target="_blank" href="https://oauth.laecloud.com/real_name">实名认证</a> <p>
注意您没有完成实名认证请点击下方按钮完成实名认证否则您只能使用中国大陆以外的隧道
</p>
<a
class="btn btn-primary"
target="_blank"
href="https://oauth.laecloud.com/real_name"
>实名认证</a
>
<p>在实名认证后请重新登录 {{ sitename }}</p> <p>在实名认证后请重新登录 {{ sitename }}</p>
</div> </div>
<h3>访问密钥</h3>
<div class="mt-3" v-if="!user.realnamed">
<p>
访问密钥是用于访问 {{ sitename }} API
的密钥您可以使用它来开发自己的客户端
</p>
<p v-if="newToken" class="text-success">获取成功请妥善保管您的 Token: {{ newToken }}</p>
<button class="btn btn-primary" @click="getNewToken">
获取新密钥
</button>
<button class="btn btn-danger" style="margin-left: 5px;" @click="deleteAllToken">
删除所有密钥
</button>
</div>
</template> </template>
<script setup> <script setup>
import { ref } from "vue"; import { ref } from "vue";
import http from '../plugins/http' import http from "../plugins/http";
const sitename = window.Base.SiteName const sitename = window.Base.SiteName;
const user = ref({ const user = ref({
name: 'loading...', name: "loading...",
traffic: '' traffic: "",
}) });
http.get('user').then((res) => { const newToken = ref("");
user.value = res.data
})
http.get("user").then((res) => {
user.value = res.data;
});
function getNewToken() {
http.post("tokens").then((res) => {
newToken.value = res.data.token;
});
}
function deleteAllToken() {
http.delete("tokens").then((res) => {
alert("所有 Token 删除成功。");
});
}
</script> </script>

View File

@ -16,7 +16,7 @@
Route::middleware('auth:sanctum')->group(function () { Route::middleware('auth:sanctum')->group(function () {
Route::get('user', UserController::class); Route::get('user', [UserController::class, 'user']);
Route::apiResource('tunnels', TunnelController::class); Route::apiResource('tunnels', TunnelController::class);
Route::post('tunnels/{tunnel}/close', [TunnelController::class, 'close']); Route::post('tunnels/{tunnel}/close', [TunnelController::class, 'close']);
Route::apiResource('servers', ServerController::class); Route::apiResource('servers', ServerController::class);
@ -30,6 +30,10 @@
Route::post('providers/{provider}/charge', [TrafficController::class, 'charge']); Route::post('providers/{provider}/charge', [TrafficController::class, 'charge']);
Route::post('providers/{provider}/ticket', [TicketController::class, 'submit']); Route::post('providers/{provider}/ticket', [TicketController::class, 'submit']);
Route::post('tokens', [UserController::class, 'create']);
Route::delete('tokens', [UserController::class, 'deleteAll']);
}); });
Route::prefix('application')->name('application.')->middleware('whmcs_api')->group(function () { Route::prefix('application')->name('application.')->middleware('whmcs_api')->group(function () {