Minor improvements to server code

This commit is contained in:
2024-12-01 16:13:46 +02:00
parent e00a17a2f4
commit bfc65f7f37
2 changed files with 21 additions and 12 deletions

View File

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

View File

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