users()->where('users.id', $user->id)->exists(); } /** * Determine whether the user can create models. */ public function create(User $user): bool { return true; } /** * Determine whether the user can update the model. */ public function update(User $user, Project $project): bool { return $this->hasRole($user, $project, ['owner', 'admin']); } /** * Determine whether the user can delete the model. */ public function delete(User $user, Project $project): bool { return $this->hasRole($user, $project, ['owner']); } /** * Determine whether the user can manage members. */ public function manageMembers(User $user, Project $project): bool { return $this->hasRole($user, $project, ['owner', 'admin']); } /** * Determine whether the user can manage settings. */ public function manageSettings(User $user, Project $project): bool { return $this->hasRole($user, $project, ['owner', 'admin']); } /** * Check if user has one of the specified roles for the project */ private function hasRole(User $user, Project $project, array $roles): bool { $userRole = $project->users() ->where('users.id', $user->id) ->first() ?->pivot ?->role; return $userRole && in_array($userRole, $roles); } }