Hubungan antara tiga lajur dalam Laravel: Peranan, Pasukan dan Projek.
P粉645569197
2023-07-26 15:10:19
<p>Dalam Laravel, saya mempunyai hubungan antara pasukan, projek, pengguna, peranan dan kebenaran. <br /><br />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. </p><p><br /></p>
<p><strong>Jadual pengguna</strong></p>
<ul>
<li>Id</li>
<li>nama</li>
<li>id_projek semasa</li>
<li>current_team_id</li>
<li>role_id</li>
<li>etc</li>
</ul>
<p><strong>Meja pasukan</strong></p>
<ul>
<li>id</li>
<li>nama</li>
</ul>
<p><strong>Jadual projek</strong></p>
<ul>
<li>id</li>
<li>nama</li>
<li>penerangan</li>
</ul>
<p><strong>Jadual peranan</strong></p>
<ul>
<li>id</li>
<li>nama</li>
<li>jenis(pengguna, projek, pasukan)</li>
</ul>
<p><strong>Jadual kebenaran</strong></p>
<ul>
<li>id</li>
<li>nama</li>
</ul>
<p><strong>Jadual kebenaran_peranan</strong></p>
<ul>
<li>id_izin</li>
<li>role_id</li>
</ul>
<p><strong>jadual pengguna_projek</strong></p>
<ul>
<li>project_id</li>
<li>user_id</li>
<li>role_id</li>
</ul>
<p><strong>jadual pengguna_pasukan</strong></p>
<ul>
<li>team_id</li>
<li>user_id</li>
<li>role_id</li>
</ul>
<p>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. </p><p><br /></p>
<pre class="brush:php;toolbar:false;">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);
}
}</pre>
<p>Saya mahu menggunakan kebenaran sebagai ambang untuk lulus ke bahagian hadapan Inersia, saya sedang mencuba sesuatu seperti ini. </p>
<pre class="brush:php;toolbar:false;">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);
});</pre>
<p><br /></p>
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.