<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
insol-dev / central-authentication-server example snippets
// In routes/web.php
use CasSystem\LaravelClient\Middleware\CasAuthentication;
use CasSystem\LaravelClient\Middleware\CasRole;
Route::middleware([CasAuthentication::class])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index']);
Route::get('/profile', [ProfileController::class, 'show']);
});
// Protect with specific roles
Route::middleware([CasAuthentication::class, CasRole::class . ':admin,manager'])->group(function () {
Route::get('/admin', [AdminController::class, 'index']);
});
use CasSystem\LaravelClient\Facades\CasClient;
class AuthController extends Controller
{
public function login(Request $request)
{
$returnUrl = $request->query('return_url', route('dashboard'));
$loginUrl = CasClient::getLoginUrl($returnUrl);
return redirect($loginUrl);
}
public function callback(Request $request)
{
$token = $request->query('token');
if (!$token) {
return redirect()->route('login')->with('error', 'No authentication token provided');
}
$user = CasClient::validateToken($token);
if ($user) {
// Store user data in session
session([
'cas_user' => $user,
'cas_token' => $token,
'authenticated' => true
]);
return redirect()->route('dashboard')->with('success', 'Login successful');
}
return redirect()->route('login')->with('error', 'Authentication failed');
}
public function logout(Request $request)
{
$token = session('cas_token');
// Logout from CAS server
CasClient::logout($token);
// Clear local session
session()->forget(['cas_user', 'cas_token', 'authenticated']);
session()->invalidate();
session()->regenerateToken();
return redirect('/')->with('success', 'Logged out successfully');
}
}
// In your controllers
public function dashboard(Request $request)
{
$user = session('cas_user');
$username = $user['username'];
$email = $user['email'];
$roles = $user['roles'] ?? [];
return view('dashboard', compact('user', 'username', 'email', 'roles'));
}
// Check user roles
use CasSystem\LaravelClient\Facades\CasClient;
if (CasClient::userHasRole($user, 'admin')) {
// User has admin role
}
if (CasClient::userHasAnyRole($user, ['admin', 'manager'])) {
// User has admin OR manager role
}
if (CasClient::userHasAllRoles($user, ['user', 'verified'])) {
// User has BOTH user AND verified roles
}