|
@@ -1,223 +1,223 @@
|
|
|
-import config from "config";
|
|
|
-import { UserRole } from "@/modules/DataModule/models/users/UserRole";
|
|
|
-
|
|
|
-const guest = {};
|
|
|
-
|
|
|
-const user = { ...guest };
|
|
|
-
|
|
|
-const dj = { ...user };
|
|
|
-
|
|
|
-const owner = { ...dj };
|
|
|
-
|
|
|
-const moderator = {
|
|
|
- ...owner,
|
|
|
-
|
|
|
-
|
|
|
- "data.importJobs.create": true,
|
|
|
- "data.importJobs.findById.*": true,
|
|
|
- "data.importJobs.getData": true,
|
|
|
- "data.importJobs.deleteById.*": true,
|
|
|
- "data.importJobs.updateById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.news.create": true,
|
|
|
- "data.news.getData": true,
|
|
|
- "data.news.updateById.*": true,
|
|
|
- "data.news.findManyById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.playlists.addSongById.*": true,
|
|
|
- "data.playlists.create.admin": true,
|
|
|
- "data.playlists.findById.*": true,
|
|
|
- "data.playlists.getData": true,
|
|
|
- "data.playlists.removeSongById.*": true,
|
|
|
- "data.playlists.repositionSongById.*": true,
|
|
|
- "data.playlists.updateDisplayNameById.*": true,
|
|
|
- "data.playlists.updatePrivacyById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.punishments.banIP": true,
|
|
|
- "data.punishments.findById.*": true,
|
|
|
- "data.punishments.getData": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.reports.findById.*": true,
|
|
|
- "data.reports.getData": true,
|
|
|
- "data.reports.updateById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.songs.create": true,
|
|
|
- "data.songs.findById.*": true,
|
|
|
- "data.songs.getData": true,
|
|
|
- "data.songs.updateById.*": true,
|
|
|
- "data.songs.verifyById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.stations.create.official": true,
|
|
|
- "data.stations.findById.*": true,
|
|
|
- "data.stations.getData": true,
|
|
|
- "data.stations.index.adminFilter": true,
|
|
|
- "data.stations.updateById.*": true,
|
|
|
- "data.stations.findManyById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.users.banById.*": true,
|
|
|
- "data.users.findById.*": true,
|
|
|
- "data.users.getData": true,
|
|
|
- "data.users.requestPasswordResetById.*": !!config.get("mail.enabled"),
|
|
|
- "data.users.resendVerifyEmailById.*": !!config.get("mail.enabled"),
|
|
|
- "data.users.updateById.*": true,
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- "data.youtubeVideos.getData": true,
|
|
|
- "data.youtubeVideos.requestSet": true,
|
|
|
-
|
|
|
-
|
|
|
- "discogs.search": !!config.get("apis.discogs.enabled"),
|
|
|
-
|
|
|
-
|
|
|
- "admin.view": true,
|
|
|
- "admin.view.import": true,
|
|
|
- "admin.view.news": true,
|
|
|
- "admin.view.playlists": true,
|
|
|
- "admin.view.punishments": true,
|
|
|
- "admin.view.reports": true,
|
|
|
- "admin.view.songs": true,
|
|
|
- "admin.view.stations": true,
|
|
|
- "admin.view.users": true,
|
|
|
- "admin.view.youtubeVideos": true
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-const admin = {
|
|
|
- ...moderator,
|
|
|
-
|
|
|
-
|
|
|
- "data.dataRequests.findById.*": true,
|
|
|
- "data.dataRequests.getData": true,
|
|
|
- "data.dataRequests.resolveById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.importJobs.deleteById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.news.deleteById.*": true,
|
|
|
- "data.news.deleteManyById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.playlists.clearAndRefillById.*": true,
|
|
|
- "data.playlists.clearAndRefillAll": true,
|
|
|
- "data.playlists.createMissing": true,
|
|
|
- "data.playlists.deleteOrphaned": true,
|
|
|
- "data.playlists.deleteById.*": true,
|
|
|
- "data.playlists.requestOrphanedPlaylistSongs": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.punishments.deactivateById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.ratings.recalculateAll": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.reports.deleteById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.songs.deleteById.*": true,
|
|
|
- "data.songs.updateAll": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.stations.clearEveryStationQueue": true,
|
|
|
- "data.stations.deleteById.*": true,
|
|
|
- "data.stations.deleteManyById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.users.deleteById.*": true,
|
|
|
- "data.users.deleteSessionsById.*": true,
|
|
|
- "data.users.updateById.*": true,
|
|
|
- "data.users.deleteManyById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.youtubeApiRequests.findById.*": true,
|
|
|
- "data.youtubeApiRequests.getData": true,
|
|
|
- "data.youtubeApiRequests.deleteAll": true,
|
|
|
- "data.youtubeApiRequests.deleteById.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "data.youtubeVideos.getMissing": true,
|
|
|
- "data.youtubeVideos.deleteById.*": true,
|
|
|
- "data.youtubeVideos.migrateV1ToV2.*": true,
|
|
|
-
|
|
|
-
|
|
|
- "admin.view.dataRequests": true,
|
|
|
- "admin.view.statistics": true,
|
|
|
- "admin.view.youtube": true,
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- "event.data.minifiedUsers.created": true,
|
|
|
- "event.data.minifiedUsers.updated.*": true,
|
|
|
- "event.data.minifiedUsers.deleted.*": true,
|
|
|
-
|
|
|
- "event.data.news.created": true,
|
|
|
- "event.data.news.updated.*": true,
|
|
|
- "event.data.news.deleted.*": true,
|
|
|
-
|
|
|
- "event.data.stations.created": true,
|
|
|
- "event.data.stations.updated.*": true,
|
|
|
- "event.data.stations.deleted.*": true,
|
|
|
-
|
|
|
- "event.data.users.created": true,
|
|
|
- "event.data.users.updated.*": true,
|
|
|
- "event.data.users.deleted.*": true
|
|
|
-};
|
|
|
-
|
|
|
-const permissions: Record<
|
|
|
- UserRole | "owner" | "dj" | "guest",
|
|
|
- Record<string, boolean>
|
|
|
-> = {
|
|
|
- guest,
|
|
|
- user,
|
|
|
- dj,
|
|
|
- owner,
|
|
|
- moderator,
|
|
|
- admin
|
|
|
-};
|
|
|
-
|
|
|
-export default permissions;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|