fix: user guest permission set

This commit is contained in:
zijiren233 2024-09-08 18:14:11 +08:00
parent 530fda45a9
commit 919c0c7ddb
2 changed files with 14 additions and 4 deletions

View File

@ -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")

View File

@ -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,
}
}