Skip to content

Commit

Permalink
add passwport and stripe
Browse files Browse the repository at this point in the history
  • Loading branch information
waseem-mansha-gondal committed Sep 27, 2021
1 parent 53c92a8 commit cb52c77
Show file tree
Hide file tree
Showing 10 changed files with 244 additions and 0 deletions.
Empty file added index.html
Empty file.
3 changes: 3 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
const express = require('express');
const { config } = require('./src/config');
var compression = require('compression');
const passport = require('passport');

const cors = require('cors');
const path = require('path');
const routes = require('./src/routes');
Expand All @@ -13,6 +15,7 @@ app.use(
'/uploads/user/profileImages',
express.static(path.join(__dirname, 'uploads/user/profileImages'))
);
app.use(passport.initialize());
app.use('/api/v1', routes);
const port = config.port || 4000;
const server = app.listen(port, () => {
Expand Down
89 changes: 89 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
"multer": "^1.4.3",
"mysql2": "^2.3.0",
"nodemon": "^2.0.12",
"passport": "^0.4.1",
"passport-facebook": "^3.0.0",
"passport-google-oauth": "^2.0.0",
"path": "^0.12.7",
"pg": "^8.7.1",
"sequelize": "^6.6.5",
Expand Down
86 changes: 86 additions & 0 deletions src/middleware/passport.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/*eslint-disable*/
const passport = require('passport');
const FacebookStrategy = require('passport-facebook').Strategy;
var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy;
const { User } = require('../models');
passport.use(
new FacebookStrategy(
{
clientID: process.env.FACEBOOK_CLIENT_ID,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
callbackURL: 'http://localhost:8000/v1/social/facebook/callback',
profileFields: ['id', 'name', 'emails', 'picture.type(large)'],
},
(accessToken, refreshToken, profile, done) => {
console.log({ profile });
// return done(null);
User.findOne({ where: { facebookId: profile.id } })
.then((user) => {
if (user) {
return done(null, user);
}
const name = `${profile.name.givenName} ${profile.name.familyName}`;
const newUser = new Users({
facebookId: profile.id,
name: name,
provider: profile.provider,
email: profile.emails ? profile.emails[0].value : null,
firstName: profile.name.givenName,
lastName: profile.name.familyName,
profilePicture: profile.photos[0].value,
password: null,
});
newUser.save((err, user) => {
if (err) {
return done(err, false);
}

return done(null, user);
});
})
.catch((err) => {
return done(err, false);
});
}
)
);

passport.use(
new GoogleStrategy(
{
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: 'http://localhost:8000/v1/google/callback',
},
function (accessToken, refreshToken, profile, done) {
// return done(null);
Users.findOne({ where: { googleId: profile.id } })
.then((user) => {
if (user) {
return done(null, user);
} else {
const name = `${profile.name.givenName} ${profile.name.familyName}`;
const newUser = new Users({
name: name,
googleId: profile.id,
provider: profile.provider,
email: profile.emails ? profile.emails[0].value : null,
firstName: profile.name.givenName,
lastName: profile.name.familyName,
profilePicture: profile.photos[0].value,
password: null,
});
newUser.save((err, user) => {
if (err) {
return done(err, false);
}
return done(null, user);
});
}
})
.catch((err) => {
return done(err, false);
});
}
)
);
6 changes: 6 additions & 0 deletions src/migrations/20210811073853-create-user.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ module.exports = {
provider: {
type: Sequelize.STRING,
},
facebookId: {
type: Sequelize.STRING,
},
googleId: {
type: Sequelize.STRING,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
Expand Down
6 changes: 6 additions & 0 deletions src/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ module.exports = (sequelize, DataTypes) => {
provider: {
type: DataTypes.STRING,
},
facebookId: {
type: DataTypes.STRING,
},
googleId: {
type: DataTypes.STRING,
},
},
{
timestamps: true,
Expand Down
3 changes: 3 additions & 0 deletions src/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@ const blogsRoutes = require('./blog');
const userRoutes = require('./user');
const subscriptionPlan = require('./subscriptionPlans');
const purchasedSubscription = require('./userSubscriptions');
const socialRoutes = require('./social');

router.get('/', (req, res) => {
res.status(200).json({
message: 'Apis running successfully',
});
});

router.use('/user', userRoutes);
router.use('/blog', blogsRoutes);
router.use('/plan', subscriptionPlan);
router.use('/purchasedSubscription', purchasedSubscription);
router.use('/blog', blogsRoutes);
router.use('/social', socialRoutes);

module.exports = router;
40 changes: 40 additions & 0 deletions src/routes/social.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
const express = require('express');
const router = express.Router();
const passport = require('passport');

router.use(passport.initialize());
router.get(
'/facebook',
passport.authenticate('facebook', {
session: false,
scope: ['public_profile', 'email'],
})
);

router.get(
'/facebook/callback',
passport.authenticate('facebook', {
successRedirect: '/',
failureRedirect: '/',
session: false,
})
);

router.get(
'/google',
passport.authenticate('google', {
session: false,
scope: ['profile', 'email'],
accessType: 'offline',
approvalPrompt: 'force',
})
);
router.get(
'/google/callback',
passport.authenticate('google', {
failureRedirect: '/',
session: false,
})
);

module.exports = router;
8 changes: 8 additions & 0 deletions src/routes/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,12 @@ router.patch(
userController.changeUserStatus
);

// router.get(
// '/facebook/callback',
// passport.authenticate('facebook', {
// successRedirect: '/',
// failureRedirect: '/',
// session: false,
// })
// );
module.exports = router;

0 comments on commit cb52c77

Please sign in to comment.