1. Go to this page and download the library: Download cas-system/laravel-client library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
cas-system / laravel-client example snippets
// In routes/web.php
// Any authenticated CAS user
Route::middleware(['cas.auth'])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index']);
Route::get('/profile', [ProfileController::class, 'show']);
});
// Restrict by role — user needs ANY of the listed roles
Route::middleware(['cas.auth', 'cas.role: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
}
return [
// User management — a local User record is found/created on successful login
'user' => [
'create_local_users' => env('CAS_CREATE_LOCAL_USERS', true),
'model' => env('CAS_USER_MODEL', 'App\Models\Auth\User'),
'defaults' => [
'user_type' => 'Guest',
],
],
// Route configuration — package routes auto-registered under this prefix
'routes' => [
'enabled' => env('CAS_ROUTES_ENABLED', true),
'prefix' => env('CAS_ROUTES_PREFIX', 'cas'),
'middleware' => ['web'],
'user_dashboard' => env('CAS_USER_DASHBOARD', '/dashboard'),
],
// Cache validated user data to cut calls to the server
'cache' => [
'enabled' => env('CAS_CACHE_ENABLED', true),
'ttl' => env('CAS_CACHE_TTL', 3600),
'prefix' => 'cas_',
],
// Logging configuration
'logging' => [
'enabled' => env('CAS_LOGGING_ENABLED', true),
'channel' => env('CAS_LOG_CHANNEL', 'single'),
'level' => env('CAS_LOG_LEVEL', 'info'),
],
];