summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/server/api/api.go16
-rw-r--r--internal/server/api/helpers.go17
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
+}