Added OS field 'readonly' in playlist responses
This commit is contained in:
@@ -61,6 +61,8 @@ The following extra fields are implemented:
|
||||
* `musicBrainzId`
|
||||
* `sortName`
|
||||
* `roles`
|
||||
* `Playlist` response:
|
||||
* `readonly`
|
||||
|
||||
## Supported extensions
|
||||
* [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("changed", core::stringUtils::toISO8601String(tracklist->getLastModifiedDateTime()));
|
||||
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())
|
||||
{
|
||||
@@ -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;
|
||||
}
|
||||
} // namespace lms::api::subsonic
|
||||
Reference in New Issue
Block a user