Added frontend howst ENV, updated readme
This commit is contained in:
1 parent
30be07921a
commit
105852aed2
3 files changed
+69
-27
No files matched your search
@@ -83,6 +83,7 @@ Configure the server with the following environmental variables:
|
||||
|
||||
| ENV Variable Name | Required/Optional | Type | Description | Accepted Values |
|
||||
| -------------------- | ----------------- | --------- | ------------------------------------------------------------------------------------------- | ------------------- |
|
||||
| CLIENT_HOST | Required | `string` | Frontend Host | |
|
||||
| JWT_SECRET | Required | `string` | JWT secret | |
|
||||
| DB_TYPE | Optional | `string` | Specify DB to use | `MongoDB \| FakeDB` |
|
||||
| DB_CONNECTION_STRING | Required | `string` | Specifies URL for MongoDB Database | |
|
||||
|
||||
@@ -13,7 +13,6 @@ const { sendEmail } = require("../utils/sendEmail");
|
||||
const {
|
||||
registerTemplate,
|
||||
} = require("../utils/emailTemplates/registerTemplate");
|
||||
const RecoveryToken = require("../models/RecoveryToken");
|
||||
|
||||
/**
|
||||
* Creates and returns JWT token with an arbitrary payload
|
||||
@@ -88,7 +87,6 @@ const registerController = async (req, res, next) => {
|
||||
* @param {Express.Request} req
|
||||
* @param {Express.Response} res
|
||||
* @returns {Promise<Express.Response>}
|
||||
* @throws {Error}
|
||||
*/
|
||||
const loginController = async (req, res, next) => {
|
||||
try {
|
||||
@@ -152,11 +150,26 @@ const userEditController = async (req, res, next) => {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a recovery token
|
||||
* @async
|
||||
* @param {Express.Request} req
|
||||
* @property {Object} req.body
|
||||
* @property {string} req.body.email
|
||||
* @param {Express.Response} res
|
||||
* @returns {Promise<Express.Response>}
|
||||
*/
|
||||
const recoveryRequestController = async (req, res, next) => {
|
||||
try {
|
||||
const user = await req.db.getUserByEmail(req, res);
|
||||
if (user) {
|
||||
const recoveryToken = await req.db.requestRecoveryToken(req, res);
|
||||
await sendEmail(
|
||||
[req.body.email],
|
||||
"Uptime Monitor Password Recovery",
|
||||
`<a href='${process.env.CLIENT_HOST}/set-new-password/${recoveryToken.token}'>Click here to reset your password</a>`,
|
||||
`Recovery token: ${recoveryToken.token}`
|
||||
);
|
||||
return res.status(200).json({
|
||||
success: true,
|
||||
msg: "Created recovery token",
|
||||
@@ -171,6 +184,15 @@ const recoveryRequestController = async (req, res, next) => {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns a recovery token
|
||||
* @async
|
||||
* @param {Express.Request} req
|
||||
* @property {Object} req.body
|
||||
* @property {string} req.body.token
|
||||
* @param {Express.Response} res
|
||||
* @returns {Promise<Express.Response>}
|
||||
*/
|
||||
const validateRecoveryTokenController = async (req, res, next) => {
|
||||
try {
|
||||
const recoveryToken = await req.db.validateRecoveryToken(req, res);
|
||||
@@ -187,6 +209,16 @@ const validateRecoveryTokenController = async (req, res, next) => {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an updated user
|
||||
* @async
|
||||
* @param {Express.Request} req
|
||||
* @property {Object} req.body
|
||||
* @property {string} req.body.token
|
||||
* @property {string} req.body.password
|
||||
* @param {Express.Response} res
|
||||
* @returns {Promise<Express.Response>}
|
||||
*/
|
||||
const resetPasswordController = async (req, res, next) => {
|
||||
try {
|
||||
user = await req.db.resetPassword(req, res);
|
||||
|
||||
+34
-25
@@ -1,7 +1,7 @@
|
||||
const sgMail = require('@sendgrid/mail')
|
||||
const logger = require('./logger')
|
||||
sgMail.setApiKey(process.env.SENDGRID_API_KEY)
|
||||
const SERVICE_NAME = 'Email_Service';
|
||||
const sgMail = require("@sendgrid/mail");
|
||||
const logger = require("./logger");
|
||||
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
|
||||
const SERVICE_NAME = "Email_Service";
|
||||
/**
|
||||
* @async
|
||||
* @function
|
||||
@@ -12,25 +12,34 @@ const SERVICE_NAME = 'Email_Service';
|
||||
* @example
|
||||
* await sendEmail(['veysel@bluewavelabs.ca','alex@bluewavelabs.ca'],'Testing Email Service','<h1>BlueWaveLabs</h1>','Testing Email Service')
|
||||
*/
|
||||
const sendEmail = async (receivers,subject, contentHTML, contentText = null ) => {
|
||||
const msg = {
|
||||
to: receivers,
|
||||
from: {
|
||||
name: 'Uptime System',
|
||||
email: process.env.SYSTEM_EMAIL_ADDRESS // must be verified email by sendgrid
|
||||
},
|
||||
subject: subject,
|
||||
text: contentText || contentHTML,
|
||||
html: contentHTML,
|
||||
}
|
||||
try {
|
||||
await sgMail.send(msg);
|
||||
logger.info(`Emails sent to receivers:${receivers} with the subject:${subject}`,{service:SERVICE_NAME})
|
||||
} catch (error) {
|
||||
logger.error(`Sending Email action failed, ERROR:${error}`, { service: SERVICE_NAME });
|
||||
}
|
||||
}
|
||||
const sendEmail = async (
|
||||
receivers,
|
||||
subject,
|
||||
contentHTML,
|
||||
contentText = null
|
||||
) => {
|
||||
const msg = {
|
||||
to: receivers,
|
||||
from: {
|
||||
name: "Uptime System",
|
||||
email: process.env.SYSTEM_EMAIL_ADDRESS, // must be verified email by sendgrid
|
||||
},
|
||||
subject: subject,
|
||||
text: contentText || contentHTML,
|
||||
html: contentHTML,
|
||||
};
|
||||
try {
|
||||
await sgMail.send(msg);
|
||||
logger.info(
|
||||
`Emails sent to receivers:${receivers} with the subject:${subject}`,
|
||||
{ service: SERVICE_NAME }
|
||||
);
|
||||
} catch (error) {
|
||||
logger.error(`Sending Email action failed, ERROR:${error}`, {
|
||||
service: SERVICE_NAME,
|
||||
});
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
module.exports = {sendEmail}
|
||||
module.exports = { sendEmail };
|
||||
Reference in new issue
Block a user