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 a1e4ee2

Browse files
Merge pull request #3 from Priyankcoder/github-oauth
Complete github-oauth
2 parents 53553bd + 8753355 commit a1e4ee2

File tree

5 files changed

+70
-3
lines changed

5 files changed

+70
-3
lines changed

‎server/controllers/githubOauth.js‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const GitHubStrategy = require("passport-github2").Strategy;
2+
const passport = require("passport");
3+
const User = require("../models/user");
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 GitHubStrategy(
13+
{
14+
clientID: "48a8ad86336f3b88ecde",
15+
clientSecret: "be43bc2e0ce0bd1e843b0dccaceafcc3f9a97e20",
16+
callbackURL: "http://localhost:3000/auth/github/callback",
17+
},
18+
function (accessToken, refreshToken, profile, done) {
19+
console.log(JSON.stringify(profile));
20+
User.find({ email: profile.emails[0].value }, function (err, user) {
21+
if (err) {
22+
console.log(err);
23+
}
24+
if (!user) {
25+
User.create({
26+
name: {
27+
first: profile.name.displayName,
28+
last: ""
29+
},
30+
email: profile.emails[0].value,
31+
isVerified: true,
32+
});
33+
}
34+
console.log(profile.emails[0].value);
35+
36+
return done(err, user);
37+
});
38+
}
39+
)
40+
)}

‎server/main.js‎

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ const express = require("express"),
1919
// coursesController = require("./controllers/coursesController"),
2020
User = require("./models/user"),
2121
Token = require("./models/token"),
22-
auth = require("./controllers/googleOauth"),
22+
googleOauth = require("./controllers/googleOauth"),
23+
githubOauth = require("./controllers/githubOauth"),
2324
GoogleStrategy = require("passport-google-oauth2").Strategy;
2425
// auth = require("./controllers/googleOauth")
2526
mongoose.Promise = global.Promise;
@@ -59,7 +60,9 @@ router.use(
5960
saveUninitialized: false,
6061
})
6162
);
62-
auth(passport);
63+
googleOauth(passport);
64+
githubOauth(passport);
65+
6366
router.use(connectFlash());
6467
router.use(passport.initialize());
6568
router.use(passport.session());
@@ -107,6 +110,20 @@ router.get(
107110
})
108111
);
109112

113+
router.get(
114+
"/auth/github",
115+
passport.authenticate("github", { scope: ["user:email"] })
116+
);
117+
118+
router.get(
119+
"/auth/github/callback",
120+
passport.authenticate("github", { failureRedirect: "/login" }),
121+
function (req, res) {
122+
// Successful authentication, redirect home.
123+
res.redirect("/feed");
124+
}
125+
);
126+
110127

111128

112129
router.use(errorController.logErrors);

‎server/package-lock.json‎

Lines changed: 8 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: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"nodemailer": "^6.4.10",
4040
"nodemon": "^2.0.4",
4141
"passport": "^0.4.1",
42+
"passport-github2": "^0.1.12",
4243
"passport-google-oauth": "^2.0.0",
4344
"passport-google-oauth2": "^0.2.0",
4445
"passport-local-mongoose": "^6.0.1"

‎server/views/index.ejs‎

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

0 commit comments

Comments
(0)

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