|
|
|
@ -7,7 +7,7 @@ import * as data from '../data';
|
|
|
|
|
import { log } from '../log';
|
|
|
|
|
import { nanoid } from '../generators';
|
|
|
|
|
import { UserConfig } from '../UserConfig';
|
|
|
|
|
import { rateLimiterMiddleware } from '../ratelimit';
|
|
|
|
|
import { rateLimiterMiddleware, setRateLimiter } from '../ratelimit';
|
|
|
|
|
import { DBManager } from '../sql/database';
|
|
|
|
|
|
|
|
|
|
const router = Router({ caseSensitive: true });
|
|
|
|
@ -30,6 +30,11 @@ router.post('/setup', BodyParserJson(), async (req, res) => {
|
|
|
|
|
if (UserConfig.config.sql?.mySql != null)
|
|
|
|
|
await Promise.all([DBManager.configure(), data.setDataModeToSql()]);
|
|
|
|
|
|
|
|
|
|
// set rate limits
|
|
|
|
|
if (UserConfig.config.rateLimit?.api) setRateLimiter('api', UserConfig.config.rateLimit.api);
|
|
|
|
|
if (UserConfig.config.rateLimit?.login) setRateLimiter('login', UserConfig.config.rateLimit.login);
|
|
|
|
|
if (UserConfig.config.rateLimit?.upload) setRateLimiter('upload', UserConfig.config.rateLimit.upload);
|
|
|
|
|
|
|
|
|
|
log.success('Setup', 'completed');
|
|
|
|
|
|
|
|
|
|
return res.json({ success: true });
|
|
|
|
@ -39,7 +44,7 @@ router.post('/setup', BodyParserJson(), async (req, res) => {
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// User login
|
|
|
|
|
router.post('/login', rateLimiterMiddleware('login', UserConfig.config.rateLimit?.login), BodyParserJson(), (req, res) => {
|
|
|
|
|
router.post('/login', rateLimiterMiddleware('login', UserConfig.config?.rateLimit?.login), BodyParserJson(), (req, res) => {
|
|
|
|
|
const { username, password } = req.body;
|
|
|
|
|
|
|
|
|
|
data.getAll('users')
|
|
|
|
@ -69,7 +74,7 @@ router.post('/login', rateLimiterMiddleware('login', UserConfig.config.rateLimit
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// todo: authenticate API endpoints
|
|
|
|
|
router.post('/user', rateLimiterMiddleware('api', UserConfig.config.rateLimit?.api), BodyParserJson(), async (req, res) => {
|
|
|
|
|
router.post('/user', rateLimiterMiddleware('api', UserConfig.config?.rateLimit?.api), BodyParserJson(), async (req, res) => {
|
|
|
|
|
if (!UserConfig.ready)
|
|
|
|
|
return res.status(409).json({ success: false, message: 'User config not ready' });
|
|
|
|
|
|
|
|
|
|