Skip to content

Commit a3a87ca

Browse files
committed
users admin
1 parent a4c3b5b commit a3a87ca

File tree

2 files changed

+371
-231
lines changed

2 files changed

+371
-231
lines changed

convex/users.ts

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,13 @@ export const listUsers = query({
5151
page: v.optional(v.number()),
5252
}),
5353
emailFilter: v.optional(v.string()),
54+
nameFilter: v.optional(v.string()),
5455
capabilityFilter: v.optional(
55-
v.union(v.literal('admin'), v.literal('disableAds'), v.literal('builder'))
56+
v.array(
57+
v.union(v.literal('admin'), v.literal('disableAds'), v.literal('builder'))
58+
)
5659
),
60+
noCapabilitiesFilter: v.optional(v.boolean()),
5761
adsDisabledFilter: v.optional(v.boolean()),
5862
interestedInHidingAdsFilter: v.optional(v.boolean()),
5963
},
@@ -81,10 +85,29 @@ export const listUsers = query({
8185
candidates.sort((a: any, b: any) => b._creationTime - a._creationTime)
8286

8387
const filtered = candidates.filter((user: any) => {
84-
if (args.capabilityFilter) {
88+
// Name filter (in-memory search on name and displayUsername)
89+
if (args.nameFilter && args.nameFilter.length > 0) {
90+
const name = (user.name || user.displayUsername || '').toLowerCase()
91+
const searchTerm = args.nameFilter.toLowerCase()
92+
if (!name.includes(searchTerm)) {
93+
return false
94+
}
95+
}
96+
97+
// No capabilities filter
98+
if (args.noCapabilitiesFilter === true) {
99+
if (
100+
!Array.isArray(user.capabilities) ||
101+
user.capabilities.length > 0
102+
) {
103+
return false
104+
}
105+
}
106+
107+
if (args.capabilityFilter && args.capabilityFilter.length > 0) {
85108
if (
86109
!Array.isArray(user.capabilities) ||
87-
!user.capabilities.includes(args.capabilityFilter)
110+
!args.capabilityFilter.some((cap) => user.capabilities.includes(cap))
88111
) {
89112
return false
90113
}

0 commit comments

Comments
 (0)