Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 53553bd

Browse files
Merge pull request #2 from Priyankcoder/google-oauth
complete google oauth authentication
2 parents 7ea22c3 + 9447c27 commit 53553bd

File tree

6 files changed

+145
-16
lines changed

6 files changed

+145
-16
lines changed

‎server/controllers/googleOauth.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
const GoogleStrategy = require("passport-google-oauth2").Strategy;
2+
const User = require("../models/user")
3+
const passport = require("passport")
4+
module.exports = (passport) => {
5+
passport.serializeUser((user, done) => {
6+
done(null, user);
7+
});
8+
passport.deserializeUser((user, done) => {
9+
done(null, user);
10+
});
11+
passport.use(
12+
new GoogleStrategy(
13+
{
14+
clientID:
15+
"656012922237-2ohd9ncpu96ogdm69rbdl9b4k2bqgdru.apps.googleusercontent.com",
16+
clientSecret: "UA6uU_-u7_QtxmWPVNhLnCE_",
17+
callbackURL: "http://localhost:3000/auth/google/callback",
18+
passReqToCallback: true,
19+
},
20+
function (request, accessToken, refreshToken, profile, done) {
21+
console.log(JSON.stringify(profile));
22+
User.find({ email: profile.emails[0].value }, function (err, user) {
23+
if (err) {
24+
console.log(err);
25+
}
26+
if (!user) {
27+
User.create({
28+
name: {
29+
first: profile.name.givenName,
30+
last: profile.name.familyName,
31+
},
32+
email: profile.emails[0].value,
33+
isVerified: true,
34+
});
35+
}
36+
console.log(profile.emails[0].value);
37+
38+
return done(err, user);
39+
});
40+
}
41+
)
42+
);
43+
};

‎server/main.js

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@ const express = require("express"),
1818
usersController = require("./controllers/usersController"),
1919
// coursesController = require("./controllers/coursesController"),
2020
User = require("./models/user"),
21-
Token = require("./models/token")
22-
21+
Token = require("./models/token"),
22+
auth = require("./controllers/googleOauth"),
23+
GoogleStrategy = require("passport-google-oauth2").Strategy;
24+
// auth = require("./controllers/googleOauth")
2325
mongoose.Promise = global.Promise;
2426

2527
mongoose.connect("mongodb://localhost:27017/recipe_db", {
26-
useNewUrlParser: true, useUnifiedTopology: true
28+
useNewUrlParser: true,
29+
useUnifiedTopology: true,
2730
});
2831
mongoose.set("useCreateIndex", true);
2932

@@ -36,20 +39,14 @@ db.once("open", () => {
3639
app.set("port", process.env.PORT || 3000);
3740
app.set("view engine", "ejs");
3841

39-
router.use(express.static(path.join(__dirname,"public")));
42+
router.use(express.static(path.join(__dirname,"public")));
4043
router.use(layouts);
44+
router.use(expressValidator());
4145
router.use(
4246
express.urlencoded({
4347
extended: false,
4448
})
4549
);
46-
47-
// router.use(
48-
// methodOverride("_method", {
49-
// methods: ["POST", "GET"],
50-
// })
51-
// );
52-
5350
router.use(express.json());
5451
router.use(cookieParser("secret_passcode"));
5552
router.use(
@@ -62,19 +59,19 @@ router.use(
6259
saveUninitialized: false,
6360
})
6461
);
65-
62+
auth(passport);
63+
router.use(connectFlash());
6664
router.use(passport.initialize());
6765
router.use(passport.session());
6866
passport.use(User.createStrategy());
6967
passport.serializeUser(User.serializeUser());
7068
passport.deserializeUser(User.deserializeUser());
71-
router.use(connectFlash());
7269

7370
router.use((req, res, next) => {
71+
res.locals.currentUser = req.user;
7472
res.locals.flashMessages = req.flash();
7573
next();
7674
});
77-
router.use(expressValidator());
7875
// router.use(homeController.logRequestPaths);
7976

8077
router.get("/", homeController.sendHome);
@@ -92,6 +89,23 @@ router.get("/feed", usersController.userFeed);
9289
router.get("/confirmation/:token", usersController.confirmationPost);
9390
// app.post("/resend", usersController.resendTokenPost);
9491
router.post("/resendToken", usersController.resendToken);
92+
router.get(
93+
"/auth/google",
94+
passport.authenticate("google", {
95+
scope: [
96+
'https://www.googleapis.com/auth/userinfo.profile',
97+
'https://www.googleapis.com/auth/userinfo.email'
98+
],
99+
})
100+
);
101+
102+
router.get(
103+
"/auth/google/callback",
104+
passport.authenticate("google", {
105+
successRedirect: "/feed",
106+
failureRedirect: "/",
107+
})
108+
);
95109

96110

97111

‎server/models/user.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
const mongoose = require("mongoose"),
22
passportLocalMongoose = require("passport-local-mongoose"),
3-
bcrypt = require("bcrypt"),
43
passport = require("passport"),
54
userSchema = mongoose.Schema(
65
{

‎server/package-lock.json

Lines changed: 70 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎server/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
"nodemailer": "^6.4.10",
4040
"nodemon": "^2.0.4",
4141
"passport": "^0.4.1",
42+
"passport-google-oauth": "^2.0.0",
43+
"passport-google-oauth2": "^0.2.0",
4244
"passport-local-mongoose": "^6.0.1"
4345
}
4446
}

‎server/views/index.ejs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
<a href="/register">Register</a>
2-
<a href="/login">Login</a>
2+
<a href="/login">Login</a>
3+
<a href="/auth/google">Google Auth</a>

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /