From 919c0c7ddb459bd73a9c355e0ae7f8b2c238cb67 Mon Sep 17 00:00:00 2001 From: zijiren233 Date: Sun, 8 Sep 2024 18:14:11 +0800 Subject: [PATCH] fix: user guest permission set --- internal/op/room.go | 12 +++++++++--- server/handlers/admin.go | 6 +++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/internal/op/room.go b/internal/op/room.go index 60bb8bd..f4676eb 100644 --- a/internal/op/room.go +++ b/internal/op/room.go @@ -540,12 +540,18 @@ func (r *Room) ResetMemberPermissions(userID string) error { return r.SetMemberPermissions(userID, r.Settings.UserDefaultPermissions) } +func (r *Room) SetGuestPermissions(permissions model.RoomMemberPermission) error { + return r.UpdateSettings(map[string]any{ + "guest_permissions": permissions, + }) +} + func (r *Room) SetMemberPermissions(userID string, permissions model.RoomMemberPermission) error { if r.IsCreator(userID) { return errors.New("you are creator, cannot set permissions") } if r.IsGuest(userID) { - return errors.New("please set the permissions for the guest user in the room settings.") + return r.SetGuestPermissions(permissions) } defer r.members.Delete(userID) return db.SetMemberPermissions(r.ID, userID, permissions) @@ -553,7 +559,7 @@ func (r *Room) SetMemberPermissions(userID string, permissions model.RoomMemberP func (r *Room) AddMemberPermissions(userID string, permissions model.RoomMemberPermission) error { if r.IsGuest(userID) { - return errors.New("please set the permissions for the guest user in the room settings.") + return r.SetGuestPermissions(r.Settings.GuestPermissions.Add(permissions)) } if r.IsAdmin(userID) { return errors.New("cannot add permissions to admin") @@ -564,7 +570,7 @@ func (r *Room) AddMemberPermissions(userID string, permissions model.RoomMemberP func (r *Room) RemoveMemberPermissions(userID string, permissions model.RoomMemberPermission) error { if r.IsGuest(userID) { - return errors.New("please set the permissions for the guest user in the room settings.") + return r.SetGuestPermissions(r.Settings.GuestPermissions.Remove(permissions)) } if r.IsAdmin(userID) { return errors.New("cannot remove permissions from admin") diff --git a/server/handlers/admin.go b/server/handlers/admin.go index 991a222..8119538 100644 --- a/server/handlers/admin.go +++ b/server/handlers/admin.go @@ -313,6 +313,10 @@ func AdminGetRoomMembers(ctx *gin.Context) { func genRoomMemberListResp(us []*dbModel.User, room *op.Room) []*model.RoomMembersResp { resp := make([]*model.RoomMembersResp, len(us)) for i, v := range us { + permissions := v.RoomMembers[0].Permissions + if room.IsGuest(v.ID) { + permissions = room.Settings.GuestPermissions + } resp[i] = &model.RoomMembersResp{ UserID: v.ID, Username: v.Username, @@ -321,7 +325,7 @@ func genRoomMemberListResp(us []*dbModel.User, room *op.Room) []*model.RoomMembe Role: v.RoomMembers[0].Role, Status: v.RoomMembers[0].Status, RoomID: v.RoomMembers[0].RoomID, - Permissions: v.RoomMembers[0].Permissions, + Permissions: permissions, AdminPermissions: v.RoomMembers[0].AdminPermissions, } }