feat(auth): add user directory endpoint for listing active users
Build and Push Auth Portal Docker Image / build-and-push (push) Successful in 2m7s
Build and Push Auth Portal Docker Image / create-release (push) Skipped

- Introduced a new endpoint '/api/v1/directory/users' to retrieve a filtered list of active users.
- Implemented query handling to allow searching by email, name, or ID.
- Limited the response to the first 50 matching users for performance optimization.
This commit is contained in:
Denozordec
2026-07-19 12:49:42 +07:00
parent 09ed7f4dc4
commit 143db3d72e
+27
View File
@@ -13,6 +13,7 @@ import {
getAppSwitcherConfig,
getUserByEmail,
getUserById,
listUsers,
revokeRefreshSession,
} from '@authportal/db'
import { requireAuth } from '../plugins/auth-guards.js'
@@ -125,6 +126,32 @@ export async function authRoutes(app: FastifyInstance): Promise<void> {
},
)
app.get(
'/api/v1/directory/users',
{ onRequest: requireAuth },
async (request) => {
const q = String(
(request.query as { q?: string }).q ?? '',
)
.trim()
.toLowerCase()
const all = listUsers(app.db).filter((u) => !u.disabled)
const filtered = q
? all.filter(
(u) =>
u.email.toLowerCase().includes(q) ||
u.name.toLowerCase().includes(q) ||
u.id.toLowerCase().includes(q),
)
: all
return filtered.slice(0, 50).map((u) => ({
id: u.id,
email: u.email,
name: u.name,
}))
},
)
app.get(
'/api/v1/catalog',
{ onRequest: requireAuth },