Laravel8 Jetstreamであれやこれや作っています。
今回はチーム内に管理者を置いて、共同管理ができるようにしたく、まずはロール変更が出きるようにしてみました。
条件
- Laravel8
- Jetstream team版導入済み
- 新規ユーザ登録時にチームIDは指定し、ロールはreaderを持たせている
なんでこれが必用か
JetstreamのチームメンバーのロールはTeam Ownerしか変更できません。
そこで、editorにも編集権限を渡したいと思います。
参考にしたサイト
ロールの確認
app/providers/JetstreamServiceProvider.php
の
editorにupdateがあることを確認する。
JetstreamServiceProvider.php
Jetstream::role('editor', 'Editor', [
'read',
'create',
'update', //<----これ
])->description('Editor users have the ability to read, create, and update.');
app/policies/TeamPolicy.phpを編集する。
変更前のこれ
TeamPolicy.php
public function updateTeamMember(User $user, Team $team)
{
return $user->ownsTeam($team);
}
を
TeamPolicy.php
public function updateTeamMember(User $user, Team $team)
{
if($user->hasTeamPermission($team, ' update')){
return true;
}
//変更前は以下
//return $user->ownsTeam($team);
}
にします。
これだけでした。
これは動かなかった
function名を変えると動きませんでした。
app/policies/TeamPolicy.php
TeamPolicy.php
public function modifyTeamMember(User $user, Team $team)
{
if($user->hasTeamPermission($team, 'update')){
return true;
}
}
function名で参照しているのかな。
最初はOwnerがロール変更をする必用があります。