From 9a465e62f8450f8d82d47a3bc142ddc6acaf11a4 Mon Sep 17 00:00:00 2001
From: "Lucian I. Last"
Date: Fri, 15 Mar 2024 13:43:39 +0100
Subject: [PATCH] Attempt to fix production bug
---
server/internal/controllers/users.go | 4 ++++
server/internal/models/user.go | 6 +++---
.../integration_tests/user_get_all_of_chain_e2e_test.go | 2 +-
server/pkg/noderoute/noderoute.go | 1 -
server/pkg/noderoute/noderoute_test.go | 6 ++++++
5 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/server/internal/controllers/users.go b/server/internal/controllers/users.go
index 45ece0336..3fd11a4ec 100644
--- a/server/internal/controllers/users.go
+++ b/server/internal/controllers/users.go
@@ -723,6 +723,10 @@ func omitUserData(db *gorm.DB, chain *models.Chain, users []models.User, authUse
checkNode := func(currentNode *noderoute.NodeWithInformation[userData], routePrivacy int) int {
d := currentNode.Data
+ _, err := lo.Nth(users, d.userIndex)
+ if err != nil {
+ return 0
+ }
user := &users[d.userIndex]
hasBulkyItem := d.hasBulkyItem
isChainAdmin := d.isChainAdmin
diff --git a/server/internal/models/user.go b/server/internal/models/user.go
index f662c81e2..21721398e 100644
--- a/server/internal/models/user.go
+++ b/server/internal/models/user.go
@@ -215,8 +215,8 @@ SELECT
users.i18n AS i18n,
chains.name AS chain_name
FROM user_chains AS uc
-LEFT JOIN users ON uc.user_id = users.id
-LEFT JOIN chains ON uc.chain_id = chains.id
+JOIN users ON uc.user_id = users.id
+JOIN chains ON uc.chain_id = chains.id
WHERE uc.chain_id IN ?
AND uc.is_chain_admin = TRUE
AND users.is_email_verified = TRUE
@@ -233,7 +233,7 @@ func UserGetAllUsersByChain(db *gorm.DB, chainID uint) ([]User, error) {
err := db.Raw(`
SELECT users.*
FROM users
-LEFT JOIN user_chains ON user_chains.user_id = users.id
+JOIN user_chains ON user_chains.user_id = users.id
WHERE user_chains.chain_id = ? AND users.is_email_verified = TRUE
`, chainID).Scan(&results).Error
diff --git a/server/internal/tests/integration_tests/user_get_all_of_chain_e2e_test.go b/server/internal/tests/integration_tests/user_get_all_of_chain_e2e_test.go
index 9c62a32e8..812c646fc 100644
--- a/server/internal/tests/integration_tests/user_get_all_of_chain_e2e_test.go
+++ b/server/internal/tests/integration_tests/user_get_all_of_chain_e2e_test.go
@@ -318,7 +318,7 @@ func TestUserGetAllOfChainRoutePrivacyMutiple0(t *testing.T) {
return actualUser.UID == expectedUser.UID
})
if !ok {
- assert.Truef(t, ok, "expected user %s not in %s", strings.Join(actualUserUIDs, ", "))
+ assert.Failf(t, "expected user %s not in %s", strings.Join(actualUserUIDs, ", "))
}
}
}
diff --git a/server/pkg/noderoute/noderoute.go b/server/pkg/noderoute/noderoute.go
index ebc9c3308..90367496d 100644
--- a/server/pkg/noderoute/noderoute.go
+++ b/server/pkg/noderoute/noderoute.go
@@ -28,7 +28,6 @@ LOOP_NEW_KEYS:
}
}
nk.Keys = append(nk.Keys, newKey)
-
}
}
diff --git a/server/pkg/noderoute/noderoute_test.go b/server/pkg/noderoute/noderoute_test.go
index 43fcd9e49..f98f62d25 100644
--- a/server/pkg/noderoute/noderoute_test.go
+++ b/server/pkg/noderoute/noderoute_test.go
@@ -69,4 +69,10 @@ func TestIndexCircular(t *testing.T) {
v = get(arr, -1)
assert.Equal(t, "c", v)
+
+ v = get(arr, 1)
+ assert.Equal(t, "b", v)
+
+ v = get(arr, 0)
+ assert.Equal(t, "a", v)
}