Dalam Laravel, saya mempunyai hubungan antara pasukan, projek, pengguna, peranan dan kebenaran.
Pengguna boleh mempunyai berbilang pasukan, satu pasukan boleh mempunyai berbilang projek dan pengguna boleh mempunyai peranan pengguna, peranan pasukan dan peranan projek. Saya ingin tahu cara mendapatkan kebenaran pengguna bagi setiap projek, setiap pasukan dan hanya untuk pengguna.
Jadual pengguna
Meja pasukan
Jadual projek
Jadual peranan
Jadual kebenaran
Jadual kebenaran_peranan
jadual pengguna_projek
jadual pengguna_pasukan
Seorang pengguna hanya boleh mempunyai satu peranan dalam projek, hanya satu peranan dalam pasukan dan pengguna sendiri hanya boleh mempunyai satu peranan, yang boleh menjadi pentadbir atau pengguna biasa.
class Pengguna melanjutkan Boleh Ditulenkan { projek fungsi awamRole() { //Saya tidak dapat mencari cara untuk memasukkan project_id seperti di mana, kerana current_project_id adalah batal dalam but return $this->belongsToMany(Role::class, 'project_user')->where('project_id', '=', $this->current_project_id)->first(); } public function projectPermissions() { kembalikan $this->projectRole()->permissions; } kebenaran fungsi awam() { //Saya tidak dapat mencari jalan untuk mendapatkan semua kebenaran pasukan, kebenaran projek dan kebenaran pengguna } peranan fungsi awam() : BelongsTo { //Hanya boleh menjadi peranan Pengguna, Pentadbir atau Sokongan return $this->belongsTo(Role::class); } fungsi awam userPermissions() { kembalikan $this->role->permissions; } } kelas Peranan meluaskan Model { kebenaran fungsi awam() { pulangkan $this->belongsToMany(Permission::class); } }
Saya mahu menggunakan kebenaran sebagai ambang untuk lulus ke bahagian hadapan Inersia, saya sedang mencuba sesuatu seperti ini.
Gate::before(function ($user, $permission) { kembalikan $user->projectPermissions($user->currentProject)->contains($permission) || $user->teamPermissions($user->currentTeam)->contains($permission) || $ user->teamPermissions($user->currentTeam)->contains($permission) ||. $user->userPermissions()->contains($permission); });
Berdasarkan penjelasan anda, saya melakukannya seperti berikut:
Jadual****************
jadual_projek_pengguna:
jadual_permission_role:
role_user table:
Model *************
Model Pengguna:
Model Pasukan:
Model Projek:
Role Model:
Model Kebenaran:
Firsreeetcipta peranan yang kita kehendaki. Contohnya:
Peranan 1: Nama = Pentadbir Super, Jenis = Pengguna
Peranan 2: Nama = Ketua Pasukan, Jenis = Pasukan
Peranan 3: Nama = Pembangun Projek, Jenis = Projek
Sekarang, kami akan mengharapkan peranan diberikan kepada pengguna kami. Peranan ini disimpan dalam jadual role_user.
Kemudian, berdasarkan peranan ini, anda boleh menentukan tanggungjawab setiap pengguna dalam setiap projek dan pasukan.