Rumah >rangka kerja php >Laravel >Aplikasi praktikal fungsi kebenaran Laravel: Cara melaksanakan kawalan kebenaran struktur organisasi pengguna
Aplikasi praktikal fungsi kebenaran Laravel: Cara melaksanakan kawalan kebenaran struktur organisasi pengguna memerlukan contoh kod khusus
Pengenalan:
Dengan perkembangan pesat aplikasi web, kawalan kebenaran pengguna telah menjadi keperluan fungsi yang penting. Laravel, sebagai rangka kerja PHP yang popular, menyediakan fungsi pengurusan kebenaran yang fleksibel dan berkuasa. Artikel ini akan memperkenalkan cara menggunakan Laravel untuk melaksanakan kawalan kebenaran struktur organisasi pengguna dan memberikan contoh kod khusus.
1. Keperluan untuk kawalan kebenaran struktur organisasi pengguna
Dalam banyak aplikasi, kebenaran pengguna biasanya diperuntukkan dan diuruskan mengikut struktur organisasi. Sebagai contoh, perusahaan mempunyai beberapa jabatan, dan setiap jabatan mempunyai pekerja yang berbeza. Dalam kes ini, fungsi yang perlu dilaksanakan ialah:
2. Gunakan fungsi pengurusan kebenaran Laravel
Rangka kerja Laravel mempunyai set lengkap fungsi pengurusan kebenaran terbina dalam yang boleh memenuhi keperluan di atas. Berikut akan memperkenalkan cara menggunakan fungsi kebenaran Laravel untuk melaksanakan kawalan kebenaran struktur organisasi pengguna.
composer require spatie/laravel-permission
Kemudian, tambahkan konfigurasi berikut dalam fail config/app.php:
'providers' => [ // ... SpatiePermissionPermissionServiceProvider::class, ], 'aliases' => [ // ... 'Permission' => SpatiePermissionFacadesPermission::class, ]
Akhir sekali, jalankan arahan migrasi pangkalan data untuk mencipta jadual data yang diperlukan:
php artisan migrate
php artisan make:model User php artisan make:model Role php artisan make:model Permission
Kemudian, tambah kod berikut dalam model Pengguna yang dijana:
<?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
Kemudian, tambah kod berikut dalam model Jabatan:
<?php namespace App; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentRelationsHasMany; class Department extends Model { // ... public function employees(): HasMany { return $this->hasMany(Employee::class); } }
Tambah kod berikut dalam model Pekerja:
<?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
Jalankan arahan berikut untuk menambah tiga peranan ini:
php artisan permission:create-role department_manager php artisan permission:create-role executive php artisan permission:create-role employee
Seterusnya, kita juga perlu menentukan beberapa kebenaran . Cipta jadual kebenaran dalam pangkalan data, dan kemudian gunakan arahan migrasi untuk menjana jadual data kebenaran:
php artisan make:migration create_permissions_table --create=permissions php artisan migrate
Jalankan arahan berikut untuk menambah beberapa kebenaran:
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, ]);
3. Kod sampel kawalan kebenaran
Setelah kami melengkapkan tetapan asas pengurusan kebenaran, kami boleh mula menyediakan kod kawalan kebenaran. Berikut ialah beberapa contoh kod:
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'));
Atas ialah kandungan terperinci Aplikasi praktikal fungsi kebenaran Laravel: Cara melaksanakan kawalan kebenaran struktur organisasi pengguna. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!