Heim >PHP-Framework >Laravel >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:
composer require spatie/laravel-permission
'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
php artisan make:model User php artisan make:model Role php artisan make:model Permission
<?php namespace App; use IlluminateNotificationsNotifiable; use IlluminateFoundationAuthUser as Authenticatable; use IlluminateDatabaseEloquentRelationsBelongsToMany; use SpatiePermissionTraitsHasRoles; class User extends Authenticatable { use Notifiable, HasRoles; // ... }Abteilungs- und Mitarbeitermodelle erstellen
php artisan make:model Department php artisan make:model Employee
<?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
php artisan make:migration create_roles_table --create=roles php artisan migrate
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_employeeRollen und Berechtigungen zuweisen
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, ]);
public function index() { $user = Auth::user(); $department = $user->employee->department; // 部门管理员只能查看本部门的员工列表 $employees = $department->employees; return view('employees.index', compact('employees')); }
public function index() { $user = Auth::user(); // 高管可以查看所有部门的员工列表 $employees = Employee::all(); return view('employees.index', compact('employees')); }
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!