<p>Laravel에서는 팀, 프로젝트, 사용자, 역할 및 권한 간의 관계가 있습니다. <br /><br />사용자는 여러 팀을 가질 수 있고, 팀은 여러 프로젝트를 가질 수 있으며, 사용자는 사용자 역할, 팀 역할 및 프로젝트 역할을 가질 수 있습니다. 프로젝트별, 팀별, 해당 사용자에 대해서만 사용자 권한을 얻는 방법을 알고 싶습니다.
<p><strong>사용자 테이블</strong></p>
- ID
- 이름
- 현재_프로젝트_ID
- current_team_id
- role_id
- 등
</ul>
<p><strong>팀 테이블</strong></p>
- ID
- 이름
</ul>
<p><strong>프로젝트 테이블</strong></p>
- ID
- 이름
- 설명
</ul>
<p><strong>역할 테이블</strong></p>
- ID
- 이름
- 유형(사용자,프로젝트,팀)
</ul>
<p><strong>권한 테이블</strong></p>
- ID
- 이름
</ul>
<p><strong>Role_permission 테이블</strong></p>
- permission_id
- role_id
</ul>
<p><strong>project_user 테이블</strong></p>
- project_id
- user_id
- role_id
</ul>
<p><strong>team_user 테이블</strong></p>
- 팀_ID
- user_id
- role_id
</ul>
<p>사용자는 프로젝트에서 하나의 역할, 팀에서 하나의 역할만 가질 수 있으며, 사용자 자신도 관리자 또는 일반 사용자 등 하나의 역할만 가질 수 있습니다.
<pre class="brush:php;toolbar:false;">class 사용자 확장 인증 가능
{
공개 함수 projectRole()
{
//부팅 시 current_project_id가 null이므로 where와 같이 project_id를 삽입하는 방법을 찾을 수 없습니다.
return $this->belongsToMany(Role::class, 'project_user')->where('project_id', '=', $this->current_project_id)->first();
}
공개 함수 projectPermissions()
{
$this->projectRole()->권한을 반환합니다.
}
공개 함수 권한()
{
//팀 권한, 프로젝트 권한, 사용자 권한을 모두 얻는 방법을 찾을 수 없습니다.
}
공용 함수 role() : BelongsTo
{
//사용자 역할, 관리자 또는 지원만 가능
return $this->belongsTo(Role::class);
}
공용 함수 userPermissions()
{
$this->역할->권한을 반환합니다.
}
}
클래스 역할 확장 모델
{
공개 함수 권한()
{
return $this->belongsToMany(Permission::class);
}
}</pre>
<p>Inertia 프런트엔드에 전달하기 위한 임계값으로 권한을 사용하고 싶습니다. 다음과 같은 것을 시도하고 있습니다. </p>
<pre class="brush:php;toolbar:false;">Gate::before(function ($user, $permission) {
return $user->projectPermissions($user->currentProject)->contains($permission) || $user->teamPermissions($user->currentTeam)->contains($permission) || 사용자->팀권한($user->현재팀)->포함($permission)
|| $user->userPermissions()->contains($permission);
});</pre>
<p><br /></p>
귀하의 설명에 따라 다음과 같이 했습니다.
Table****************
project_user 테이블:
permission_role 테이블:
role_user 테이블:
모델 *************
사용자 모델:
팀 모델:
프로젝트 모델:
역할 모델:
권한 모델:
먼저, we 원하는 역할을 만듭니다. 예:
역할 1: 이름 = 최고 관리자, 유형 = 사용자
역할 2: 이름 = 팀 리더, 유형 = 팀
역할 3: 이름 = 프로젝트 개발자, 유형 = 프로젝트
이제 역할을 기대합니다. 우리 사용자에게 할당되었습니다. 이러한 역할은 role_user 테이블에 저장됩니다.
그런 다음 이러한 역할을 기반으로 각 프로젝트 및 팀 내에서 각 사용자의 책임을 결정할 수 있습니다.