Xboard/app/Services/AuthService.php
xboard 01b1141125
Some checks failed
Docker Build and Publish / build (push) Has been cancelled
fix: correct know file issues
2025-01-15 20:22:44 +08:00

58 lines
1.4 KiB
PHP

<?php
namespace App\Services;
use App\Models\User;
use Illuminate\Support\Str;
use Laravel\Sanctum\PersonalAccessToken;
class AuthService
{
private User $user;
public function __construct(User $user)
{
$this->user = $user;
}
public function generateAuthData(): array
{
// Create a new Sanctum token with device info
$token = $this->user->createToken(
Str::random(20), // token name (device identifier)
['*'], // abilities
now()->addYear() // expiration
);
// Format token: remove ID prefix and add Bearer
$tokenParts = explode('|', $token->plainTextToken);
$formattedToken = 'Bearer ' . ($tokenParts[1] ?? $tokenParts[0]);
return [
'token' => $this->user->token,
'auth_data' => $formattedToken,
'is_admin' => $this->user->is_admin,
];
}
public function getSessions(): array
{
return $this->user->tokens()->get()->toArray();
}
public function removeSession(): bool
{
$this->user->tokens()->delete();
return true;
}
public static function findUserByBearerToken(string $bearerToken): ?User
{
$token = str_replace('Bearer ', '', $bearerToken);
$accessToken = PersonalAccessToken::findToken($token);
return $accessToken?->tokenable;
}
}