koel/resources/assets/js/composables/usePolicies.ts

30 lines
853 B
TypeScript
Raw Normal View History

2024-04-04 22:20:42 +00:00
import { useAuthorization, useKoelPlus } from '@/composables'
import { arrayify } from '@/utils'
export const usePolicies = () => {
const { currentUser, isAdmin } = useAuthorization()
const { isPlus } = useKoelPlus()
const currentUserCan = {
editSong: (songs: MaybeArray<Song>) => {
if (isAdmin.value) {
return true
}
if (!isPlus.value) {
return false
}
return arrayify(songs).every(song => song.owner_id === currentUser.value.id)
2024-04-04 22:20:42 +00:00
},
editPlaylist: (playlist: Playlist) => playlist.user_id === currentUser.value.id,
uploadSongs: () => isAdmin.value || isPlus.value,
changeAlbumOrArtistThumbnails: () => isAdmin.value || isPlus.value, // for Plus, the logic is handled in the backend
2024-04-04 22:20:42 +00:00
}
currentUserCan.editSongs = currentUserCan.editSong
2024-04-04 22:20:42 +00:00
return {
currentUserCan,
2024-04-04 22:20:42 +00:00
}
}