'boolean']; public function permissions() { return $this->belongsToMany( Permission::class, 'permissionables', 'permissionable_id', 'permission_id', 'role_id', ) ->where('permissionable_type', Role::MODEL_TYPE) ->select([ 'permissions.id', 'permissions.name', 'permissions.restrictions', ]); } public function workspace() { return $this->belongsTo(Workspace::class); } public function scopeCurrentUserAndOwnerOnly(Builder $builder): self { $builder->where(function (Builder $builder) { $builder ->where('workspace_user.user_id', Auth::id()) ->orWhere('workspace_user.is_owner', true); }); return $this; } public static function getModelTypeAttribute(): string { return 'member'; } public function hasPermission(string $name): bool { return $this->is_owner || !is_null($this->getPermission($name)); } public function getPermission(string $name): ?Permission { return $this->permissions->first(function (Permission $permission) use ( $name ) { return $permission->name === $name; }); } public function getRoleNameAttribute() { return $this->is_owner ? 'Workspace Owner' : $this->attributes['role_name']; } }