Heim  >  Artikel  >  PHP-Framework  >  Praktische Anwendung der Berechtigungsfunktion von Laravel: So implementieren Sie die Berechtigungssteuerung für die Benutzerorganisationsstruktur

Praktische Anwendung der Berechtigungsfunktion von Laravel: So implementieren Sie die Berechtigungssteuerung für die Benutzerorganisationsstruktur

PHPz
PHPzOriginal
2023-11-02 08:17:031287Durchsuche

Praktische Anwendung der Berechtigungsfunktion von Laravel: So implementieren Sie die Berechtigungssteuerung für die Benutzerorganisationsstruktur

Praktische Anwendung der Laravel-Berechtigungsfunktion: Für die Implementierung der Berechtigungssteuerung für die Benutzerorganisationsstruktur sind bestimmte Codebeispiele erforderlich.

Einführung:
Mit der schnellen Entwicklung von Webanwendungen ist die Benutzerberechtigungssteuerung zu einer wichtigen Funktionsanforderung geworden. Laravel bietet als beliebtes PHP-Framework flexible und leistungsstarke Berechtigungsverwaltungsfunktionen. In diesem Artikel wird erläutert, wie Sie mit Laravel die Berechtigungssteuerung für die Benutzerorganisationsstruktur implementieren, und es werden spezifische Codebeispiele aufgeführt.

1. Die Notwendigkeit einer Benutzerorganisationsstruktur-Berechtigungskontrolle
In vielen Anwendungen werden Benutzerberechtigungen normalerweise entsprechend der Organisationsstruktur zugewiesen und verwaltet. Ein Unternehmen hat beispielsweise mehrere Abteilungen und jede Abteilung hat unterschiedliche Mitarbeiter. In diesem Fall müssen folgende Funktionen implementiert werden:

  1. Abteilungsadministratoren können Mitarbeiter ihrer eigenen Abteilung verwalten, aber nicht auf Informationen aus anderen Abteilungen zugreifen
  2. Führungskräfte können auf die Daten des gesamten Unternehmens zugreifen und diese verwalten; Allgemein: Mitarbeiter haben nur Zugriff auf ihre eigenen persönlichen Daten.
  3. 2. Verwenden Sie die Berechtigungsverwaltungsfunktion von Laravel.
Das Laravel-Framework verfügt über einen vollständigen Satz integrierter Berechtigungsverwaltungsfunktionen, die die oben genannten Anforderungen erfüllen können. Im Folgenden wird erläutert, wie Sie die Berechtigungsfunktion von Laravel verwenden, um die Berechtigungssteuerung für die Benutzerorganisationsstruktur zu implementieren.


Installieren Sie das Berechtigungsverwaltungs-Plug-in von Laravel.
    Installieren Sie zunächst das Berechtigungsverwaltungs-Plug-in im Laravel-Projekt. Die am häufigsten verwendeten sind Spatie/Laravel-Permission und Laravel-Permission. Hier wird spatie/laravel-permission als Beispiel zur Demonstration verwendet. Führen Sie zur Installation den folgenden Befehl in der Befehlszeile aus:

  1. composer require spatie/laravel-permission
  2. Dann fügen Sie die folgende Konfiguration in der Datei config/app.php hinzu:
'providers' => [
    // ...
    SpatiePermissionPermissionServiceProvider::class,
],

'aliases' => [
    // ...
    'Permission' => SpatiePermissionFacadesPermission::class,
]

Führen Sie abschließend den Datenbankmigrationsbefehl aus, um die erforderlichen Datentabellen zu erstellen:

php artisan migrate

Benutzer-, Rollen- und Berechtigungsmodell erstellen
    In Laravel müssen drei Modelle erstellt werden, um die Berechtigungsverwaltung zu implementieren: Benutzer (Benutzer), Rolle (Rolle) und Berechtigung (Berechtigung). Erstellen Sie hier ein Benutzermodell und verwenden Sie das Plugin spatie/laravel-permission, um Rollen und Berechtigungen zu verwalten. Führen Sie den folgenden Befehl aus, um diese Modelle zu generieren:

  1. php artisan make:model User
    php artisan make:model Role
    php artisan make:model Permission
  2. Dann fügen Sie den folgenden Code in das generierte Benutzermodell ein:
<?php

namespace App;

use IlluminateNotificationsNotifiable;
use IlluminateFoundationAuthUser as Authenticatable;
use IlluminateDatabaseEloquentRelationsBelongsToMany;
use SpatiePermissionTraitsHasRoles;

class User extends Authenticatable
{
    use Notifiable, HasRoles;

    // ...
}

