Директива auth
Директива auth в Blade позволяет проверить, аутентифицирован ли текущий пользователь. Она используется для условного отображения контента в зависимости от статуса аутентификации. Директива может принимать необязательный параметр - название guard, если используется несколько guard'ов. Также существует парная директива guest, которая проверяет, что пользователь не аутентифицирован.
Синтаксис
@auth
{{-- Контент для аутентифицированных пользователей --}}
@endauth
@auth('admin')
{{-- Контент для аутентифицированных через guard 'admin' --}}
@endauth
@guest
{{-- Контент для гостей (не аутентифицированных) --}}
@endguest
Пример
Покажем приветственное сообщение для аутентифицированных пользователей и ссылку на вход для гостей:
@auth
<p>Welcome, {{ auth()->user()->name }}!</p>
<a href="{{ route('logout') }}">Logout</a>
@endauth
@guest
<p>Welcome, guest!</p>
<a href="{{ route('login') }}">Login</a>
@endguest
Пример
Использование директивы auth с указанием конкретного guard. Например, для административной панели:
@auth('admin')
<h1>Admin Panel</h1>
<p>You have access to admin functionality.</p>
@endauth
@auth('web')
<p>You are logged in as regular user.</p>
@endauth
@guest('admin')
<p>Please login to access admin panel.</p>
@endguest
Пример
Директивы auth и guest можно использовать внутри циклов и условий для более гибкого управления отображением:
@foreach ($posts as $post)
<div class="post">
<h3>{{ $post->title }}</h3>
<p>{{ $post->excerpt }}</p>
@auth
<a href="{{ route('posts.edit', $post) }}">Edit</a>
@endauth
@guest
<a href="{{ route('login') }}">Login to edit</a>
@endguest
</div>
@endforeach
Пример
Пример контроллера, который передаёт данные в представление с использованием директивы auth:
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
public function index()
{
$posts = Post::all();
return view('posts.index', ['posts' => $posts]);
}
}
Результат выполнения кода для аутентифицированного пользователя:
"<div class='post'>
<h3>Article 1</h3>
<p>Short description of article 1</p>
<a href='/posts/1/edit'>Edit</a>
</div>"
Результат выполнения кода для гостя:
"<div class='post'>
<h3>Article 1</h3>
<p>Short description of article 1</p>
<a href='/login'>Login to edit</a>
</div>"