Skip to main content

Black Friday 2025! Only until December 1st: coupon FRIDAY25 for 40% off Yearly/Lifetime membership!

Read more here

koel/koel

16858 stars
5 code files
View koel/koel on GitHub

composer.json

Open in GitHub
{
//
"require": {
"php": ">=7.4",
//
"laravel/sanctum": "^2.6"
},
//
}

app/Models/User.php

Open in GitHub
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Sanctum\HasApiTokens;
 
class User extends Authenticatable
{
use HasApiTokens;
//
}

app/Services/TokenManager.php

Open in GitHub
use App\Models\User;
 
class TokenManager
{
public function createToken(User $user, array $abilities = ['*']): NewAccessToken
{
return $user->createToken(config('app.name'), $abilities);
}
 
public function destroyTokens(User $user): void
{
$user->tokens()->delete();
}
//
}

app/Http/Controllers/API/AuthController.php

Open in GitHub
use App\Services\TokenManager;
 
class AuthController extends Controller
{
//
public function login(UserLoginRequest $request)
{
$user = $this->userRepository->getFirstWhere('email', $request->email);
 
if (!$user || !$this->hash->check($request->password, $user->password)) {
abort(Response::HTTP_UNAUTHORIZED, 'Invalid credentials');
}
 
return response()->json([
'token' => $this->tokenManager->createToken($user)->plainTextToken,
]);
}
 
public function logout()
{
$this->tokenManager->destroyTokens($this->currentUser);
 
return response()->json(null, Response::HTTP_NO_CONTENT);
}
}

config/auth.php

Open in GitHub
return [
//
'guards' => [
'web' => [
'driver' => 'token-via-query-parameter',
'provider' => 'users',
],
'api' => [
'driver' => 'sanctum',
'provider' => 'users',
],
],
//
];

We'd Love Your Feedback

Tell us what you like or what we can improve

Feel free to share anything you like or dislike about this page or the platform in general.