@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
62 lines (61 loc) • 2.86 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.googleStrategy = void 0;
const lodash_1 = require("lodash");
const passport_google_oauth2_1 = __importDefault(require("passport-google-oauth2"));
const app_config_1 = require("../../app.config");
const services_1 = require("../../services");
exports.googleStrategy = new passport_google_oauth2_1.default({
clientID: app_config_1.Config.grab("GOOGLE_CLIENT_ID", "g0fTFGUDWCjmH21MnxTIcsPtD8JHDa2aA8UNgCpp2r2cf58aMlIut1gJ7abGotPi"),
clientSecret: app_config_1.Config.grab("GOOGLE_CLIENT_SECRET", "c5ENUrEiyMXfgQ7nbZS26GTfr4rOxBP1xcx34p8OD7yIBwVmqLyumYdd0niy2dKe"),
callbackURL: `${app_config_1.Config.BASE_URL}${app_config_1.Config.grab("GOOGLE_CALLBACK_PATH", "/auth/google/callback")}`,
userProfileURL: "https://www.googleapis.com/oauth2/v3/userinfo",
passReqToCallback: true,
}, function (request, accessToken, refreshToken, profile, done) {
process.nextTick(async function () {
// console.log(`googleStrategy :>>`, { profile });
// console.log(accessToken);
// console.log(`googleStrategy :>> profile.email =`, profile.email);
const userSvc = new services_1.UserService();
let user = await userSvc.findOne({ email: profile.email }, { populate: ["roles"] });
// console.log("[google login] user :>> ", user);
// console.log(`googleStrategy :>>`, { user });
if (user) {
const updateData = {};
if (user.image != profile.picture)
updateData.image = profile.picture;
if (user.name != profile.displayName)
updateData.name = profile.displayName;
if (!(0, lodash_1.isEmpty)(updateData))
user = await userSvc.updateOne({ _id: user._id }, updateData);
request.user = user;
return done(null, { ...user, accessToken, refreshToken });
}
const provider = {
name: "google",
user_id: profile.id,
access_token: accessToken,
};
// console.log("RES Create User DX Site:", createUserRes);
// Create user successfully in DX site then continue to create DX CLI
const newUser = await userSvc.create({
providers: [provider],
name: profile.displayName,
email: profile.email,
image: profile.picture,
verified: profile.verified,
isActive: true,
});
if (newUser) {
user = newUser;
request.user = user;
return done(null, { ...user, accessToken, refreshToken });
}
else {
return done(null, newUser);
}
});
});