Abteilungs- und Mitarbeitermodelle erstellen
    Um die Benutzerorganisationsstruktur zu implementieren, müssen Sie auch eine Abteilung erstellen und Mitarbeitermodelle. Führen Sie den folgenden Befehl aus, um diese Modelle zu generieren:

  1. php artisan make:model Department
    php artisan make:model Employee
  2. Fügen Sie dann den folgenden Code im Abteilungsmodell hinzu:
<?php

namespace App;

use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentRelationsHasMany;

class Department extends Model
{
    // ...

    public function employees(): HasMany
    {
        return $this->hasMany(Employee::class);
    }
}

Fügen Sie den folgenden Code im Mitarbeitermodell hinzu:

<?php

namespace App;

use IlluminateDatabaseEloquentModel;
use IlluminateDatabaseEloquentRelationsBelongsTo;

class Employee extends Model
{
    // ...

    public function department(): BelongsTo
    {
        return $this->belongsTo(Department::class);
    }
}

Definieren Sie Rollen und Berechtigungen
    Entsprechend den oben genannten Anforderungen müssen wir drei Rollen definieren: Abteilungsadministratoren, Führungskräfte und normale Mitarbeiter. Erstellen Sie eine Rollentabelle in der Datenbank und verwenden Sie dann den von Laravel bereitgestellten Migrationsbefehl, um die Datentabelle der Rolle zu generieren:

  1. php artisan make:migration create_roles_table --create=roles
    php artisan migrate
  2. Führen Sie den folgenden Befehl aus, um diese drei Rollen hinzuzufügen:
php artisan permission:create-role department_manager
php artisan permission:create-role executive
php artisan permission:create-role employee

Als nächstes müssen wir auch einige Berechtigungen definieren . Erstellen Sie eine Berechtigungstabelle in der Datenbank und verwenden Sie dann den Migrationsbefehl, um eine Datentabelle mit Berechtigungen zu generieren:

php artisan make:migration create_permissions_table --create=permissions
php artisan migrate

Führen Sie den folgenden Befehl aus, um einige Berechtigungen hinzuzufügen:

php artisan permission:create-permission manage_department
php artisan permission:create-permission manage_employee

Rollen und Berechtigungen zuweisen
    Um die Berechtigungskontrolle zu implementieren, Wir müssen den entsprechenden Benutzern und Abteilungen Rollen und Berechtigungen zuweisen. Hier sind einige Beispielcodes:

  1. use AppUser;
    use AppRole;
    use AppPermission;
    use AppDepartment;
    use AppEmployee;
    
    // 创建一个部门管理员用户
    $user = User::create([
        'name' => '部门管理员',
        'email' => 'manager@example.com',
        'password' => bcrypt('password'),
    ]);
    
    // 创建一个部门
    $department = Department::create([
        'name' => '销售部门',
    ]);
    
    // 给用户分配部门管理员角色
    $user->assignRole('department_manager');
    
    // 将部门管理员角色与权限关联起来
    $role = Role::findByName('department_manager');
    $role->givePermissionTo('manage_department');
    
    // 将部门管理员与部门关联起来
    $employee = Employee::create([
        'name' => '张三',
        'department_id' => $department->id,
    ]);
  2. 3. Beispielcode für die Berechtigungskontrolle
Nachdem wir nun die Grundeinstellungen der Berechtigungsverwaltung abgeschlossen haben, können wir mit der Einrichtung des Berechtigungskontrollcodes beginnen. Hier ist ein Beispielcode:


Abteilungsadministratoren können Mitarbeiter ihrer eigenen Abteilung verwalten, aber nicht auf Informationen aus anderen Abteilungen zugreifen.
  1. public function index()
    {
        $user = Auth::user();
        $department = $user->employee->department;
    
        // 部门管理员只能查看本部门的员工列表
        $employees = $department->employees;
    
        return view('employees.index', compact('employees'));
    }
Führungskräfte können unternehmensweit auf Daten zugreifen und diese verwalten.
  1. public function index()
    {
        $user = Auth::user();
    
        // 高管可以查看所有部门的员工列表
        $employees = Employee::all();
    
        return view('employees.index', compact('employees'));
    }
Normale Mitarbeiter können nur auf ihre eigenen persönlichen Daten zugreifen.
  1. public function show($id)
    {
        $user = Auth::user();
    
        // 普通员工只能查看自己的信息
        $employee = Employee::where('id', $id)
                            ->where('user_id', $user->id)
                            ->firstOrFail();
    
        return view('employees.show', compact('employee'));

Das obige ist der detaillierte Inhalt vonPraktische Anwendung der Berechtigungsfunktion von Laravel: So implementieren Sie die Berechtigungssteuerung für die Benutzerorganisationsstruktur. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn