refactor: re-use logic for admin routes

This commit is contained in:
Danny Avila 2025-08-30 11:32:04 -04:00
parent fbe0def2fa
commit a1f9f3dd39
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
7 changed files with 47 additions and 203 deletions

View file

@ -1,25 +1,40 @@
const express = require('express');
const { adminVerifyController } = require('~/server/controllers/auth/AdminVerifyController');
const { adminLoginController } = require('~/server/controllers/auth/AdminLoginController');
const { loginController } = require('~/server/controllers/auth/LoginController');
const { getAppConfig } = require('~/server/services/Config');
const { createSetBalanceConfig } = require('@librechat/api');
const middleware = require('~/server/middleware');
const { Balance } = require('~/db/models');
const setBalanceConfig = createSetBalanceConfig({
getAppConfig,
Balance,
});
const router = express.Router();
// Admin local authentication route
// Admin local authentication route - reuses main login controller
router.post(
'/login/local',
middleware.logHeaders,
middleware.loginLimiter,
middleware.checkBan,
middleware.requireAdminAuth, // Uses local auth strategy + admin role validation
adminLoginController,
middleware.requireLocalAuth, // Standard local auth
middleware.requireAdmin, // Then check if user is admin
setBalanceConfig,
loginController, // Reuse existing login controller
);
// Admin token verification endpoint
// Admin token verification endpoint - simple JWT verify + admin check
router.get(
'/verify',
middleware.requireAdminJwtAuth, // Validates JWT + admin role
adminVerifyController,
middleware.requireJwtAuth, // Standard JWT auth
middleware.requireAdmin, // Then check if user is admin
(req, res) => {
// Simple response - user is already verified by middleware
const { password: _p, totpSecret: _t, __v, ...user } = req.user;
user.id = user._id.toString();
res.status(200).json({ user });
},
);
// TODO: Future OAuth/OpenID routes will be added here