@@ -232,6 +232,12 @@ | |||||
"@types/node": "*" | "@types/node": "*" | ||||
} | } | ||||
}, | }, | ||||
"@types/uuid": { | |||||
"version": "8.3.1", | |||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", | |||||
"integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==", | |||||
"dev": true | |||||
}, | |||||
"@types/webidl-conversions": { | "@types/webidl-conversions": { | ||||
"version": "6.1.1", | "version": "6.1.1", | ||||
"resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-6.1.1.tgz", | ||||
@@ -2230,6 +2236,11 @@ | |||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", | ||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" | ||||
}, | }, | ||||
"uuid": { | |||||
"version": "8.3.2", | |||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", | |||||
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" | |||||
}, | |||||
"vary": { | "vary": { | ||||
"version": "1.1.2", | "version": "1.1.2", | ||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | ||||
@@ -1,7 +1,7 @@ | |||||
{ | { | ||||
"name": "job-portal", | |||||
"name": "anamnesis", | |||||
"version": "1.0.0", | "version": "1.0.0", | ||||
"description": "job portal backend node app", | |||||
"description": "anamnesis backend ExpressTS app", | |||||
"main": "dist/index.js", | "main": "dist/index.js", | ||||
"scripts": { | "scripts": { | ||||
"start": "nodemon src/index.ts && tsc && node dist/src/index.js" | "start": "nodemon src/index.ts && tsc && node dist/src/index.js" | ||||
@@ -19,7 +19,8 @@ | |||||
"mongodb": "^4.1.2", | "mongodb": "^4.1.2", | ||||
"nodemon": "^2.0.12", | "nodemon": "^2.0.12", | ||||
"passport": "^0.5.0", | "passport": "^0.5.0", | ||||
"passport-jwt": "^4.0.0" | |||||
"passport-jwt": "^4.0.0", | |||||
"uuid": "^8.3.2" | |||||
}, | }, | ||||
"devDependencies": { | "devDependencies": { | ||||
"@types/bcrypt": "^5.0.0", | "@types/bcrypt": "^5.0.0", | ||||
@@ -29,6 +30,7 @@ | |||||
"@types/node": "^16.9.4", | "@types/node": "^16.9.4", | ||||
"@types/passport": "^1.0.7", | "@types/passport": "^1.0.7", | ||||
"@types/passport-jwt": "^3.0.6", | "@types/passport-jwt": "^3.0.6", | ||||
"@types/uuid": "^8.3.1", | |||||
"tslint": "^6.1.3", | "tslint": "^6.1.3", | ||||
"typescript": "^4.4.3" | "typescript": "^4.4.3" | ||||
} | } | ||||
@@ -3,19 +3,26 @@ import { DB_NAME, getDatabaseClient } from '../db-utils'; | |||||
import bcrypt from 'bcrypt'; | import bcrypt from 'bcrypt'; | ||||
import { generateJWT, SALT_ROUNDS } from './auth'; | import { generateJWT, SALT_ROUNDS } from './auth'; | ||||
import sendGridMail, { MailDataRequired } from '@sendgrid/mail'; | import sendGridMail, { MailDataRequired } from '@sendgrid/mail'; | ||||
import { Category } from '../models/category'; | |||||
import { Shelf } from '..//models/shelf'; | |||||
import { v4 as uuidv4 } from 'uuid'; | |||||
const authRoutes = express.Router(); | const authRoutes = express.Router(); | ||||
authRoutes.get('/users/', async (request, response) => { | |||||
response.send("List of users will be displayed"); | |||||
}); | |||||
authRoutes.post('/register-applicant/', async (request, response) => { | authRoutes.post('/register-applicant/', async (request, response) => { | ||||
const name: string = request.body.name; | const name: string = request.body.name; | ||||
const email: string = request.body.email; | const email: string = request.body.email; | ||||
const password: string = request.body.password; | const password: string = request.body.password; | ||||
const userType: string = 'APPLICANT'; | |||||
const isVerified: boolean = false; | const isVerified: boolean = false; | ||||
const categories: Array<Category> = []; | |||||
const uncategorised: Shelf = { | |||||
_id: uuidv4(), | |||||
name: 'Uncategorised', | |||||
description: '', | |||||
viewType: 'PRIVATE', | |||||
isArchived: false, | |||||
addedWords: [] | |||||
} | |||||
const userCollection = getDatabaseClient().db(DB_NAME).collection('users'); | const userCollection = getDatabaseClient().db(DB_NAME).collection('users'); | ||||
@@ -52,7 +59,8 @@ authRoutes.post('/register-applicant/', async (request, response) => { | |||||
email, | email, | ||||
password: hashedPassword, | password: hashedPassword, | ||||
isVerified, | isVerified, | ||||
userType, | |||||
categories, | |||||
uncategorised | |||||
}); | }); | ||||
}); | }); | ||||
@@ -112,7 +120,7 @@ authRoutes.post('/request-verification/', async (request, response) => { | |||||
sendGridMail.send(otpMail).then(data=> { | sendGridMail.send(otpMail).then(data=> { | ||||
response.send('Verification OTP sent'); | response.send('Verification OTP sent'); | ||||
return; | return; | ||||
}, (err) => { | |||||
}, () => { | |||||
response.sendStatus(500); | response.sendStatus(500); | ||||
response.send("SMTP system failure"); | response.send("SMTP system failure"); | ||||
return; | return; | ||||
@@ -1,4 +1,5 @@ | |||||
import { Category } from "./category"; | import { Category } from "./category"; | ||||
import { Shelf } from "./shelf"; | |||||
export type IUser = { | export type IUser = { | ||||
_id: string, | _id: string, | ||||
@@ -8,4 +9,5 @@ export type IUser = { | |||||
isVerified: boolean, | isVerified: boolean, | ||||
otp: number, | otp: number, | ||||
categories: Array<Category>, | categories: Array<Category>, | ||||
uncategorised: Shelf, | |||||
} | } |