This commit is contained in:
Mr Swift
2024-04-27 20:10:55 +03:30
parent f52f5496c5
commit ee6bd01224
30 changed files with 6503 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
const asyncHandler = require("express-async-handler");
const News = require("../models/newsModels");
const { email } = require("../config/emailConnection");
const { checkValidations } = require("../plugins/HelperFunctions")
const { body, validationResult } = require('express-validator')
const { _sr } = require("../plugins/resServer")
const { rateLimit } = require('express-rate-limit')
const limiter = rateLimit({
windowMs: 24 * 60 * 60 * 1000, // 1 minutes
limit: 1, // Limit each IP to 100 requests per `window` (here, per 15 minutes).
standardHeaders: 'draft-7', // draft-6: `RateLimit-*` headers; draft-7: combined `RateLimit` header
legacyHeaders: false, // Disable the `X-RateLimit-*` headers.
message: { msg: "Too many requests, please try again later." }
})
/**
*@desc Add new email
*@route POST /api/news/
*@access private
*/
const addEmail = [
[
body('email').notEmpty().isEmail().withMessage(_sr.fa.required.email),
],
checkValidations(validationResult),
limiter,
asyncHandler(async (req, res) => {
const { email } = req.body
const alreadyEmail = await News.findOne({ email })
if (alreadyEmail) {
res.status(400);
throw new Error(_sr.fa.duplicated.email);
}
const emailAdded = await News.create({
email
})
res.status(200).json(emailAdded)
})
]
module.exports = {
baseRoute: "/news",
items: [
{
off: false,
route: "/",
method: "post",
middleware: [],
use: addEmail
},
]
};
+60
View File
@@ -0,0 +1,60 @@
const asyncHandler = require("express-async-handler");
const Site = require("../models/siteModels");
const { _sr } = require("../plugins/resServer")
/**
*@desc Get all site
*@route GET /api/sites/
*@access Public
*/
const getSite = asyncHandler(async (req, res) => {
const profile = await Site.findOne({ profile: "main" });
res.status(200).json(profile);
});
/**
*@desc Update a site
*@route PUT /api/sites/
*@access private
*/
const updateSite = [
asyncHandler(async (req, res) => {
const site = await Site.findOneAndUpdate(
{ profile: "main" },
req.body,
{ new: true }
);
if (!site) {
res.status(404);
throw new Error(_sr.fa.not_found.item_id);
}
res.status(200).json(site);
})
]
module.exports = {
baseRoute: "/sites",
items: [
{
off: false,
route: "/",
method: "get",
middleware: ['validateAdminToken', 'hasPermission'],
permission: "SITE",
use: getSite
},
{
off: false,
route: "/id/:id",
method: "put",
middleware: ['validateAdminToken', 'hasPermission'],
permission: "SITE",
use: updateSite
},
]
};