Adding course model and functionalities
This commit is contained in:
parent
03b88ccc8d
commit
f940193d17
13
app.js
13
app.js
|
@ -3,6 +3,10 @@ const mongoose = require('mongoose') ;
|
|||
const bodyparser = require('body-parser') ;
|
||||
const authRoute = require('./routes/auth') ;
|
||||
const profileRoute = require('./routes/profile') ;
|
||||
const paymentRoute = require('./routes/payment') ;
|
||||
const courseRoute = require('./routes/course') ;
|
||||
const adminRoute = require('./routes/admin') ;
|
||||
const cors = require('cors') ;
|
||||
//const passport = require('passport');
|
||||
//const cookieSession = require('cookie-session') ;
|
||||
//require('./passport-setup') ;
|
||||
|
@ -11,6 +15,7 @@ const app = express() ;
|
|||
|
||||
const MONGO_URI = `mongodb+srv://Cantilever:Cantilever@cluster0.dqxva.mongodb.net/myFirstDatabase?retryWrites=true&w=majority`
|
||||
|
||||
app.use(cors()) ;
|
||||
app.use(bodyparser.json()) ;
|
||||
|
||||
// app.use(cookieSession({
|
||||
|
@ -72,10 +77,16 @@ app.use(authRoute) ;
|
|||
|
||||
app.use(profileRoute) ;
|
||||
|
||||
app.use(paymentRoute) ;
|
||||
|
||||
app.use(courseRoute) ;
|
||||
|
||||
app.use(adminRoute) ;
|
||||
|
||||
mongoose.connect(MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true }).
|
||||
then(result => {
|
||||
console.log('connected');
|
||||
app.listen(3000) ;
|
||||
app.listen(5000) ;
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err);
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
const Course = require('../models/Course') ;
|
||||
|
||||
module.exports.addSchedule = async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
//we will take startTime , endTime and link as input
|
||||
const startTime = req.body.startTime ;
|
||||
const endTime = req.body.endTime ;
|
||||
const link = req.body.link ;
|
||||
|
||||
//we will alse take CourseId as input
|
||||
const parCourseId = req.body.parCourseId ;
|
||||
const course = await Course.findById(parCourseId) ;
|
||||
const meetings = [...course.meetings] ;
|
||||
let newMeet = {
|
||||
startTime : startTime ,
|
||||
endTime : endTime ,
|
||||
link : link
|
||||
} ;
|
||||
//pushing the new schedule
|
||||
meetings.push(newMeet) ;
|
||||
course.meetings = meetings ;
|
||||
await course.save() ;
|
||||
res.json({
|
||||
success : "added schedule"
|
||||
})
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
res.json({
|
||||
err : "Can not add"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.deleteSchedule = async (req , res , next) => {
|
||||
try{
|
||||
//we need index as input
|
||||
const index = req.body.index ;
|
||||
|
||||
//we need courseId
|
||||
const parCourseId = req.body.parCourseId ;
|
||||
const course = await Course.findById(parCourseId) ;
|
||||
const meetings = [...course.meetings] ;
|
||||
if(index < (meetings.length))
|
||||
{
|
||||
meetings.splice(index , 1) ;
|
||||
course.meetings = meetings ;
|
||||
await course.save() ;
|
||||
res.json({
|
||||
success : "deleted schedule"
|
||||
})
|
||||
}
|
||||
else
|
||||
{
|
||||
res.json({
|
||||
err : "Index out of bound"
|
||||
})
|
||||
}
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
res.json({
|
||||
err : "Can not delete"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.editSchedule = async (req , res , next) => {
|
||||
try{
|
||||
//we will take startTime , endTime and link as input
|
||||
const startTime = req.body.startTime ;
|
||||
const endTime = req.body.endTime ;
|
||||
const link = req.body.link ;
|
||||
|
||||
//we need to take the index as input
|
||||
const index = req.body.index ;
|
||||
|
||||
//we will take courseId as input
|
||||
const parCourseId = req.body.parCourseId ;
|
||||
const course = await Course.findById(parCourseId) ;
|
||||
const meetings = [...course.meetings] ;
|
||||
if(index < (meetings.length))
|
||||
{
|
||||
let newMeet = {
|
||||
startTime : startTime ,
|
||||
endTime : endTime ,
|
||||
link : link
|
||||
} ;
|
||||
meetings[index] = newMeet ;
|
||||
course.meetings = meetings ;
|
||||
await course.save() ;
|
||||
res.json({
|
||||
success : "edited schedule"
|
||||
})
|
||||
}
|
||||
else
|
||||
{
|
||||
res.json({
|
||||
err : "Index out of bound"
|
||||
})
|
||||
}
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
res.json({
|
||||
err : "Can not edit"
|
||||
})
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@ module.exports.Protected = async (req,res,next)=>{
|
|||
}
|
||||
module.exports.postSignup = async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
{ //we need firstName , lastName , email , password as input
|
||||
let firstName = req.body.firstName || " " ;
|
||||
let lastName = req.body.lastName || " " ;
|
||||
let email = req.body.email ;
|
||||
|
@ -36,7 +36,9 @@ module.exports.postSignup = async (req , res , next) => {
|
|||
let student = new Student({
|
||||
user:user._id
|
||||
})
|
||||
await student.save() ;
|
||||
student = await student.save() ;
|
||||
user.student = student._id ;
|
||||
await user.save() ;
|
||||
res.json({
|
||||
message:"Successfully signed Up" ,
|
||||
type:"success"
|
||||
|
@ -53,6 +55,7 @@ module.exports.postSignup = async (req , res , next) => {
|
|||
module.exports.postSignin = async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
//we need email and password as input
|
||||
let email = req.body.email ;
|
||||
let password = req.body.password ;
|
||||
let user = await User.findOne({email : email}) ;
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
const Course = require('../models/Course') ;
|
||||
const CourseType = require('../models/CourseType') ;
|
||||
|
||||
module.exports.postAddCourse = async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
//we will take input as name , mentor and totalLectures
|
||||
let name = req.body.name ;
|
||||
let mentor = req.body.mentor ;
|
||||
let totalLectures = req.body.totalLectures ;
|
||||
if(name)
|
||||
{
|
||||
name = name.trim() ;
|
||||
}
|
||||
if(mentor)
|
||||
{
|
||||
mentor = mentor.trim() ;
|
||||
}
|
||||
if(totalLectures)
|
||||
{
|
||||
totalLectures = Number(totalLectures) ;
|
||||
}
|
||||
|
||||
let course = new Course({
|
||||
name : name ,
|
||||
mentor : mentor ,
|
||||
totalLectures : totalLectures
|
||||
}) ; ;
|
||||
|
||||
course = await course.save() ;
|
||||
|
||||
//tier 1
|
||||
let tier1 = new CourseType({
|
||||
name : course.name ,
|
||||
amount : 7000 ,
|
||||
tier : 1 ,
|
||||
course : course._id
|
||||
})
|
||||
tier1 = await tier1.save() ;
|
||||
|
||||
//tier 2
|
||||
let tier2 = new CourseType({
|
||||
name : course.name ,
|
||||
amount : 5000 ,
|
||||
tier : 2 ,
|
||||
course : course._id
|
||||
})
|
||||
tier2 =await tier2.save() ;
|
||||
|
||||
//tier 3
|
||||
let tier3 = new CourseType({
|
||||
name : course.name ,
|
||||
amount : 3000 ,
|
||||
tier : 3 ,
|
||||
course : course._id
|
||||
})
|
||||
tier3 = await tier3.save() ;
|
||||
|
||||
course.types.tier1 = tier1 ;
|
||||
course.types.tier2 = tier2 ;
|
||||
course.types.tier3 = tier3 ;
|
||||
|
||||
await course.save() ;
|
||||
|
||||
res.json({
|
||||
success: "Successfully created"
|
||||
})
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
console.log(err);
|
||||
res.json({
|
||||
error : err
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.getAllCourses = async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
//we will be getting all the courses here
|
||||
const courses = await Course.find().populate("types.tier1").populate("types.tier2").populate("types.tier3") ;
|
||||
res.json({
|
||||
courses : courses
|
||||
})
|
||||
}
|
||||
catch
|
||||
{
|
||||
res.json({
|
||||
error : "error"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.meetSchedule = async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
//we need courseTypeId as input
|
||||
const courseId = req.body.courseId ;
|
||||
|
||||
const course = await CourseType.findById(courseId).populate("course") ;
|
||||
res.json({
|
||||
courses : course
|
||||
})
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
res.json({
|
||||
error : "error"
|
||||
})
|
||||
}
|
||||
}
|
|
@ -0,0 +1,153 @@
|
|||
const razorpay = require('razorpay') ;
|
||||
const Order = require('../models/Order') ;
|
||||
const User = require('../models/User') ;
|
||||
const CourseType = require('../models/CourseType') ;
|
||||
const Course = require('../models/Course') ;
|
||||
const Student = require('../models/Student');
|
||||
|
||||
//test credentials of razorpay
|
||||
const instance = new razorpay({
|
||||
key_id : 'rzp_test_8YMWcm8JJ4fhzp' ,
|
||||
key_secret : 'jP1P03cD4ShN8Fp7Q3T6BXQo'
|
||||
}) ;
|
||||
|
||||
module.exports.postVerify =async (req , res , next) => {
|
||||
|
||||
try
|
||||
{
|
||||
//Secret we put in razorpay
|
||||
const SECRET = 'CantileverLabs' ;
|
||||
|
||||
const crypto = require('crypto')
|
||||
|
||||
const shasum = crypto.createHmac('sha256', SECRET) ;
|
||||
shasum.update(JSON.stringify(req.body))
|
||||
const digest = shasum.digest('hex')
|
||||
|
||||
//if secret is matched
|
||||
if (digest === req.headers['x-razorpay-signature']) {
|
||||
console.log('request is legit')
|
||||
// process it
|
||||
const orderId = req.body.payload.payment.entity.order_id ;
|
||||
//fetching the order from the orderId
|
||||
let order = await Order.findOne({orderId:orderId}) ;
|
||||
let courseId = order.course ;
|
||||
//adding the payment detail
|
||||
order.paymentDetail = req.body.payload.payment ;
|
||||
//making the paymentSuccess as true
|
||||
order.paymentSuccess = true ;
|
||||
|
||||
//now getting the details of user which has bought this course
|
||||
const userId = order.user ;
|
||||
let user = await User.findById(userId) ;
|
||||
let student =await Student.findById(user.student) ;
|
||||
|
||||
let ind = -1 ;
|
||||
//checking whether user has already bought this course or not
|
||||
if(student.courses.basicInfo)
|
||||
{
|
||||
ind = student.courses.basicInfo.findIndex(course => String(course) == String(courseId)) ;
|
||||
}
|
||||
console.log(ind);
|
||||
if(ind == -1)
|
||||
{
|
||||
//adding a new object in the courses array of student
|
||||
let newObj = {
|
||||
basicInfo : courseId ,
|
||||
details : {
|
||||
completed : []
|
||||
}
|
||||
}
|
||||
let courses = [...student.courses] ;
|
||||
courses.push(newObj) ;
|
||||
student.courses = courses ;
|
||||
await student.save() ;
|
||||
await order.save() ;
|
||||
res.status(200).json({
|
||||
status : 'ok'
|
||||
}) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
//user has already bought this course
|
||||
res.status(500).json({
|
||||
error:'already paid'
|
||||
})
|
||||
}
|
||||
|
||||
//now updating that course in user also
|
||||
//console.log(req.body.payload.payment) ;
|
||||
//require('fs').writeFileSync('payment1.json', JSON.stringify(req.body, null, 4))
|
||||
|
||||
}
|
||||
else {
|
||||
// pass it
|
||||
console.log("HELLO IN ERROR");
|
||||
res.status(500).json({
|
||||
error:'error'
|
||||
})
|
||||
}
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
console.log(err);
|
||||
}
|
||||
|
||||
|
||||
} ;
|
||||
|
||||
module.exports.postRazorpay = async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
//this route will be called after clicking the payment
|
||||
|
||||
//here this is the id of courseType
|
||||
const courseId = req.body.courseId || "607142ec6de6df1a31bf509b" ;
|
||||
const userId = req.user._id ;
|
||||
let user = await User.findById(userId) ;
|
||||
let course =await CourseType.findById(courseId) ;
|
||||
|
||||
//we are creating a new order associated to it
|
||||
//we are setting the paymentSuccess to be false
|
||||
let order = new Order({
|
||||
course : courseId ,
|
||||
user : userId ,
|
||||
paymentSuccess : false
|
||||
}) ;
|
||||
|
||||
order = await order.save() ;
|
||||
|
||||
const payment_capture = 1 ;
|
||||
|
||||
//setting the amount according to the course
|
||||
const amount = Number(course.amount) ;
|
||||
|
||||
const options = {amount : (amount*100).toString()
|
||||
, currency : "INR"
|
||||
, receipt : order._id.toString()
|
||||
, payment_capture
|
||||
} ;
|
||||
|
||||
//this is a razorpay feature
|
||||
const response = await instance.orders.create(options) ;
|
||||
|
||||
order.orderId = response.id ;
|
||||
await order.save() ;
|
||||
res.json({
|
||||
id:response.id ,
|
||||
currency : response.currency ,
|
||||
amount : response.amount ,
|
||||
name:(user.firstName + " " + user.lastName) ,
|
||||
email:user.email ,
|
||||
receipt : response.receipt
|
||||
});
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
console.log(err);
|
||||
res.json({
|
||||
error : "error"
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
const Student = require('../models/Student') ;
|
||||
const User = require('../models/User') ;
|
||||
|
||||
//function for trimming strings
|
||||
function trim_arr(arr)
|
||||
{
|
||||
let newArr = arr.map(a => {
|
||||
|
@ -12,9 +13,10 @@ function trim_arr(arr)
|
|||
module.exports.getProfile =async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
//we can get the profile of the user including the courses which user has bought
|
||||
const userId = req.user._id ;
|
||||
let user = await User.findById(userId) ;
|
||||
let student = await Student.findOne({user : userId}) ;
|
||||
let student = await Student.findOne({user : userId}).populate("courses.basicInfo") ;
|
||||
res.json({
|
||||
user:user ,
|
||||
student:student
|
||||
|
@ -31,9 +33,8 @@ module.exports.getProfile =async (req , res , next) => {
|
|||
module.exports.postProfile = async (req , res , next) => {
|
||||
try
|
||||
{
|
||||
//Here we are updating the profile of the user
|
||||
const userId = req.user._id ;
|
||||
|
||||
let courses = req.body.courses ;
|
||||
let interests = req.body.interests ;
|
||||
let projects = req.body.projects ;
|
||||
let yearofgrad = req.body.yearofgrad ;
|
||||
|
@ -42,10 +43,6 @@ module.exports.postProfile = async (req , res , next) => {
|
|||
let skills = req.body.skills ;
|
||||
|
||||
let student = await Student.findOne({user : userId}) ;
|
||||
if(courses)
|
||||
{
|
||||
student.courses = trim_arr(courses.split(",")) ;
|
||||
}
|
||||
if(interests)
|
||||
{
|
||||
student.interests = trim_arr(interests.split(",")) ;
|
||||
|
@ -86,6 +83,7 @@ module.exports.postProfile = async (req , res , next) => {
|
|||
}
|
||||
|
||||
module.exports.deleteUser = async (req , res , next) => {
|
||||
//here we are deleting the user
|
||||
const userId = req.user._id ;
|
||||
try
|
||||
{
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
const mongoose = require('mongoose');
|
||||
|
||||
const Schema = mongoose.Schema ;
|
||||
|
||||
const courseSchema = new Schema({
|
||||
name : {
|
||||
type : String ,
|
||||
required : true
|
||||
} ,
|
||||
mentor : {
|
||||
type : String ,
|
||||
required : true
|
||||
} ,
|
||||
totalLectures : {
|
||||
type : Number ,
|
||||
required : true
|
||||
} ,
|
||||
meetings : [
|
||||
{
|
||||
startTime : {
|
||||
type : String ,
|
||||
required : true
|
||||
} ,
|
||||
endTime : {
|
||||
type : String ,
|
||||
required : true
|
||||
} ,
|
||||
link : {
|
||||
type : String ,
|
||||
required : true
|
||||
}
|
||||
}
|
||||
] ,
|
||||
types : {
|
||||
tier1: {
|
||||
type : mongoose.Types.ObjectId ,
|
||||
ref : 'CourseType'
|
||||
} ,
|
||||
tier2 : {
|
||||
type : mongoose.Types.ObjectId ,
|
||||
ref : 'CourseType'
|
||||
} ,
|
||||
tier3: {
|
||||
type : mongoose.Types.ObjectId ,
|
||||
ref : 'CourseType'
|
||||
}
|
||||
}
|
||||
}) ;
|
||||
|
||||
module.exports = mongoose.model('Course' , courseSchema) ;
|
|
@ -0,0 +1,25 @@
|
|||
const mongoose = require('mongoose') ;
|
||||
|
||||
const Schema = mongoose.Schema ;
|
||||
|
||||
const courseTypeSchema = new Schema({
|
||||
name : {
|
||||
type : String ,
|
||||
required : true
|
||||
} ,
|
||||
tier : {
|
||||
type:Number ,
|
||||
required : true
|
||||
} ,
|
||||
amount : {
|
||||
type : Number ,
|
||||
required : true
|
||||
} ,
|
||||
course : {
|
||||
type : mongoose.Types.ObjectId ,
|
||||
ref : 'Course' ,
|
||||
required : true
|
||||
}
|
||||
})
|
||||
|
||||
module.exports = mongoose.model('CourseType' , courseTypeSchema) ;
|
|
@ -0,0 +1,28 @@
|
|||
const mongoose = require('mongoose') ;
|
||||
|
||||
const Schema = mongoose.Schema ;
|
||||
|
||||
const orderSchema = new Schema({
|
||||
user : {
|
||||
type:mongoose.Types.ObjectId ,
|
||||
ref:'User' ,
|
||||
required:true
|
||||
} ,
|
||||
course : {
|
||||
type: mongoose.Types.ObjectId ,
|
||||
ref : 'CourseType' ,
|
||||
required : true
|
||||
},
|
||||
paymentSuccess : {
|
||||
type:Boolean ,
|
||||
required : true
|
||||
} ,
|
||||
paymentDetail : {
|
||||
type:Object
|
||||
} ,
|
||||
orderId : {
|
||||
type : String
|
||||
}
|
||||
}) ;
|
||||
|
||||
module.exports = mongoose.model('Order' , orderSchema) ;
|
|
@ -14,7 +14,14 @@ const studentSchema = new Schema({
|
|||
} ,
|
||||
courses:[
|
||||
{
|
||||
type:String
|
||||
basicInfo : {
|
||||
type:mongoose.Types.ObjectId ,
|
||||
ref : 'CourseType' ,
|
||||
required : true
|
||||
} ,
|
||||
details : {
|
||||
type : Object
|
||||
}
|
||||
}
|
||||
],
|
||||
interests:[
|
||||
|
|
|
@ -20,7 +20,12 @@ const userSchema = new Schema({
|
|||
} ,
|
||||
googleId : {
|
||||
type : String
|
||||
} ,
|
||||
student : {
|
||||
type : mongoose.Types.ObjectId ,
|
||||
ref: 'Student'
|
||||
}
|
||||
//need to add isAdmin
|
||||
}) ;
|
||||
|
||||
module.exports = mongoose.model("User" , userSchema) ;
|
|
@ -56,6 +56,17 @@
|
|||
"negotiator": "0.6.2"
|
||||
}
|
||||
},
|
||||
"ajv": {
|
||||
"version": "6.12.6",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
||||
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"json-schema-traverse": "^0.4.1",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"ansi-align": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz",
|
||||
|
@ -108,6 +119,39 @@
|
|||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
|
||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||
},
|
||||
"asap": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
|
||||
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
||||
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
||||
"requires": {
|
||||
"safer-buffer": "~2.1.0"
|
||||
}
|
||||
},
|
||||
"assert-plus": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||
},
|
||||
"aws-sign2": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
|
||||
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
|
||||
},
|
||||
"aws4": {
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
|
||||
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
|
@ -119,6 +163,14 @@
|
|||
"resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
|
||||
"integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A=="
|
||||
},
|
||||
"bcrypt-pbkdf": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
|
||||
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
||||
"requires": {
|
||||
"tweetnacl": "^0.14.3"
|
||||
}
|
||||
},
|
||||
"bcryptjs": {
|
||||
"version": "2.4.3",
|
||||
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz",
|
||||
|
@ -249,6 +301,11 @@
|
|||
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
|
||||
"dev": true
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
|
||||
|
@ -328,6 +385,14 @@
|
|||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
||||
"dev": true
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||
"requires": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
|
@ -402,12 +467,34 @@
|
|||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"cors": {
|
||||
"version": "2.8.5",
|
||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
||||
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
||||
"requires": {
|
||||
"object-assign": "^4",
|
||||
"vary": "^1"
|
||||
}
|
||||
},
|
||||
"crypto": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz",
|
||||
"integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig=="
|
||||
},
|
||||
"crypto-random-string": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
|
||||
"integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
|
||||
"dev": true
|
||||
},
|
||||
"dashdash": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
|
@ -437,6 +524,11 @@
|
|||
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
|
||||
"dev": true
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||
},
|
||||
"denque": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz",
|
||||
|
@ -467,6 +559,15 @@
|
|||
"integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
|
||||
"dev": true
|
||||
},
|
||||
"ecc-jsbn": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
|
||||
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
||||
"requires": {
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"ecdsa-sig-formatter": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
|
||||
|
@ -553,6 +654,26 @@
|
|||
"vary": "~1.1.2"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
|
||||
},
|
||||
"extsprintf": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
|
||||
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
|
@ -576,6 +697,21 @@
|
|||
"unpipe": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"forever-agent": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
|
||||
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.6",
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
||||
|
@ -602,6 +738,14 @@
|
|||
"pump": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"getpass": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"glob-parent": {
|
||||
"version": "5.1.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
|
||||
|
@ -645,6 +789,20 @@
|
|||
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==",
|
||||
"dev": true
|
||||
},
|
||||
"har-schema": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
|
||||
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
|
||||
},
|
||||
"har-validator": {
|
||||
"version": "5.1.5",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
|
||||
"integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
|
||||
"requires": {
|
||||
"ajv": "^6.12.3",
|
||||
"har-schema": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
|
||||
|
@ -675,6 +833,16 @@
|
|||
"toidentifier": "1.0.0"
|
||||
}
|
||||
},
|
||||
"http-signature": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
||||
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0",
|
||||
"jsprim": "^1.2.2",
|
||||
"sshpk": "^1.7.0"
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
|
||||
|
@ -793,8 +961,7 @@
|
|||
"is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
|
||||
"dev": true
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||
},
|
||||
"is-yarn-global": {
|
||||
"version": "0.3.0",
|
||||
|
@ -807,12 +974,37 @@
|
|||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
|
||||
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
|
||||
},
|
||||
"isstream": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
|
||||
},
|
||||
"json-buffer": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
|
||||
"integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
|
||||
"dev": true
|
||||
},
|
||||
"json-schema": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
||||
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
||||
},
|
||||
"jsonwebtoken": {
|
||||
"version": "8.5.1",
|
||||
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz",
|
||||
|
@ -837,6 +1029,17 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"jsprim": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"extsprintf": "1.3.0",
|
||||
"json-schema": "0.2.3",
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"jwa": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
|
||||
|
@ -887,6 +1090,11 @@
|
|||
"package-json": "^6.3.0"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"lodash.includes": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz",
|
||||
|
@ -1086,6 +1294,11 @@
|
|||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "2.1.11",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
|
||||
"integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
|
||||
},
|
||||
"negotiator": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||
|
@ -1152,6 +1365,16 @@
|
|||
"resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz",
|
||||
"integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE="
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
|
||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
|
||||
},
|
||||
"on-finished": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
|
||||
|
@ -1276,6 +1499,11 @@
|
|||
"resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
|
||||
"integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10="
|
||||
},
|
||||
"performance-now": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||
},
|
||||
"picomatch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
|
||||
|
@ -1293,6 +1521,14 @@
|
|||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
|
||||
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
|
||||
},
|
||||
"promise": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
|
||||
"integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
|
||||
"requires": {
|
||||
"asap": "~2.0.6"
|
||||
}
|
||||
},
|
||||
"proxy-addr": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
|
||||
|
@ -1302,6 +1538,11 @@
|
|||
"ipaddr.js": "1.9.1"
|
||||
}
|
||||
},
|
||||
"psl": {
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
|
||||
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
|
||||
},
|
||||
"pstree.remy": {
|
||||
"version": "1.1.8",
|
||||
"resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
|
||||
|
@ -1318,6 +1559,11 @@
|
|||
"once": "^1.3.1"
|
||||
}
|
||||
},
|
||||
"punycode": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
|
||||
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
|
||||
},
|
||||
"pupa": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
|
||||
|
@ -1348,6 +1594,16 @@
|
|||
"unpipe": "1.0.0"
|
||||
}
|
||||
},
|
||||
"razorpay": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/razorpay/-/razorpay-2.0.6.tgz",
|
||||
"integrity": "sha512-tWdV+WfRuuQSGQcGtUXmsPx5WO3QPrEKegy+AbGWT1STD5kxIYW0KHjdspu7YnTTP3q7ekwHDUYYjG8zSR5IiQ==",
|
||||
"requires": {
|
||||
"promise": "^8.0.1",
|
||||
"request": "^2.88.0",
|
||||
"request-promise": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"rc": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
|
||||
|
@ -1406,6 +1662,59 @@
|
|||
"rc": "^1.2.8"
|
||||
}
|
||||
},
|
||||
"request": {
|
||||
"version": "2.88.2",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
|
||||
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
|
||||
"requires": {
|
||||
"aws-sign2": "~0.7.0",
|
||||
"aws4": "^1.8.0",
|
||||
"caseless": "~0.12.0",
|
||||
"combined-stream": "~1.0.6",
|
||||
"extend": "~3.0.2",
|
||||
"forever-agent": "~0.6.1",
|
||||
"form-data": "~2.3.2",
|
||||
"har-validator": "~5.1.3",
|
||||
"http-signature": "~1.2.0",
|
||||
"is-typedarray": "~1.0.0",
|
||||
"isstream": "~0.1.2",
|
||||
"json-stringify-safe": "~5.0.1",
|
||||
"mime-types": "~2.1.19",
|
||||
"oauth-sign": "~0.9.0",
|
||||
"performance-now": "^2.1.0",
|
||||
"qs": "~6.5.2",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"tough-cookie": "~2.5.0",
|
||||
"tunnel-agent": "^0.6.0",
|
||||
"uuid": "^3.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"qs": {
|
||||
"version": "6.5.2",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
|
||||
"integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"request-promise": {
|
||||
"version": "4.2.6",
|
||||
"resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz",
|
||||
"integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==",
|
||||
"requires": {
|
||||
"bluebird": "^3.5.0",
|
||||
"request-promise-core": "1.1.4",
|
||||
"stealthy-require": "^1.1.1",
|
||||
"tough-cookie": "^2.3.3"
|
||||
}
|
||||
},
|
||||
"request-promise-core": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
|
||||
"integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
|
||||
"requires": {
|
||||
"lodash": "^4.17.19"
|
||||
}
|
||||
},
|
||||
"require_optional": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz",
|
||||
|
@ -1513,6 +1822,14 @@
|
|||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
|
||||
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
|
||||
},
|
||||
"shortid": {
|
||||
"version": "2.2.16",
|
||||
"resolved": "https://registry.npmjs.org/shortid/-/shortid-2.2.16.tgz",
|
||||
"integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
|
||||
"requires": {
|
||||
"nanoid": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"sift": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/sift/-/sift-7.0.1.tgz",
|
||||
|
@ -1538,11 +1855,32 @@
|
|||
"memory-pager": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"sshpk": {
|
||||
"version": "1.16.1",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
|
||||
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
|
||||
"requires": {
|
||||
"asn1": "~0.2.3",
|
||||
"assert-plus": "^1.0.0",
|
||||
"bcrypt-pbkdf": "^1.0.0",
|
||||
"dashdash": "^1.12.0",
|
||||
"ecc-jsbn": "~0.1.1",
|
||||
"getpass": "^0.1.1",
|
||||
"jsbn": "~0.1.0",
|
||||
"safer-buffer": "^2.0.2",
|
||||
"tweetnacl": "~0.14.0"
|
||||
}
|
||||
},
|
||||
"statuses": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
|
||||
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
|
||||
},
|
||||
"stealthy-require": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
|
||||
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks="
|
||||
},
|
||||
"string-width": {
|
||||
"version": "4.2.2",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz",
|
||||
|
@ -1650,11 +1988,33 @@
|
|||
"nopt": "~1.0.10"
|
||||
}
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
|
||||
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
|
||||
"requires": {
|
||||
"psl": "^1.1.28",
|
||||
"punycode": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"tsscmp": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz",
|
||||
"integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA=="
|
||||
},
|
||||
"tunnel-agent": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
||||
"requires": {
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
|
||||
},
|
||||
"type-fest": {
|
||||
"version": "0.8.1",
|
||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
|
||||
|
@ -1728,6 +2088,14 @@
|
|||
"xdg-basedir": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"uri-js": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
|
||||
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
|
||||
"requires": {
|
||||
"punycode": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"url-parse-lax": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
|
||||
|
@ -1747,11 +2115,26 @@
|
|||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
|
||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
||||
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
|
||||
},
|
||||
"vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
|
||||
},
|
||||
"verror": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
||||
"requires": {
|
||||
"assert-plus": "^1.0.0",
|
||||
"core-util-is": "1.0.2",
|
||||
"extsprintf": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"widest-line": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
|
||||
|
|
|
@ -12,11 +12,15 @@
|
|||
"bcryptjs": "^2.4.3",
|
||||
"body-parser": "^1.19.0",
|
||||
"cookie-session": "^1.4.0",
|
||||
"cors": "^2.8.5",
|
||||
"crypto": "^1.0.1",
|
||||
"express": "^4.17.1",
|
||||
"jsonwebtoken": "^8.5.1",
|
||||
"mongoose": "^5.12.2",
|
||||
"passport": "^0.4.1",
|
||||
"passport-google-oauth": "^2.0.0"
|
||||
"passport-google-oauth": "^2.0.0",
|
||||
"razorpay": "^2.0.6",
|
||||
"shortid": "^2.2.16"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^2.0.7"
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"entity": "event",
|
||||
"account_id": "acc_Gw1LiFWVLVRYkG",
|
||||
"event": "payment.captured",
|
||||
"contains": [
|
||||
"payment"
|
||||
],
|
||||
"payload": {
|
||||
"payment": {
|
||||
"entity": {
|
||||
"id": "pay_GwUwfzZD7hnooU",
|
||||
"entity": "payment",
|
||||
"amount": 50000,
|
||||
"currency": "INR",
|
||||
"status": "captured",
|
||||
"order_id": "order_GwUvksWDBcSdw9",
|
||||
"invoice_id": null,
|
||||
"international": false,
|
||||
"method": "card",
|
||||
"amount_refunded": 0,
|
||||
"refund_status": null,
|
||||
"captured": true,
|
||||
"description": "Test Transaction",
|
||||
"card_id": "card_Gw33mMf3bsqqb0",
|
||||
"card": {
|
||||
"id": "card_Gw33mMf3bsqqb0",
|
||||
"entity": "card",
|
||||
"name": "Gaurav Kumar",
|
||||
"last4": "1111",
|
||||
"network": "Visa",
|
||||
"type": "debit",
|
||||
"issuer": null,
|
||||
"international": false,
|
||||
"emi": false,
|
||||
"sub_type": "consumer"
|
||||
},
|
||||
"bank": null,
|
||||
"wallet": null,
|
||||
"vpa": null,
|
||||
"email": "test@test.com",
|
||||
"contact": "+919999999999",
|
||||
"notes": {
|
||||
"address": "Razorpay Corporate Office"
|
||||
},
|
||||
"fee": 1000,
|
||||
"tax": 0,
|
||||
"error_code": null,
|
||||
"error_description": null,
|
||||
"error_source": null,
|
||||
"error_step": null,
|
||||
"error_reason": null,
|
||||
"acquirer_data": {
|
||||
"auth_code": "892379"
|
||||
},
|
||||
"created_at": 1617900492
|
||||
}
|
||||
}
|
||||
},
|
||||
"created_at": 1617900495
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
const express = require('express') ;
|
||||
const adminController = require('../controllers/admin')
|
||||
|
||||
const router = express.Router() ;
|
||||
|
||||
router.post('/addSchedule' , adminController.addSchedule) ;
|
||||
|
||||
router.post('/editSchedule' , adminController.editSchedule) ;
|
||||
|
||||
router.post('/deleteSchedule' , adminController.deleteSchedule) ;
|
||||
|
||||
module.exports = router ;
|
|
@ -0,0 +1,12 @@
|
|||
const express = require('express') ;
|
||||
const courseController = require('../controllers/course') ;
|
||||
|
||||
const router = express.Router() ;
|
||||
|
||||
router.post('/addCourse' , courseController.postAddCourse) ;
|
||||
|
||||
router.get('/getAllCourses' , courseController.getAllCourses) ;
|
||||
|
||||
router.post('/meetSchedule' , courseController.meetSchedule) ;
|
||||
|
||||
module.exports = router ;
|
|
@ -0,0 +1,13 @@
|
|||
const express = require('express') ;
|
||||
|
||||
const authMiddleware = require('../middleware/requirelogin') ;
|
||||
|
||||
const paymentController = require('../controllers/payment') ;
|
||||
|
||||
const router = express.Router() ;
|
||||
|
||||
router.post('/verification' , paymentController.postVerify) ;
|
||||
|
||||
router.post('/razorpay' ,authMiddleware , paymentController.postRazorpay) ;
|
||||
|
||||
module.exports = router ;
|
Loading…
Reference in New Issue