Add admin capabilities for managing users on the platform

Introduce new API endpoints and backend logic for administrative user management, including fetching, viewing, and updating user roles, while ensuring sensitive data like password hashes are excluded from responses. Implement Replit user ID formatting for internal consistency and extend storage interfaces to support user retrieval and counting.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 170e18f0-0f13-4eca-8643-546bba1dd8cc
Replit-Commit-Checkpoint-Type: full_checkpoint
This commit is contained in:
sebastjanartic
2025-09-02 12:19:53 +00:00
parent d283a0d4a5
commit 68bb99739b
3 changed files with 214 additions and 11 deletions
+7 -2
View File
@@ -54,8 +54,11 @@ function updateUserSession(
}
async function upsertUser(claims: any) {
// Convert Replit numeric ID to string format compatible with our schema
const userId = `replit_${claims["sub"]}`;
await storage.upsertUser({
id: claims["sub"],
id: userId,
email: claims["email"],
firstName: claims["first_name"],
lastName: claims["last_name"],
@@ -160,7 +163,9 @@ export const isAdmin: RequestHandler = async (req, res, next) => {
}
try {
const dbUser = await storage.getUser(user.claims.sub);
// Convert Replit numeric ID to our internal format
const userId = `replit_${user.claims.sub}`;
const dbUser = await storage.getUser(userId);
if (!dbUser || !dbUser.isAdmin) {
return res.status(403).json({ message: "Admin access required" });
}