mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
Merge pull request #1013 from Infisical:fix-github-sso-email
Update method to obtain email for GitHub SSO
This commit is contained in:
@@ -21,8 +21,9 @@ import {
|
|||||||
} from "../config";
|
} from "../config";
|
||||||
import { getSSOConfigHelper } from "../ee/helpers/organizations";
|
import { getSSOConfigHelper } from "../ee/helpers/organizations";
|
||||||
import { InternalServerError, OrganizationNotFoundError } from "./errors";
|
import { InternalServerError, OrganizationNotFoundError } from "./errors";
|
||||||
import { ACCEPTED, INVITED, MEMBER } from "../variables";
|
import { ACCEPTED, INTEGRATION_GITHUB_API_URL, INVITED, MEMBER } from "../variables";
|
||||||
import { getSiteURL } from "../config";
|
import { getSiteURL } from "../config";
|
||||||
|
import { standardRequest } from "../config/request";
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||||
const GoogleStrategy = require("passport-google-oauth20").Strategy;
|
const GoogleStrategy = require("passport-google-oauth20").Strategy;
|
||||||
@@ -143,10 +144,28 @@ const initializePassport = async () => {
|
|||||||
passReqToCallback: true,
|
passReqToCallback: true,
|
||||||
clientID: clientIdGitHubLogin,
|
clientID: clientIdGitHubLogin,
|
||||||
clientSecret: clientSecretGitHubLogin,
|
clientSecret: clientSecretGitHubLogin,
|
||||||
callbackURL: "/api/v1/sso/github"
|
callbackURL: "/api/v1/sso/github",
|
||||||
|
scope: ["user:email"]
|
||||||
},
|
},
|
||||||
async (req : express.Request, accessToken : any, refreshToken : any, profile : any, done : any) => {
|
async (req : express.Request, accessToken : any, refreshToken : any, profile : any, done : any) => {
|
||||||
const email = profile.emails[0].value;
|
interface GitHubEmail {
|
||||||
|
email: string;
|
||||||
|
primary: boolean;
|
||||||
|
verified: boolean;
|
||||||
|
visibility: null | string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { data }: { data: GitHubEmail[] } = await standardRequest.get(
|
||||||
|
`${INTEGRATION_GITHUB_API_URL}/user/emails`,
|
||||||
|
{
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${accessToken}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
const primaryEmail = data.filter((gitHubEmail: GitHubEmail) => gitHubEmail.primary)[0];
|
||||||
|
const email = primaryEmail.email;
|
||||||
|
|
||||||
let user = await User.findOne({
|
let user = await User.findOne({
|
||||||
email
|
email
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ export const INTEGRATION_BITBUCKET_TOKEN_URL = "https://bitbucket.org/site/oauth
|
|||||||
export const INTEGRATION_GCP_API_URL = "https://cloudresourcemanager.googleapis.com";
|
export const INTEGRATION_GCP_API_URL = "https://cloudresourcemanager.googleapis.com";
|
||||||
export const INTEGRATION_HEROKU_API_URL = "https://api.heroku.com";
|
export const INTEGRATION_HEROKU_API_URL = "https://api.heroku.com";
|
||||||
export const INTEGRATION_GITLAB_API_URL = "https://gitlab.com/api";
|
export const INTEGRATION_GITLAB_API_URL = "https://gitlab.com/api";
|
||||||
|
export const INTEGRATION_GITHUB_API_URL = "https://api.github.com";
|
||||||
export const INTEGRATION_VERCEL_API_URL = "https://api.vercel.com";
|
export const INTEGRATION_VERCEL_API_URL = "https://api.vercel.com";
|
||||||
export const INTEGRATION_NETLIFY_API_URL = "https://api.netlify.com";
|
export const INTEGRATION_NETLIFY_API_URL = "https://api.netlify.com";
|
||||||
export const INTEGRATION_RENDER_API_URL = "https://api.render.com";
|
export const INTEGRATION_RENDER_API_URL = "https://api.render.com";
|
||||||
|
|||||||
Reference in New Issue
Block a user