mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-05 07:20:58 +08:00
personal access token create and del
This commit is contained in:
@@ -2,9 +2,11 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Exceptions\NexusException;
|
||||
use App\Http\Resources\ExamResource;
|
||||
use App\Http\Resources\UserResource;
|
||||
use App\Models\LoginLog;
|
||||
use App\Models\PersonalAccessTokenPlain;
|
||||
use App\Models\Setting;
|
||||
use App\Models\User;
|
||||
use App\Repositories\AuthenticateRepository;
|
||||
@@ -103,4 +105,46 @@ class AuthenticateController extends Controller
|
||||
return response()->json(["success" => false, "msg" => $exception->getMessage()]);
|
||||
}
|
||||
}
|
||||
|
||||
public function addToken(Request $request)
|
||||
{
|
||||
try {
|
||||
$request->validate([
|
||||
'name' => 'required|string',
|
||||
]);
|
||||
$user = Auth::user();
|
||||
$count = $user->tokens()->count();
|
||||
if ($count >= 5) {
|
||||
throw new NexusException("Token limit exceeded");
|
||||
}
|
||||
$newAccessToken = $user->createToken($request->name);
|
||||
PersonalAccessTokenPlain::query()->create([
|
||||
'access_token_id' => $newAccessToken->accessToken->getKey(),
|
||||
'plain_text_token' => $newAccessToken->plainTextToken,
|
||||
]);
|
||||
return $this->success(true);
|
||||
} catch (\Exception $exception) {
|
||||
return $this->fail(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public function delToken(Request $request)
|
||||
{
|
||||
try {
|
||||
$request->validate([
|
||||
'id' => 'required|integer',
|
||||
]);
|
||||
$user = Auth::user();
|
||||
$token = $user->tokens()->where("id", $request->id)->first();
|
||||
if ($token) {
|
||||
PersonalAccessTokenPlain::query()->where("access_token_id", $token->id)->delete();
|
||||
$token->delete();
|
||||
}
|
||||
return $this->success(true);
|
||||
} catch (\Exception $exception) {
|
||||
return $this->fail(false, $exception->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ class VerifyCsrfToken extends Middleware
|
||||
* @var array
|
||||
*/
|
||||
protected $except = [
|
||||
self::TG_WEBHOOK_PREFIX . "/*"
|
||||
self::TG_WEBHOOK_PREFIX . "/*",
|
||||
"web/token/*",
|
||||
];
|
||||
}
|
||||
|
||||
11
app/Models/PersonalAccessTokenPlain.php
Normal file
11
app/Models/PersonalAccessTokenPlain.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
|
||||
class PersonalAccessTokenPlain extends NexusModel
|
||||
{
|
||||
protected $fillable = ['access_token_id', 'plain_text_token'];
|
||||
|
||||
public $timestamps = true;
|
||||
}
|
||||
Reference in New Issue
Block a user