mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-08 11:30:12 +08:00
feat: login to google success
This commit is contained in:
1 parent
7fb0a22786
commit
44b3304046
8 files changed
+62
-5
No files matched your search
@@ -26,6 +26,8 @@ services:
|
|||||||
- ./server/swagger.yaml:/app/server/swagger.yaml
|
- ./server/swagger.yaml:/app/server/swagger.yaml
|
||||||
- ./packages:/app/packages
|
- ./packages:/app/packages
|
||||||
- ./quests:/app/quests
|
- ./quests:/app/quests
|
||||||
|
env_file:
|
||||||
|
- .env
|
||||||
environment:
|
environment:
|
||||||
- MONGO_URL=mongodb://db:27017/odyssey-test
|
- MONGO_URL=mongodb://db:27017/odyssey-test
|
||||||
- DOCKER_NETWORK=linux-odyssey-players
|
- DOCKER_NETWORK=linux-odyssey-players
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
inspect() {
|
inspect() {
|
||||||
# default to app, allow overriding by $1
|
# default to app, allow overriding by $1
|
||||||
SERVICE=${1:-app}
|
SERVICE=${1:-backend}
|
||||||
echo "Running docker-compose logs for service [$SERVICE]..."
|
echo "Running docker-compose logs for service [$SERVICE]..."
|
||||||
docker compose logs $SERVICE -f --no-log-prefix
|
docker compose logs $SERVICE -f --no-log-prefix
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
"mongoose": "^7.4.0",
|
"mongoose": "^7.4.0",
|
||||||
"node-schedule": "^2.1.1",
|
"node-schedule": "^2.1.1",
|
||||||
"passport": "^0.6.0",
|
"passport": "^0.6.0",
|
||||||
|
"passport-google-oidc": "^0.1.0",
|
||||||
"passport-jwt": "^4.0.1",
|
"passport-jwt": "^4.0.1",
|
||||||
"passport-local": "^1.0.0",
|
"passport-local": "^1.0.0",
|
||||||
"socket.io": "^4.7.1",
|
"socket.io": "^4.7.1",
|
||||||
|
|||||||
@@ -26,4 +26,14 @@ router.get('/check-username', checkUsername)
|
|||||||
|
|
||||||
router.get('/check-session', checkSession)
|
router.get('/check-session', checkSession)
|
||||||
|
|
||||||
|
router.get('/google', passport.authenticate('google'))
|
||||||
|
|
||||||
|
router.get(
|
||||||
|
'/google/callback',
|
||||||
|
passport.authenticate('google', {
|
||||||
|
successRedirect: '/',
|
||||||
|
failureRedirect: '/login',
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
export default router
|
export default router
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
import GoogleStrategy from 'passport-google-oidc'
|
||||||
|
|
||||||
|
import config from '../config.js'
|
||||||
|
|
||||||
|
console.log('Google config:', config.google)
|
||||||
|
|
||||||
|
export default new GoogleStrategy(
|
||||||
|
{
|
||||||
|
clientID: config.google.clientID,
|
||||||
|
clientSecret: config.google.clientSecret,
|
||||||
|
callbackURL: '/api/v1/auth/google/callback',
|
||||||
|
scope: ['profile', 'email'],
|
||||||
|
},
|
||||||
|
function verify(issuer, profile, cb) {
|
||||||
|
console.log('Get a google login:', profile)
|
||||||
|
return cb(null, profile)
|
||||||
|
}
|
||||||
|
)
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
import passport from 'passport'
|
import passport from 'passport'
|
||||||
import PasswordStrategy from './passwordStrategy.js'
|
import passwordStrategy from './passwordStrategy.js'
|
||||||
import JwtStrategy from './jwtStrategy.js'
|
import jwtStrategy from './jwtStrategy.js'
|
||||||
|
import googleStrategy from './googleStrategy.js'
|
||||||
|
|
||||||
passport.use(PasswordStrategy)
|
passport.use(passwordStrategy)
|
||||||
passport.use(JwtStrategy)
|
passport.use(jwtStrategy)
|
||||||
|
passport.use(googleStrategy)
|
||||||
|
|
||||||
passport.serializeUser((user, done) => {
|
passport.serializeUser((user, done) => {
|
||||||
process.nextTick(() => {
|
process.nextTick(() => {
|
||||||
|
|||||||
@@ -10,4 +10,8 @@ export default {
|
|||||||
hostPwd: get('HOST_PWD', ''),
|
hostPwd: get('HOST_PWD', ''),
|
||||||
containerExpiry: get('EXPIRY', 1000 * 60 * 60),
|
containerExpiry: get('EXPIRY', 1000 * 60 * 60),
|
||||||
sessionMaxAge: get('SESSION_MAX_AGE', 1000 * 60 * 60 * 24 * 7),
|
sessionMaxAge: get('SESSION_MAX_AGE', 1000 * 60 * 60 * 24 * 7),
|
||||||
|
google: {
|
||||||
|
clientID: get('GOOGLE_CLIENT_ID', ''),
|
||||||
|
clientSecret: get('GOOGLE_CLIENT_SECRET', ''),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
@@ -4489,6 +4489,11 @@ nth-check@^2.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
boolbase "^1.0.0"
|
boolbase "^1.0.0"
|
||||||
|
|
||||||
|
oauth@0.9.x:
|
||||||
|
version "0.9.15"
|
||||||
|
resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1"
|
||||||
|
integrity sha512-a5ERWK1kh38ExDEfoO6qUHJb32rd7aYmPHuyCu3Fta/cnICvYmgd2uhuKXvPD+PXB+gCEYYEaQdIRAjCOwAKNA==
|
||||||
|
|
||||||
object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1:
|
object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||||
@@ -4659,6 +4664,13 @@ parseurl@~1.3.3:
|
|||||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||||
|
|
||||||
|
passport-google-oidc@^0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/passport-google-oidc/-/passport-google-oidc-0.1.0.tgz#585790ba03864c0238cb89912d7e2a958086b5b0"
|
||||||
|
integrity sha512-/TtFXaWvmubm5kXNoJMyzBfxhnZ0lnBPA6w6rmQMP9klmHZf0ArE8IrIEt3yAHoiDzGx4eTO7YasKQFbPsNtVA==
|
||||||
|
dependencies:
|
||||||
|
passport-openidconnect "0.1.x"
|
||||||
|
|
||||||
passport-jwt@^4.0.1:
|
passport-jwt@^4.0.1:
|
||||||
version "4.0.1"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.1.tgz#c443795eff322c38d173faa0a3c481479646ec3d"
|
resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.1.tgz#c443795eff322c38d173faa0a3c481479646ec3d"
|
||||||
@@ -4674,6 +4686,14 @@ passport-local@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
passport-strategy "1.x.x"
|
passport-strategy "1.x.x"
|
||||||
|
|
||||||
|
passport-openidconnect@0.1.x:
|
||||||
|
version "0.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/passport-openidconnect/-/passport-openidconnect-0.1.1.tgz#83921ff5f87f634079f65262dada834af1972244"
|
||||||
|
integrity sha512-r0QJiWEzwCg2MeCIXVP5G6YxVRqnEsZ2HpgKRthZ9AiQHJrgGUytXpsdcGF9BRwd3yMrEesb/uG/Yxb86rrY0g==
|
||||||
|
dependencies:
|
||||||
|
oauth "0.9.x"
|
||||||
|
passport-strategy "1.x.x"
|
||||||
|
|
||||||
passport-strategy@1.x.x, passport-strategy@^1.0.0:
|
passport-strategy@1.x.x, passport-strategy@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4"
|
resolved "https://registry.yarnpkg.com/passport-strategy/-/passport-strategy-1.0.0.tgz#b5539aa8fc225a3d1ad179476ddf236b440f52e4"
|
||||||
|
|||||||
Reference in new issue
Block a user