Покращення авторизації в Laravel за допомогою Backed Enums

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 18 березня, 2025
Laravel нещодавно представив підтримку перерахувань для авторизації, що значно спростило процес перевірки дозволів. Дізнайтеся, як ця нова функція робить вашу кодову базу більш інтуїтивною та легшою у супроводі!

Laravel тепер безпосередньо підтримує back-end enums в авторизації, що усуває потребу у посиланні на властивість значення enum. Цей спрощений підхід робить перевірку прав доступу інтуїтивно зрозумілою та більш зручною в обслуговуванні.

Застосування є простим:

enum ReportPermission: string
{
    case VIEW = 'reports.view';
    case EXPORT = 'reports.export';
    case MANAGE = 'reports.manage';
}
 
public function showReport(): View
{
    $this->authorize(ReportPermission::VIEW);
 
    return view('reports.show');
}

Ця модель елегантно працює в складних системах авторизації:

enum ContentPermission: string
{
    case LIST_ARTICLES = 'content.articles.list';
    case VIEW_ARTICLE = 'content.articles.view';
    case CREATE_ARTICLE = 'content.articles.create';
    case MODIFY_ARTICLE = 'content.articles.update';
    case REMOVE_ARTICLE = 'content.articles.delete';
}
 
class ArticleController extends Controller
{
    public function index()
    {
        $this->authorize(ContentPermission::LIST_ARTICLES);
 
        return Inertia::render('Articles/Index', [
            'articles' => Article::with('author')
                ->latest()
                ->paginate(15)
        ]);
    }
 
    public function store(ArticleRequest $request)
    {
        $this->authorize(ContentPermission::CREATE_ARTICLE);
 
        $article = Article::create(array_merge(
            $request->validated(),
            ['author_id' => auth()->id()]
        ));
 
        return redirect()
            ->route('articles.edit', $article)
            ->with('status', 'Статтю успішно створено');
    }
 
    public function update(ArticleRequest $request, Article $article)
    {
        $this->authorize(ContentPermission::MODIFY_ARTICLE);
 
        $article->update($request->validated());
 
        event(new ArticleUpdated($article));
 
        return back()->with('status', 'Статтю оновлено');
    }
}

Підтримка enumerations створює більш типобезпечний і зручний для розробника підхід до визначення та перевірки прав доступу в усій вашій аплікації.

Популярні

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

Logomark Logotype

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel