Veiligheid

In de zorg is kwaliteit cruciaal. Daarom zijn betrouwbare oplossingen essentieel om zorgprocessen efficiënt te laten verlopen en ICT-beheer te vereenvoudigen. Bij Virtio begrijpen we de unieke eisen van de zorgsector en bieden we oplossingen die zowel de veiligheid van gegevens als de continuïteit van processen waarborgen. Met onze diepgaande expertise op het gebied van zorg-ICT dragen we bij aan het optimaliseren van werkprocessen, het verminderen van de complexiteit in IT-beheer en het waarborgen van dataveiligheid.

Soliciteer direct

Laravel Backed Enums

Laravel introduceert steeds meer verfijnde en ontwikkelaarsvriendelijke functionaliteiten, en één van de nieuwste innovaties is de ondersteuning voor backed enums binnen het autorisatiesysteem. Met deze toevoeging hoef je niet langer de value property van een enum expliciet aan te roepen, waardoor permissiechecks intuïtiever en makkelijker onderhoudbaar worden.

Wat zijn Backed Enums?

Backed enums in PHP bieden een type-veiliger manier om constante waarden te definiëren. In tegenstelling tot traditionele constante definities kun je met enums ervoor zorgen dat iedere waarde een vast datatype (bijvoorbeeld een string) heeft. Dit vermindert fouten en maakt je code leesbaarder. In Laravel wordt deze feature nu gebruikt om autorisatie-logica te vereenvoudigen.

De voordelen in Laravel

Voorheen moesten ontwikkelaars bij permissiechecks de specifieke waarde van een enum opvragen, bijvoorbeeld met $enum->value. Dankzij de directe ondersteuning in Laravel kun je nu de enum zelf gebruiken in je autorisatieregel. Dit leidt tot minder code en maakt het duidelijker welke rechten er gecontroleerd worden.

Stel, je ontwikkelt een applicatie waarin gebruikers taken kunnen bekijken, aanmaken, bijwerken en verwijderen. Hiervoor definiëren we eerst een enum TaskPermission:

<?php

namespace App\Enums;

enum TaskPermission: string
{
    case VIEW   = 'task.view';
    case CREATE = 'task.create';
    case UPDATE = 'task.update';
    case DELETE = 'task.delete';
}

Deze enum definieert vier permissies, die corresponderen met de verschillende acties binnen het taakbeheer. Vervolgens maken we een TaskController aan waarin we deze permissies toepassen:

<?php

namespace App\Http\Controllers;

use App\Models\Task;
use App\Http\Requests\TaskRequest;
use App\Enums\TaskPermission;

class TaskController extends Controller
{
    public function index()
    {
        // Controleer of de gebruiker 'view' permissie heeft
        $this->authorize(TaskPermission::VIEW);
        
        $tasks = Task::orderBy('created_at', 'desc')->paginate(10);
        return view('tasks.index', compact('tasks'));
    }
    
    public function store(TaskRequest $request)
    {
        // Controleer of de gebruiker 'create' permissie
        $this->authorize(TaskPermission::CREATE);
        
        $task = Task::create($request->validated());
        return redirect()->route('tasks.index')->with('status', 'Taak succesvol aangemaakt.');
    }
    
    public function update(TaskRequest $request, Task $task)
    {
        // Controleer of de gebruiker 'update' permissie
        $this->authorize(TaskPermission::UPDATE);
        
        $task->update($request->validated());
        return redirect()->route('tasks.index')->with('status', 'Taak succesvol bijgewerkt.');
    }
    
    public function destroy(Task $task)
    {
        // Controleer of de gebruiker 'delete' permissie heeft
        $this->authorize(TaskPermission::DELETE);
        
        $task->delete();
        return redirect()->route('tasks.index')->with('status', 'Taak succesvol verwijderd.');
    }
}

Toelichting

Enum Definitie

In TaskPermission worden vier acties vastgelegd die in de applicatie kunnen worden uitgevoerd. Elke case heeft een duidelijke stringwaarde die fungeert als identifier in de autorisatie-checks.

Autorisatiechecks

In de methoden van TaskController wordt de authorize functie aangeroepen met de respectievelijke enum-case. Hierdoor controleert Laravel of de ingelogde gebruiker de juiste rechten heeft voordat de actie wordt uitgevoerd.

Type-Safety en Leesbaarheid:

Doordat we gebruik maken van enums in plaats van losse stringwaarden, is de code minder gevoelig voor typfouten en is het direct duidelijk welke rechten er gecontroleerd worden.

Conclusie

Met de introductie van backed enums in Laravel wordt het autorisatiesysteem niet alleen krachtiger, maar ook veel overzichtelijker. Door permissies als enums te definiëren, creëer je een type-veiliger omgeving en maak je je code consistenter. In het voorbeeld van een taakbeheer-systeem is te zien hoe eenvoudig en elegant deze aanpak is. Of je nu werkt aan een klein project of een complexe applicatie, deze methode helpt om je autorisatiecontroles robuuster en begrijpelijker te maken.

Direct aan de slag?

Direct contact met onze specialisten voor een deskundig advies en onmiddelijke ondersteuning, of gewoon voor een sparring-sessie over jouw vraagstukken.