From: Marcel van der Veldt Date: Fri, 28 Nov 2025 22:30:01 +0000 (+0100) Subject: Handle builtin player in player filter X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=a00865453ca64d397d31ea453352c066b1f09e4c;p=music-assistant-server.git Handle builtin player in player filter --- diff --git a/music_assistant/controllers/webserver/auth.py b/music_assistant/controllers/webserver/auth.py index 900b8ea7..d51ba01d 100644 --- a/music_assistant/controllers/webserver/auth.py +++ b/music_assistant/controllers/webserver/auth.py @@ -1217,7 +1217,7 @@ class AuthenticationManager: else: self.logger.info("Password changed for user %s", target_user.username) - async def _update_user_filters( + async def update_user_filters( self, target_user: User, player_filter: list[str] | None, @@ -1326,7 +1326,7 @@ class AuthenticationManager: if player_filter is not None or provider_filter is not None: if not is_admin_update: raise InsufficientPermissions("Only admins can update player/provider filters") - target_user = await self._update_user_filters( + target_user = await self.update_user_filters( target_user, player_filter, provider_filter ) diff --git a/music_assistant/providers/builtin_player/provider.py b/music_assistant/providers/builtin_player/provider.py index e5ac6efb..5d405896 100644 --- a/music_assistant/providers/builtin_player/provider.py +++ b/music_assistant/providers/builtin_player/provider.py @@ -9,6 +9,7 @@ import shortuuid from music_assistant_models.builtin_player import BuiltinPlayerEvent, BuiltinPlayerState from music_assistant_models.enums import BuiltinPlayerEventType, EventType, PlayerFeature +from music_assistant.controllers.webserver.helpers.auth_middleware import get_current_user from music_assistant.models.player import Player from music_assistant.models.player_provider import PlayerProvider @@ -70,6 +71,19 @@ class BuiltinPlayerProvider(PlayerProvider): PlayerFeature.POWER, } + # special case: user has player filter enabled but wants + # to use the builtin player on their device, so add it to their filter + current_user = get_current_user() + if ( + current_user + and current_user.player_filter + and player_id not in current_user.player_filter + ): + current_user.player_filter.append(player_id) + await self.mass.webserver.auth.update_user_filters( + current_user, player_filter=current_user.player_filter, provider_filter=None + ) + player = self.mass.players.get(player_id) if player is None: