From 7a791d7e940a74860fe0a1dad908eddf2585797a Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Tue, 21 Jan 2025 17:56:54 +0200 Subject: Admins can no longer ban/mute/kick each other, they can still delete each others messages (to save some time having to query the sender ID to see if he's an admin) --- internal/server/api/api.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/internal/server/api/api.go b/internal/server/api/api.go index 2d70174..bddc43d 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -557,6 +557,7 @@ func SetMember(ctx context.Context, sess *session.Session, request *packet.SetMe return &ErrInternalError } + isSessOwner := sess.ID() == network.OwnerID isSessAdmin, err := IsNetworkAdmin(ctx, queries, sess.ID(), request.Network) if err != nil { log.Println("database error 7:", err) @@ -571,7 +572,7 @@ func SetMember(ctx context.Context, sess *session.Session, request *packet.SetMe if request.Member != nil && !IsBanned { isLeave := !*request.Member && request.User == sess.ID() - isKick := !*request.Member && isSessAdmin + isKick := !*request.Member && isSessAdmin && (!isAdmin || isSessOwner) if request.User != network.OwnerID && (isLeave || isKick) { isMember = false isAdmin = false // Important for security @@ -581,19 +582,17 @@ func SetMember(ctx context.Context, sess *session.Session, request *packet.SetMe isMember = true } } else if request.Admin != nil { - if network.OwnerID == sess.ID() && request.User != sess.ID() { + if isSessOwner && request.User != sess.ID() { isAdmin = *request.Admin } } else if request.Muted != nil { notSelf := request.User != sess.ID() - notOwner := request.User != network.OwnerID - if isSessAdmin && notSelf && notOwner { + if isSessAdmin && notSelf && (!isAdmin || isSessOwner) { isMuted = *request.Muted } } else if request.Banned != nil { notSelf := request.User != sess.ID() - notOwner := request.User != network.OwnerID - if isSessAdmin && notSelf && notOwner { + if isSessAdmin && notSelf && (!isAdmin || isSessOwner) { IsBanned = *request.Banned banReason = request.BanReason isAdmin = false // Important for security -- cgit v1.3.1