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:
@@ -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" });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user