belongsToMany(Company::class)->withPivot('permissions'); } public function company() { return $this->companies()->where('company_id', $this->getCurrentCompanyId())->first(); } public function permissions() { $permissions = json_decode($this->company()->pivot->permissions); if (! $permissions) return []; return $permissions; } public function is_admin() { return $this->company()->pivot->is_admin; } public function contacts() { return $this->hasMany(Contact::class); } public function owns($entity) : bool { return ! empty($entity->user_id) && $entity->user_id == $this->id; } public function permissionsFlat() { return collect($this->permissions())->flatten(); } public function permissionsMap() { $keys = array_values((array) $this->permissions()); $values = array_fill(0, count($keys), true); return array_combine($keys, $values); } }