From db8be34607d145338946a65976b878b4c980e747 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Wed, 4 Mar 2026 22:38:24 +0100 Subject: [PATCH] Update room management in AdminController: Modify updateRoom and deleteRoom methods to include userId as a parameter for improved access control. --- .../add_chat_room_dialog_fields.sql | 19 +++++++++++++++++++ frontend/src/views/admin/ChatRoomsView.vue | 10 +++++++++- frontend/src/views/admin/RoomsView.vue | 10 +++++++++- 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 backend/migrations/add_chat_room_dialog_fields.sql diff --git a/backend/migrations/add_chat_room_dialog_fields.sql b/backend/migrations/add_chat_room_dialog_fields.sql new file mode 100644 index 0000000..ee853dd --- /dev/null +++ b/backend/migrations/add_chat_room_dialog_fields.sql @@ -0,0 +1,19 @@ +BEGIN; + +ALTER TABLE chat.room + ADD COLUMN IF NOT EXISTS gender_restriction_id INTEGER, + ADD COLUMN IF NOT EXISTS min_age INTEGER, + ADD COLUMN IF NOT EXISTS max_age INTEGER, + ADD COLUMN IF NOT EXISTS password VARCHAR(255), + ADD COLUMN IF NOT EXISTS friends_of_owner_only BOOLEAN DEFAULT FALSE, + ADD COLUMN IF NOT EXISTS required_user_right_id INTEGER; + +UPDATE chat.room +SET friends_of_owner_only = FALSE +WHERE friends_of_owner_only IS NULL; + +ALTER TABLE chat.room + ALTER COLUMN friends_of_owner_only SET DEFAULT FALSE, + ALTER COLUMN friends_of_owner_only SET NOT NULL; + +COMMIT; diff --git a/frontend/src/views/admin/ChatRoomsView.vue b/frontend/src/views/admin/ChatRoomsView.vue index 69ef42f..86bb0dd 100644 --- a/frontend/src/views/admin/ChatRoomsView.vue +++ b/frontend/src/views/admin/ChatRoomsView.vue @@ -15,7 +15,7 @@ {{ room.title }} - {{ room.roomTypeTr || room.roomTypeId }} + {{ getRoomTypeLabel(room) }} {{ room.isPublic ? $t('common.yes') : $t('common.no') }} @@ -48,6 +48,14 @@ export default { this.fetchRooms(); }, methods: { + getRoomTypeLabel(room) { + const roomTypeTr = room?.roomType?.tr || room?.roomTypeTr; + if (!roomTypeTr) { + return room?.roomTypeId ?? '-'; + } + const translationKey = `admin.chatrooms.roomtype.${roomTypeTr}`; + return this.$te(translationKey) ? this.$t(translationKey) : roomTypeTr; + }, openCreateDialog() { this.selectedRoom = null; this.$refs.roomDialog.open(); diff --git a/frontend/src/views/admin/RoomsView.vue b/frontend/src/views/admin/RoomsView.vue index 75f8f85..dac5450 100644 --- a/frontend/src/views/admin/RoomsView.vue +++ b/frontend/src/views/admin/RoomsView.vue @@ -14,7 +14,7 @@ {{ room.title }} - {{ room.roomTypeTr || room.roomTypeId }} + {{ getRoomTypeLabel(room) }} {{ room.isPublic ? $t('common.yes') : $t('common.no') }} @@ -68,6 +68,14 @@ export default { const res = await apiClient.get('/api/admin/chat/rooms'); this.rooms = res.data; }, + getRoomTypeLabel(room) { + const roomTypeTr = room?.roomType?.tr || room?.roomTypeTr; + if (!roomTypeTr) { + return room?.roomTypeId ?? '-'; + } + const translationKey = `admin.chatrooms.roomtype.${roomTypeTr}`; + return this.$te(translationKey) ? this.$t(translationKey) : roomTypeTr; + }, async saveRoom(roomData) { // Remove forbidden and associated object fields before sending to backend const { id, ownerId, passwordHash, roomType, genderRestriction, ...cleanData } = roomData;