Added OS field 'readonly' in playlist responses
This commit is contained in:
@@ -61,6 +61,8 @@ The following extra fields are implemented:
|
|||||||
* `musicBrainzId`
|
* `musicBrainzId`
|
||||||
* `sortName`
|
* `sortName`
|
||||||
* `roles`
|
* `roles`
|
||||||
|
* `Playlist` response:
|
||||||
|
* `readonly`
|
||||||
|
|
||||||
## Supported extensions
|
## Supported extensions
|
||||||
* [API Key Authentication](https://opensubsonic.netlify.app/docs/extensions/apikeyauth/)
|
* [API Key Authentication](https://opensubsonic.netlify.app/docs/extensions/apikeyauth/)
|
||||||
|
|||||||
@@ -43,8 +43,10 @@ namespace lms::api::subsonic
|
|||||||
playlistNode.setAttribute("public", tracklist->getVisibility() == db::TrackList::Visibility::Public);
|
playlistNode.setAttribute("public", tracklist->getVisibility() == db::TrackList::Visibility::Public);
|
||||||
playlistNode.setAttribute("changed", core::stringUtils::toISO8601String(tracklist->getLastModifiedDateTime()));
|
playlistNode.setAttribute("changed", core::stringUtils::toISO8601String(tracklist->getLastModifiedDateTime()));
|
||||||
playlistNode.setAttribute("created", core::stringUtils::toISO8601String(tracklist->getCreationDateTime()));
|
playlistNode.setAttribute("created", core::stringUtils::toISO8601String(tracklist->getCreationDateTime()));
|
||||||
if (const db::User::pointer user{ tracklist->getUser() })
|
|
||||||
playlistNode.setAttribute("owner", user->getLoginName());
|
const db::User::pointer trackListUser{ tracklist->getUser() };
|
||||||
|
if (trackListUser)
|
||||||
|
playlistNode.setAttribute("owner", trackListUser->getLoginName());
|
||||||
|
|
||||||
if (const db::ArtworkId artworkId{ core::Service<artwork::IArtworkService>::get()->findTrackListImage(tracklist->getId()) }; artworkId.isValid())
|
if (const db::ArtworkId artworkId{ core::Service<artwork::IArtworkService>::get()->findTrackListImage(tracklist->getId()) }; artworkId.isValid())
|
||||||
{
|
{
|
||||||
@@ -55,6 +57,12 @@ namespace lms::api::subsonic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (context.isOpenSubsonicEnabled())
|
||||||
|
{
|
||||||
|
// A playlist with no owner is always read only, and only the owner of a tracklist can modify it
|
||||||
|
playlistNode.setAttribute("readonly", !trackListUser || trackListUser != context.getUser());
|
||||||
|
}
|
||||||
|
|
||||||
return playlistNode;
|
return playlistNode;
|
||||||
}
|
}
|
||||||
} // namespace lms::api::subsonic
|
} // namespace lms::api::subsonic
|
||||||
Reference in New Issue
Block a user