commit
03d2031644
@ -13,4 +13,6 @@ let transporter = nodemailer.createTransport({
|
||||
pass: process.env.epass
|
||||
},
|
||||
});
|
||||
module.exports = { transporter };
|
||||
module.exports = { transporter };
|
||||
|
||||
|
||||
|
@ -39,4 +39,8 @@ const sendOTPByEmail = async (email, otp) => {
|
||||
module.exports = {
|
||||
generateOTP,
|
||||
sendOTPByEmail
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
@ -4,6 +4,10 @@ const limiter = rateLimit({
|
||||
windowMs: 15 * 60 * 1000, // 15 minutes
|
||||
max: 5, // limit each IP to 5 requests per windowMs
|
||||
message: 'Too many login attempts from this IP, please try again later.',
|
||||
standardHeaders: "draft-7", // draft-6: `RateLimit-*` headers; draft-7: combined `RateLimit` header
|
||||
legacyHeaders: false, // Disable the `X-RateLimit-*` headers.
|
||||
});
|
||||
|
||||
module.exports = limiter;
|
||||
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
const { validationResult, body } = require('express-validator');
|
||||
const {body } = require('express-validator');
|
||||
|
||||
const locationValidation = [
|
||||
body('name').trim().isLength({ min: 1 }).withMessage('Name must not be empty').escape(),
|
||||
@ -63,7 +63,7 @@ const createValidation = [
|
||||
body('name').trim().isLength({ min: 1 }).withMessage('Name must not be empty').escape(),
|
||||
body('username').trim().isLength({ min: 1 }).withMessage('Username must not be empty').escape(),
|
||||
body('email').isEmail().withMessage('Invalid email address').normalizeEmail(),
|
||||
body('password').custom((value) => {
|
||||
body('password').escape().trim().custom((value) => {
|
||||
if (!isStrongPassword(value)) { throw new Error('Password does not meet complexity requirements'); } return true;
|
||||
}),
|
||||
body('jobTitle').trim().isLength({ min: 1 }).withMessage('Job title must not be empty').escape(),
|
||||
@ -102,3 +102,5 @@ module.exports = {
|
||||
,sensorValidation,sensorupdateValidation,sensordeleteValidation,loginValidation,otpValidation
|
||||
,createValidation
|
||||
};
|
||||
|
||||
|
||||
|
@ -7,8 +7,6 @@
|
||||
<meta name="generator" content="Mobirise v5.9.13, mobirise.com">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
|
||||
<meta name="description" content="">
|
||||
|
||||
|
||||
<title>Home</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap-grid.min.css">
|
||||
@ -21,16 +19,9 @@
|
||||
<link rel="preload" href="https://fonts.googleapis.com/css?family=Inter+Tight:100,200,300,400,500,600,700,800,900,100i,200i,300i,400i,500i,600i,700i,800i,900i&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
||||
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter+Tight:100,200,300,400,500,600,700,800,900,100i,200i,300i,400i,500i,600i,700i,800i,900i&display=swap"></noscript>
|
||||
<link rel="preload" as="style" href="assets/mobirise/css/mbr-additional.css?v=b1g2Yh"><link rel="stylesheet" href="assets/mobirise/css/mbr-additional.css?v=b1g2Yh" type="text/css">
|
||||
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<section data-bs-version="5.1" class="menu menu5 cid-u2mrL2wdLO" once="menu" id="menu05-1i">
|
||||
|
||||
|
||||
<nav class="navbar navbar-dropdown navbar-fixed-top navbar-expand-lg">
|
||||
<div class="container">
|
||||
<div class="navbar-brand">
|
||||
@ -64,10 +55,6 @@
|
||||
</section>
|
||||
|
||||
<section data-bs-version="5.1" class="header5 cid-tJS6uM4N87" id="header05-1">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="topbg"></div>
|
||||
<div class="align-center container">
|
||||
<div class="row justify-content-center">
|
||||
@ -133,11 +120,6 @@
|
||||
</section>
|
||||
|
||||
<section data-bs-version="5.1" class="header1 cid-tJS9vXDdRK" id="header01-7">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-12 col-md-12 col-lg-7 image-wrapper">
|
||||
@ -156,16 +138,12 @@
|
||||
</section>
|
||||
|
||||
<section data-bs-version="5.1" class="contacts2 map1 cid-tLdYHD757A mbr-parallax-background" id="contacts02-9">
|
||||
|
||||
|
||||
|
||||
<div class="mbr-overlay" style="opacity: 0.5; background-color: rgb(0, 0, 0);"></div>
|
||||
<div class="container-fluid">
|
||||
<div class="mbr-section-head mb-5">
|
||||
<h3 class="mbr-section-title mbr-fonts-style align-center mb-0 display-2">
|
||||
<strong>Contacts</strong>
|
||||
</h3>
|
||||
|
||||
</div>
|
||||
<div class="row justify-content-center mt-4">
|
||||
<div class="card col-12 col-md-5">
|
||||
@ -185,27 +163,14 @@
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section data-bs-version="5.1" class="footer1 programm5 cid-tJS9NNcTLZ" once="footers" id="footer03-8">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="row-links mb-4">
|
||||
<ul class="header-menu">
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="header-menu-item mbr-fonts-style display-5"><a href="index.html#header01-7" class="text-danger">About</a></li><li class="header-menu-item mbr-fonts-style display-5"><a href="index.html#features04-w" class="text-danger text-primary">Services</a></li><li class="header-menu-item mbr-fonts-style display-5"><a href="index.html#contacts02-9" class="text-danger">Contacts</a></li></ul>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
|
||||
<div class="col-12">
|
||||
</div>
|
||||
<div class="col-12 mt-5">
|
||||
<p class="mbr-fonts-style copyright display-7">
|
||||
@ -215,8 +180,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</section><section class="display-7" style="padding: 0;align-items: center;justify-content: center;flex-wrap: wrap; align-content: center;display: flex;position: relative;height: 4rem;"><a href="https://mobiri.se/3136804" style="flex: 1 1;height: 4rem;position: absolute;width: 100%;z-index: 1;"><img alt="" style="height: 4rem;" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="></a><p style="margin: 0;text-align: center;" class="display-7">‌</p><a style="z-index:1" href="https://mobirise.com/builder/ai-website-builder.html">AI Website Builder</a></section><script src="assets/bootstrap/js/bootstrap.bundle.min.js"></script> <script src="assets/parallax/jarallax.js"></script> <script src="assets/smoothscroll/smooth-scroll.js"></script> <script src="assets/ytplayer/index.js"></script> <script src="assets/dropdown/js/navbar-dropdown.js"></script> <script src="assets/theme/js/script.js"></script>
|
||||
|
||||
|
||||
<input name="animation" type="hidden">
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user