From bfc65f7f37f7badcffe36063d1a294dbb7e417ec Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Sun, 1 Dec 2024 16:13:46 +0200 Subject: [PATCH] Minor improvements to server code --- internal/server/api/api.go | 16 ++++------------ internal/server/api/helpers.go | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/internal/server/api/api.go b/internal/server/api/api.go index 74abd94..b1cc58d 100644 --- a/internal/server/api/api.go +++ b/internal/server/api/api.go @@ -251,11 +251,7 @@ func SwapUserNetworks(ctx context.Context, sess *session.Session, request *packe func CreateFrequency(ctx context.Context, sess *session.Session, request *packet.CreateFrequency) packet.Payload { queries := data.New(db) - // Check if authorized - userNetwork, err := queries.GetUserNetwork(ctx, data.GetUserNetworkParams{ - UserID: sess.ID(), - NetworkID: request.Network, - }) + isAdmin, err := IsNetworkAdmin(ctx, queries, sess.ID(), request.Network) if err == sql.ErrNoRows { return &packet.Error{Error: "either user or network don't exist"} } @@ -263,7 +259,7 @@ func CreateFrequency(ctx context.Context, sess *session.Session, request *packet log.Println("database error 1:", err) return &ErrInternalError } - if !userNetwork.IsAdmin || !userNetwork.IsMember || userNetwork.IsBanned { + if !isAdmin { return &ErrPermissionDenied } @@ -307,11 +303,7 @@ func CreateFrequency(ctx context.Context, sess *session.Session, request *packet func SwapFrequencies(ctx context.Context, sess *session.Session, request *packet.SwapFrequencies) packet.Payload { queries := data.New(db) - // Check if authorized - userNetwork, err := queries.GetUserNetwork(ctx, data.GetUserNetworkParams{ - UserID: sess.ID(), - NetworkID: request.Network, - }) + isAdmin, err := IsNetworkAdmin(ctx, queries, sess.ID(), request.Network) if err == sql.ErrNoRows { return &packet.Error{Error: "either user or network don't exist"} } @@ -319,7 +311,7 @@ func SwapFrequencies(ctx context.Context, sess *session.Session, request *packet log.Println("database error 1:", err) return &ErrInternalError } - if !userNetwork.IsAdmin || !userNetwork.IsMember || userNetwork.IsBanned { + if !isAdmin { return &ErrPermissionDenied } diff --git a/internal/server/api/helpers.go b/internal/server/api/helpers.go index 909e232..52c8649 100644 --- a/internal/server/api/helpers.go +++ b/internal/server/api/helpers.go @@ -1,7 +1,11 @@ package api import ( + "context" "strings" + + "github.com/kyren223/eko/internal/data" + "github.com/kyren223/eko/pkg/snowflake" ) const hex = "0123456789abcdefABCDEF" @@ -23,3 +27,16 @@ func isValidHexColor(color string) (bool, string) { return true, "" } + +func IsNetworkAdmin(ctx context.Context, queries *data.Queries, userId, networkId snowflake.ID) (bool, error) { + userNetwork, err := queries.GetUserNetwork(ctx, data.GetUserNetworkParams{ + UserID: userId, + NetworkID: networkId, + }) + if err != nil { + return false, err + } + + isAdmin := userNetwork.IsAdmin && userNetwork.IsMember && !userNetwork.IsBanned + return isAdmin, nil +}