const express = require('express'); const { createSetBalanceConfig } = require('@librechat/api'); const { resetPasswordRequestController, resetPasswordController, registrationController, graphTokenController, refreshController, } = require('~/server/controllers/AuthController'); const { regenerateBackupCodes, disable2FA, confirm2FA, enable2FA, verify2FA, } = require('~/server/controllers/TwoFactorController'); const { verify2FAWithTempToken } = require('~/server/controllers/auth/TwoFactorAuthController'); const { logoutController } = require('~/server/controllers/auth/LogoutController'); const { loginController } = require('~/server/controllers/auth/LoginController'); const { getBalanceConfig } = require('~/server/services/Config'); const middleware = require('~/server/middleware'); const { Balance } = require('~/db/models'); const setBalanceConfig = createSetBalanceConfig({ getBalanceConfig, Balance, }); const router = express.Router(); const ldapAuth = !!process.env.LDAP_URL && !!process.env.LDAP_USER_SEARCH_BASE; //Local router.post('/logout', middleware.requireJwtAuth, logoutController); router.post( '/login', middleware.logHeaders, middleware.loginLimiter, middleware.checkBan, ldapAuth ? middleware.requireLdapAuth : middleware.requireLocalAuth, setBalanceConfig, loginController, ); router.post('/refresh', refreshController); router.post( '/register', middleware.registerLimiter, middleware.checkBan, middleware.checkInviteUser, middleware.validateRegistration, registrationController, ); router.post( '/requestPasswordReset', middleware.resetPasswordLimiter, middleware.checkBan, middleware.validatePasswordReset, resetPasswordRequestController, ); router.post( '/resetPassword', middleware.checkBan, middleware.validatePasswordReset, resetPasswordController, ); router.get('/2fa/enable', middleware.requireJwtAuth, enable2FA); router.post('/2fa/verify', middleware.requireJwtAuth, verify2FA); router.post('/2fa/verify-temp', middleware.checkBan, verify2FAWithTempToken); router.post('/2fa/confirm', middleware.requireJwtAuth, confirm2FA); router.post('/2fa/disable', middleware.requireJwtAuth, disable2FA); router.post('/2fa/backup/regenerate', middleware.requireJwtAuth, regenerateBackupCodes); router.get('/graph-token', middleware.requireJwtAuth, graphTokenController); module.exports = router;