Laravel の権限機能の実践的な応用: ユーザー組織構造の権限制御を実装するには具体的なコード例が必要です
Web アプリケーションの急速な開発に伴い、ユーザー権限の制御は重要な機能要件となっています。 Laravel は、人気のある PHP フレームワークとして、柔軟で強力な権限管理機能を提供します。この記事では、Laravelを使用してユーザー組織構造の権限制御を実装する方法と、具体的なコード例を紹介します。
composer require spatie/laravel-permission
次に、次の構成を config/app.php ファイルに追加します:
'providers' => [ // ... SpatiePermissionPermissionServiceProvider::class, ], 'aliases' => [ // ... 'Permission' => SpatiePermissionFacadesPermission::class, ]
php artisan migrate
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; // ... }
php artisan make:model Department php artisan make:model Employee
次に、Department モデルに次のコードを追加します。
<?php namespace App; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentRelationsHasMany; class Department extends Model { // ... public function employees(): HasMany { return $this->hasMany(Employee::class); } }
<?php namespace App; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentRelationsBelongsTo; class Employee extends Model { // ... public function department(): BelongsTo { return $this->belongsTo(Department::class); } }
php artisan make:migration create_roles_table --create=roles php artisan migrate
次のコマンドを実行して、これら 3 つのロールを追加します。
php artisan permission:create-role department_manager php artisan permission:create-role executive php artisan permission:create-role employee
次に、いくつかの権限を定義する必要もあります。データベースに権限テーブルを作成し、移行コマンドを使用して権限データ テーブルを生成します。
php artisan make:migration create_permissions_table --create=permissions php artisan migrate
php artisan permission:create-permission manage_department php artisan permission:create-permission manage_employee
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')); }
以上がLaravelのパーミッション機能の実践:ユーザー組織構造のパーミッション制御の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。