diff --git a/app.js b/app.js index 4c6575b..6ea1031 100644 --- a/app.js +++ b/app.js @@ -1,4 +1,11 @@ const express = require("express"); +const passport = require('passport'); +const router=require('./routes/auth_routes'); +const router1=require('./routes/payment_routes'); +const surveyRouter= require('./routes/servey'); +const keys= require('./config/keys'); +const passportSetup = require('./config/passport-setup'); +const GoogleStrategy = require('passport-google-oauth20').Strategy; const mongoose = require("mongoose"); const cors = require("cors"); @@ -11,7 +18,15 @@ app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.use(cors()); +app.use('/auth',router); +app.use('/payment',router1); + + +app.get('/',(req,res)=>{ + res.send('sucess'); +}); app.use("/api", authRoutes); +app.use('/create', surveyRouter); app.listen(process.env.PORT || 2000, () => { console.log("server running on port 2000"); diff --git a/config/keys.js b/config/keys.js new file mode 100644 index 0000000..4592e0a --- /dev/null +++ b/config/keys.js @@ -0,0 +1,6 @@ +module.exports={ + google:{ + clientID: 'CLIENT_ID', + clientSecret: 'CLIENT_SECRET' +} +}; diff --git a/config/keys_stripe.js b/config/keys_stripe.js new file mode 100644 index 0000000..82302d7 --- /dev/null +++ b/config/keys_stripe.js @@ -0,0 +1,6 @@ +module.exports={ + stripe:{ + PUBLISHABLE_KEY:'pk_test_51IyWvWSBus84JHp3FF2d9wrzVUVoNQpcLvMqL06ibfh7yVgcK7sJ7Txxl9l7sG8wsXBpsuve988GFvhrSdkXjtvs00zOhzuDiZ', +SECRET_KEY:'sk_test_51IyWvWSBus84JHp3yx38LYmP99jRqag35aakEBCFq46vMyGgdmSgdjIBJh93ncuNHyE69hdkQmQ8OBOGbaUIkDoE00ShqtMkDz' + } +}; \ No newline at end of file diff --git a/config/passport-setup.js b/config/passport-setup.js new file mode 100644 index 0000000..c9432f9 --- /dev/null +++ b/config/passport-setup.js @@ -0,0 +1,29 @@ +const passport = require('passport'); +const GoogleStrategy = require('passport-google-oauth20').Strategy; +const keys= require('./keys'); +const User=require('../models/user_oauth'); +passport.use(new GoogleStrategy({ + clientID:keys.google.clientID , + clientSecret: keys.google.clientSecret, + callbackURL: "/auth/google/callback" + },(accessToken, refreshToken, profile, done)=> { + User.findOne({googleId: profile.id}) + .then((currentuser)=>{ + if(currentuser){ + console.log('presnt'); + done(null, currentuser); + } + else{ + const user = new User({ + googleId: profile.id + }); + user.save() + .then((result)=>{ + console.log('db created'); + done(null, result); + }) + } + + }); + } +)); diff --git a/controllers/createservey.js b/controllers/createservey.js new file mode 100644 index 0000000..63c5621 --- /dev/null +++ b/controllers/createservey.js @@ -0,0 +1,36 @@ +const User_ques = require('../models/userques'); + +const create_servey = (req,res)=>{ + const user=new User(req.body); + user.save() + .then((value)=>{ +res.redirect('/'); + }) + .catch((err)=>{ + res.send(err); + }) +}); +const invite_user = (req,res)=>{ + const title=req.params.title; + Customer.findOne({title}) + .then((data)=>{ + var mailOptions={ + from:'1802177.cse.cec@cgc.edu.in', + to:`${data.list}`, + subject:'regarding survey', + text:`http://localhost:7000/survey/${data._id}` + }; + transporter.sendMail(mailOptions,(err,info)=>{ + if(err) + {console.log(err);} + else + {res.send(info.response);} + }) + + }) +}; + +module.exports ={ + create_servey, + invite_user +}; diff --git a/models/user_oauth.js b/models/user_oauth.js new file mode 100644 index 0000000..fb6ddff --- /dev/null +++ b/models/user_oauth.js @@ -0,0 +1,9 @@ +const mongoose = require('mongoose'); +const Schema = mongoose.Schema; +const db = new Schema({ + googleId: { + type: String, required: true + } +}); +const User = mongoose.model('User', db); +module.exports = User; \ No newline at end of file diff --git a/routes/auth-routes.js b/routes/auth-routes.js new file mode 100644 index 0000000..0764c45 --- /dev/null +++ b/routes/auth-routes.js @@ -0,0 +1,12 @@ +const passport = require('passport'); +const GoogleStrategy = require('passport-google-oauth20').Strategy; +const router=require('express').Router(); +router.get('/google', + passport.authenticate('google', { scope: ['profile'] })); + +router.get('/google/callback', + function(req, res) { + // Successful authentication, redirect home. + res.redirect('/'); + }); + module.exports=router; \ No newline at end of file diff --git a/routes/auth.js b/routes/auth.js index 54ba942..8803df9 100644 --- a/routes/auth.js +++ b/routes/auth.js @@ -8,4 +8,4 @@ router.post('/activate', verifyAccount) router.post('/resetlink', resetlink) router.post('/changepassword',changepassword) router.post('/login',login) -module.exports = router; \ No newline at end of file +module.exports = router; diff --git a/routes/payment_routes.js b/routes/payment_routes.js new file mode 100644 index 0000000..3b90683 --- /dev/null +++ b/routes/payment_routes.js @@ -0,0 +1,31 @@ +const keys= require('../config/keys_stripe'); +const router=require('express').Router(); +const path = require('path'); +const PUBLISHABLE_KEY=keys.stripe.PUBLISHABLE_KEY; +const SECRET_KEY=keys.stripe.SECRET_KEY; +const stripe=require('stripe')(SECRET_KEY) +router.get('/',(req,res)=>{ + res.render('payment',{key:PUBLISHABLE_KEY}); + }); + router.post('/',(req,res)=>{ + stripe.customers.create({ + email:req.body.stripeEmail, + source:req.body.stripeToken, + }) + .then((customer)=>{ + return stripe.charges.create({ + amount:50, + description:'Add credits', + currency:'inr', + customer:customer.id + }) + }) + .then((charge)=>{ + res.send('success'); + }) + .catch((err)=>{ + res.send(err); + }) + }); + + diff --git a/routes/surveyRouter.js b/routes/surveyRouter.js new file mode 100644 index 0000000..e5be8c9 --- /dev/null +++ b/routes/surveyRouter.js @@ -0,0 +1,6 @@ +const express = require('express'); +const survey = require('../controllers/createservey') +const router = express.Router(); +router.post('/createservey',create_survey); +router.get('/email/:title', invite_user); +module.exports = router;