Skip to content

Commit a159a3e

Browse files
committed
email fix
1 parent 3b9fa1d commit a159a3e

File tree

2 files changed

+64
-32
lines changed

2 files changed

+64
-32
lines changed

API_DOC.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
TIP :session maintain : every request to backend must be an authentic request, when we start the server a new token session will be generated, and everytime an update is pushed, all changes must be cleared for new version of the app.
2+
3+
Dictionary:
4+
'*' : denotes requested headers
5+
'-' : denotes requested params
6+
'~' : denotes responses
7+
[] : denotes method type
8+
9+
1. android/signin [POST]
10+
- email
11+
~ error
12+
~ x-access-token
13+
14+
2. android/signin/verify [POST]
15+
* x-access-token
16+
- pin-entered
17+
- email
18+
~ error

api/index.js

Lines changed: 46 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ const MAIL_EVENT_FOOTER = '\nYou can check the event details on Web Portal.\nFor
3232
var MongoClient = require('mongodb').MongoClient;
3333
var url = 'mongodb://dock:[email protected]:27017/dock';
3434

35-
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
35+
MongoClient.connect(url, {
36+
useNewUrlParser: true
37+
}, function(err, db) {
3638
if (err) throw err;
3739
let dbo = db.db('dock');
3840
router.use(fileUpload());
@@ -83,17 +85,27 @@ MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
8385
if (!req.body) return res.sendStatus(400);
8486
const email = req.body.email;
8587
var pin = Math.floor(Math.random() * 1000000);
86-
sendVerificationMail(email, pin);
87-
const JWTToken = jwt.sign({
88-
email: email,
89-
pin: pin
90-
},
91-
APP_SECRET_KEY, {
92-
expiresIn: '2h'
88+
sendVerificationMail(email, pin, function(error) {
89+
if (error) res.status(400).json({
90+
error: true,
91+
mssg: error
92+
});
93+
94+
const JWTToken = jwt.sign({
95+
email: email,
96+
pin: pin
97+
},
98+
APP_SECRET_KEY, {
99+
expiresIn: '2h'
100+
});
101+
return res.status(200).json({
102+
error: false,
103+
token: JWTToken
93104
});
94-
return res.status(200).json({
95-
error: false,
96-
token: JWTToken
105+
});
106+
res.status(400).json({
107+
error: true,
108+
mssg: 'Something went wrong :('
97109
});
98110
});
99111

@@ -112,8 +124,15 @@ MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
112124
});
113125
console.log(decoded);
114126
if (decoded.pin == req.body.pin && decoded.email == req.body.email) {
127+
const JWTToken = jwt.sign({
128+
email: email
129+
},
130+
APP_SECRET_KEY, {
131+
expiresIn: '7d'
132+
});
115133
return res.status(200).json({
116-
error: false
134+
error: false,
135+
token: JWTToken
117136
});
118137
} else {
119138
return res.status(400).json({
@@ -137,7 +156,7 @@ MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
137156
auth: false,
138157
message: 'Failed to authenticate token.'
139158
});
140-
email = decoded.email;
159+
email = decoded.email;
141160
});
142161

143162
if (!req.body) return res.status(400).send({
@@ -185,7 +204,7 @@ MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
185204
});
186205
});
187206

188-
function sendMail(reciever, subject, text) {
207+
function sendMail(reciever, subject, text, callback) {
189208
var mailOptions = {
190209
from: '"Campus Dock" <[email protected]>',
191210
to: reciever,
@@ -195,12 +214,22 @@ MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
195214
smtpTransport.sendMail(mailOptions, function(error, response) {
196215
if (error) {
197216
console.log(error);
217+
return callback(error);
198218
} else {
199219
console.log('Message sent to: ' + req.session.email);
220+
return callback(null);
200221
}
201222
});
202223
}
203224

225+
function sendVerificationMail(reciever, pin, callback) {
226+
var text = 'This is your verification PIN : ' + pin + '.\nThis PIN is valid for 2 hours only.\nNever share your PIN with anyone. If you didn\'t requested PIN, please ignore!';
227+
var subject = 'Verify your E-mail | CampusDock';
228+
sendMail(reciever, subject, text, function(error){
229+
return callback(error);
230+
});
231+
}
232+
204233
function sendToScope(scopeArray, payload, callback) {
205234
for (i = 0; i < scopeArray.length; i++) {
206235
admin.messaging().sendToTopic(scopeArray[i], payload)
@@ -215,22 +244,6 @@ MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
215244
return callback(null);
216245
}
217246

218-
function sendVerificationMail(email, pin) {
219-
var mailOptions = {
220-
from: '"Campus Dock" <[email protected]>',
221-
to: email,
222-
text: 'This is your verification PIN : ' + pin + '.\nThis PIN is valid for 2 hours only.\nNever share your PIN with anyone. If you didn\'t requested PIN, please ignore!',
223-
subject: 'Verify your E-mail | CampusDock'
224-
};
225-
smtpTransport.sendMail(mailOptions, function(error, response) {
226-
if (error) {
227-
console.log(error);
228-
} else {
229-
console.log('Message sent to: ' + req.session.email);
230-
}
231-
});
232-
}
233-
234247
function saveEventToDB(email, event_name, event_description, event_start, event_end, event_tags, event_audience, media, callback) {
235248
var creator = email;
236249
var event_id = creator + '-' + UID(6);
@@ -248,8 +261,9 @@ MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
248261
};
249262
dbo.collection(TABLE_EVENTS).insertOne(params, function(err, data) {
250263
if (err) callback(err);
251-
sendMail(creator, MAIL_EVENT_TITLE, MAIL_EVENT_TEXT + MAIL_EVENT_DEATILS_TITLE + event_name + MAIL_EVENT_FOOTER);
252-
callback(null);
264+
sendMail(creator, MAIL_EVENT_TITLE, MAIL_EVENT_TEXT + MAIL_EVENT_DEATILS_TITLE + event_name + MAIL_EVENT_FOOTER , function(error){
265+
callback(error);
266+
});
253267
});
254268
}
255269

0 commit comments

Comments
 (0)