Selaa lähdekoodia

verify mail send grid issue unresolved --partial commit

master
kj1352 4 vuotta sitten
vanhempi
commit
8dcbdbaab4
5 muutettua tiedostoa jossa 96 lisäystä ja 16 poistoa
  1. +1
    -0
      models/user.ts
  2. +31
    -0
      package-lock.json
  3. +1
    -0
      package.json
  4. +59
    -15
      src/authentication/routes.ts
  5. +4
    -1
      src/index.ts

+ 1
- 0
models/user.ts Näytä tiedosto

@@ -8,6 +8,7 @@ export default interface IUser {
email: string,
password: string,
isVerified: boolean,
otp: number,
userType: 'ADMIN' | 'MODERATOR' | 'APPLICANT',
skillSet?: Array<skillInformation>,
progress?: Array<{


+ 31
- 0
package-lock.json Näytä tiedosto

@@ -64,6 +64,32 @@
}
}
},
"@sendgrid/client": {
"version": "7.4.7",
"resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.4.7.tgz",
"integrity": "sha512-Zh3H/nCyI2+MaAZW9KJpyk6JXfxE27W+mR636Hju/GX95SR7+uymeuLLJ3GtLvtapLTl8l6/0YoHjzlg65xtqg==",
"requires": {
"@sendgrid/helpers": "^7.4.6",
"axios": "^0.21.4"
}
},
"@sendgrid/helpers": {
"version": "7.4.6",
"resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.4.6.tgz",
"integrity": "sha512-Vvt4d60fkU/DPSwMyxXtlnbw4/B+5Y9eeYnygTxhmw8TNzUhdPphr7SaRSperWJ8P1VeQZzobvQNyMj5E7A3UA==",
"requires": {
"deepmerge": "^4.2.2"
}
},
"@sendgrid/mail": {
"version": "7.4.7",
"resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.4.7.tgz",
"integrity": "sha512-lGfXJBEx7PMQje/NsVsebF6MdP2ptHWjmuI4YANjReAQlIGq3Cqm4JLP5Fb4n5Bbr1LXLCM7R0gJo+/PT6ENKw==",
"requires": {
"@sendgrid/client": "^7.4.7",
"@sendgrid/helpers": "^7.4.6"
}
},
"@sindresorhus/is": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
@@ -682,6 +708,11 @@
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
"deepmerge": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
"integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg=="
},
"defer-to-connect": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",


+ 1
- 0
package.json Näytä tiedosto

@@ -14,6 +14,7 @@
"author": "",
"license": "ISC",
"dependencies": {
"@sendgrid/mail": "^7.4.7",
"axios": "^0.21.4",
"bcrypt": "^5.0.1",
"body-parser": "^1.19.0",


+ 59
- 15
src/authentication/routes.ts Näytä tiedosto

@@ -1,7 +1,9 @@
import express from 'express';
import express, { response } from 'express';
import { DB_NAME, getDatabaseClient } from '../db-utils';
import bcrypt from 'bcrypt';
import { generateJWT, SALT_ROUNDS } from './auth';
import sendGridMail from '@sendgrid/mail';
import { MailDataRequired } from '@sendgrid/helpers/classes/mail';

const authRoutes = express.Router();

@@ -11,11 +13,11 @@ authRoutes.get('/users/', async (request, response) => {
});

authRoutes.post('/register-applicant/', async (request, response) => {
const name = request.body.name;
const email = request.body.email;
const password = request.body.password;
const userType = 'APPLICANT';
const isVerified = false;
const name: string = request.body.name;
const email: string = request.body.email;
const password: string = request.body.password;
const userType: string = 'APPLICANT';
const isVerified: boolean = false;

const userCollection = getDatabaseClient().db(DB_NAME).collection('users');
@@ -66,10 +68,58 @@ authRoutes.post('/register-applicant/', async (request, response) => {

});


authRoutes.post('/verify-user/', async (request, response) => {
const email: string = request.body.email;

if (!email) {
response.status(400);
response.send("Missing Email ID");
}

const userCollection = getDatabaseClient().db(DB_NAME).collection('users');

let users = await userCollection.find({
email,
}).toArray();

const matchedUser = users[0];

if (!matchedUser) {
response.status(400);
response.send('No user under this EmailID');
return;
} else if (matchedUser.isVerified) {
response.status(400);
response.send('The user is already verified');
return;
}

const otp = 1000 + Math.ceil(Math.random() * 8999);

const otpMail: MailDataRequired = {
to: email,
from: 'kj@webtrigon.in',
subject: 'Webtrigon Job-portal Sign Up Verification',
text: `Please use the OTP ${otp} to verify your Email ID`,
};

sendGridMail.send(otpMail).then(data=> {
console.log(data);
response.send('Verification OTP sent');
}, (err) => {
console.log(err);
response.sendStatus(500);
response.send("SMTP system failure");
});

return;
});

authRoutes.post('/api-auth/', async (request, response) => {
const email = request.body.email;
const password = request.body.password;
const userType = request.body.userType;
const email: string = request.body.email;
const password: string = request.body.password;
const userType: string = request.body.userType;

if (!email || !password || !userType) {
response.status(400);
@@ -117,12 +167,6 @@ authRoutes.post('/api-auth/', async (request, response) => {
}

return;

// let passwordComparisonResult: boolean;

// try {
// passwordComparisonResult = await bcrypt.compare(password, user.password);
// }
});

export default authRoutes;

+ 4
- 1
src/index.ts Näytä tiedosto

@@ -3,6 +3,9 @@ import cors from 'cors';
import passport from 'passport';
import authRoutes from './authentication/routes';
import { connectToDatabaseServer } from './db-utils';
import sendGridMail from '@sendgrid/mail';

const SENDGRID_API_KEY = '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';

const app = express();
app.use(cors());
@@ -17,6 +20,6 @@ app.get('/', (request, response) => {

const server = app.listen(app.get('port'), () => {
connectToDatabaseServer();
// sendGridMail.setApiKey(SENDGRID_API_KEY);
sendGridMail.setApiKey(SENDGRID_API_KEY);
console.log('App is running on http://localhost:%d', app.get('port'));
});

Ladataan…
Peruuta
Tallenna