Класс Auth
Класс Auth является фасадом для работы с аутентификацией в Laravel. Он предоставляет удобный интерфейс для выполнения основных операций: проверка аутентификации, вход и выход пользователей, получение данных текущего пользователя. Класс использует различные драйверы и гарды для гибкой настройки процесса аутентификации.
Синтаксис
<?php
use Illuminate\Support\Facades\Auth;
// Проверка аутентификации
if (Auth::check()) {
// Пользователь аутентифицирован
}
// Получение текущего пользователя
$user = Auth::user();
// Попытка входа
if (Auth::attempt($credentials)) {
// Вход выполнен
}
// Выход пользователя
Auth::logout();
?>
Пример
Проверяем, аутентифицирован ли пользователь, и выводим его имя:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
class ProfileController extends Controller
{
public function show()
{
if (Auth::check()) {
$user = Auth::user();
echo "Welcome, " . $user->name;
} else {
echo "Please log in";
}
}
}
?>
Результат выполнения кода:
"Welcome, John Doe"
Пример
Выполняем вход пользователя по email и паролю:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function login(Request $request)
{
$credentials = [
'email' => $request->email,
'password' => $request->password,
];
if (Auth::attempt($credentials)) {
echo "Login successful";
return redirect()->intended('/dashboard');
}
echo "Invalid credentials";
return back()->withErrors([
'email' => 'The provided credentials do not match our records.',
]);
}
}
?>
Результат выполнения кода:
"Login successful"
Пример
Выполняем выход пользователя и очищаем сессию:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\Request;
class AuthController extends Controller
{
public function logout(Request $request)
{
Auth::logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}
?>
Пример
Проверяем, гость ли пользователь, и выполняем вход с указанием гарда:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
class AdminController extends Controller
{
public function login()
{
if (Auth::guest()) {
$credentials = [
'email' => 'admin@example.com',
'password' => 'secret123',
];
if (Auth::guard('admin')->attempt($credentials)) {
echo "Admin logged in";
}
} else {
echo "User is already logged in";
}
}
}
?>
Результат выполнения кода:
"Admin logged in"
Пример
Получаем ID текущего аутентифицированного пользователя:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use App\Models\Post;
class PostController extends Controller
{
public function store()
{
$userId = Auth::id();
if ($userId) {
$post = new Post();
$post->user_id = $userId;
$post->title = 'My Post';
$post->content = 'Content of my post';
$post->save();
echo "Post created by user ID: " . $userId;
} else {
echo "User not authenticated";
}
}
}
?>
Результат выполнения кода:
"Post created by user ID: 5"