Skip to content

Commit 03e108b

Browse files
authored
Merge pull request #41 from FlipTask/hotfix-login
Hotfix login
2 parents 1b37871 + fa617b5 commit 03e108b

26 files changed

+851
-84
lines changed

.env.example

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
PORT=
2-
HOST=
3-
2+
HOST_URL=
3+
SECRET=
44
LOG_DIR=./logs
55

66
# Database
@@ -16,6 +16,7 @@ MAILER_USERNAME=
1616
MAILER_PASSWORD=
1717
MAILER_SERVICE_NAME=
1818
MAILER_SENDER_EMAIL=
19+
MAILER_HOST=
1920

2021
# Google Auth
2122
GOOGLE_CLIENT_ID=

server/bootstrap/Mailer.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@ const init = () => {
44
try {
55
const { env } = process;
66
return nodemailer.createTransport({
7-
service: env.MAILER_SERVICE_NAME,
87
pool: true,
9-
host: "smtp.sendgrid.net",
8+
host: env.MAILER_HOST,
109
port: 587,
1110
auth: {
1211
user: env.MAILER_USERNAME,

server/controllers/UserController.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,24 @@ class UserController extends CrudController {
1111
}
1212
}
1313

14+
verifyEmail = async (req, res, next) => {
15+
try {
16+
const data = await this.service.verifyEmail(req.params.token);
17+
Response.success(res, data);
18+
} catch (error) {
19+
Response.error(res, error);
20+
}
21+
}
22+
23+
resendEmailVerificationLink = async (req, res, next) => {
24+
try {
25+
const data = await this.service.resendEmailVerificationLink(req.body.email);
26+
Response.success(res, data);
27+
} catch (error) {
28+
Response.error(res, error);
29+
}
30+
}
31+
1432
token = async (req, res, next) => {
1533
try {
1634
const data = await this.service.token(req.user);
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
const CrudController = require("./base/CrudController");
22

3-
global.workspaceController = new CrudController(workspaceService);
3+
global.workspaceController = new CrudController(WorkspaceService);

server/controllers/base/CrudController.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class CrudController {
1919
if (req.user) {
2020
req.body.createdBy = req.user.id
2121
}
22-
const data = await this.service.create(req.body);
22+
const data = await this.service.create(req.body, req);
2323
Response.success(res, data, 201);
2424
} catch (error) {
2525
Response.error(res, error);

server/controllers/base/Response.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,27 @@ class Response {
44
}
55

66
static error = (res, error = null, statusCode = 500) => {
7-
console.log(error)
8-
7+
console.log("{ERROR}", error);
98
let messages = {};
10-
9+
const response = {
10+
error: true,
11+
data: null
12+
};
1113
if (error instanceof Error) {
1214
messages["error"] = error.message;
13-
} else if ("errors" in error && error["errors"].length) {
15+
} else if (error && "errors" in error && error["errors"].length) {
1416
messages = error["errors"].reduce((acc, item) => {
1517
if (item.path && item.message) {
1618
acc[item.path] = item.message;
1719
}
1820
return acc;
1921
}, {})
2022
}
21-
res.status(statusCode).json({ error: true, data: null, messages });
23+
response.messages = messages;
24+
if(error && error.next) {
25+
response.next = error.next;
26+
}
27+
res.status(statusCode).json(response);
2228
}
2329
}
2430

server/errors/FliptaskError.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,27 @@
11
class FliptaskError extends Error {
2+
constructor(error) {
3+
if(typeof error === "string") {
4+
super(error);
5+
}
6+
if(error instanceof Object) {
7+
super(error.message);
8+
if(error && error.next) {
9+
this.next = error.next;
10+
}
11+
}
12+
this.name = "FlipTaskError";
13+
}
214
static permissionDenied(message = "Permission Denied") {
315
return new FliptaskError(message);
416
}
517

618
static missingParams(message = "Missing Parameters") {
719
return new FliptaskError(message);
820
}
21+
22+
static serverError(message = "Oops something went wrong") {
23+
return new FliptaskError(message);
24+
}
925
}
1026

1127
global.FliptaskError = FliptaskError;

server/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const loadApp = async () => {
6363
return [...properties.keys()].filter(item => typeof obj[item] === 'object')
6464
};
6565

66-
66+
require("./utils");
6767
require("./database");
6868
require("./errors");
6969
require("./models");

server/mailTemplates/verify.js

Lines changed: 436 additions & 0 deletions
Large diffs are not rendered by default.

server/metaServices/MailerService.js

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
const Invitation = require("../mailTemplates/invitation");
2-
1+
const InvitationTemplate = require("../mailTemplates/invitation");
2+
const EmailVerificationTemplate = require("../mailTemplates/verify");
33
module.exports = {
4-
sendInvitation: async (from, to) => {
4+
sendInvitation: async (to) => {
55
const invitationLink = `${process.env.HOST_URL}/join?u=${from._id}&env=${to}&org=${from.meta.organization}`;
6-
const invitationTemplate = await Invitation(from, invitationLink);
6+
const invitationTemplate = await InvitationTemplate(from, invitationLink);
77
Mailer.sendMail({
88
from: process.env.MAILER_SENDER_EMAIL,
99
to,
@@ -17,5 +17,22 @@ module.exports = {
1717
Logger.info(`Message sent: ${info.response}`);
1818
}
1919
});
20+
},
21+
sendVerification: async (to, token = "akkadbakkad") => {
22+
const verificationLink = `${process.env.HOST_URL}/verify-email?hash=${token}&redirect=/login`;
23+
const verificationEmailTemplate = await EmailVerificationTemplate(verificationLink)
24+
Mailer.sendMail({
25+
from: process.env.MAILER_SENDER_EMAIL,
26+
to,
27+
subject: "Verify your email",
28+
html: verificationEmailTemplate
29+
}, (err, info) => {
30+
if (err) {
31+
console.log(err);
32+
Logger.error(err);
33+
} else {
34+
Logger.info(`Message sent: ${info.response}`);
35+
}
36+
})
2037
}
2138
};

0 commit comments

Comments
 (0)