tenant_id === session('tenant_id') && ($user->hasRole('admin') || $user->hasRole('manager') || $user->hasPermissionTo('view projects')); } /** * Determine whether the user can view the project. */ public function view(User $user, Project $project): bool { return $user->tenant_id === $project->tenant_id && ($user->hasRole('admin') || $user->hasRole('manager') || $user->hasPermissionTo('view projects') || $project->users()->where('user_id', $user->id)->exists()); } /** * Determine whether the user can create projects. */ public function create(User $user): bool { return $user->tenant_id === session('tenant_id') && ($user->hasRole('admin') || $user->hasRole('manager') || $user->hasPermissionTo('create projects')); } /** * Determine whether the user can update the project. */ public function update(User $user, Project $project): bool { return $user->tenant_id === $project->tenant_id && ($user->hasRole('admin') || ($user->hasRole('manager') && $project->manager_id === $user->id) || $user->hasPermissionTo('edit projects')); } /** * Determine whether the user can delete the project. */ public function delete(User $user, Project $project): bool { return $user->tenant_id === $project->tenant_id && ($user->hasRole('admin') || $user->hasPermissionTo('delete projects')); } /** * Determine whether the user can manage project members. */ public function manageMembers(User $user, Project $project): bool { return $user->tenant_id === $project->tenant_id && ($user->hasRole('admin') || ($user->hasRole('manager') && $project->manager_id === $user->id) || $user->hasPermissionTo('manage project members')); } }