diff options
| author | Kyren223 <Kyren223@proton.me> | 2025-01-21 17:56:54 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2025-01-21 17:56:54 +0200 |
| commit | 7a791d7e940a74860fe0a1dad908eddf2585797a (patch) | |
| tree | dcfbc0ef44c7b144a24ddb17d232cd06c0c280c4 | |
| parent | ad58adeeb296b39d68fcfdffed99f84dd74d251e (diff) | |
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)
| -rw-r--r-- | internal/server/api/api.go | 11 |
1 files 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 |
